campingmontagut/test/company_host.sql
jordi fita mas 0d2812acc5 Use HTTP Host to establish the request’s company
We made the decision that this application will also serve the public
pages to guests and customers, to avoid the overhead of having to
synchronize all data between this application and a bespoke WordPress
plugin.

That means that i no longer can have a /company/slug in the URL to know
which company the request is for, not only because it looks ugly but
because guest users do not have a “main company”—or any company
whatsoever.

Since the public-facing web is going to be served through a valid DNS
domain, and all companies are going to have a different domain, i
realized this is enough: i only had to add a relation of company and
their hosts.  The same company can have many hosts for staging servers
or to separate the administration and public parts, for instance.

With change, the company is already known from the first handler, and
can pass it down to all the others, not only the handlers under
/company/slug/whatever.  And i no longer need the companyURL function,
as there is no more explicit company in the URL.

Even though template technically does not need the template, as it only
contains the ID —the rest of the data is in a relation inaccessible to
guests for now—, but i left the parameter just in case later on i need
the decimal digits or currency symbol for whatever reason.
2023-08-03 20:21:21 +02:00

38 lines
1.1 KiB
PL/PgSQL

-- Test company_host
set client_min_messages to warning;
create extension if not exists pgtap;
reset client_min_messages;
begin;
select plan(17);
set search_path to camper, public;
select has_table('company_host');
select has_pk('company_host' );
select table_privs_are('company_host', 'guest', array ['SELECT']);
select table_privs_are('company_host', 'employee', array ['SELECT']);
select table_privs_are('company_host', 'admin', array ['SELECT']);
select table_privs_are('company_host', 'authenticator', array []::text[]);
select has_column('company_host', 'host');
select col_is_pk('company_host', 'host');
select col_type_is('company_host', 'host', 'text');
select col_not_null('company_host', 'host');
select col_hasnt_default('company_host', 'host');
select has_column('company_host', 'company_id');
select col_is_fk('company_host', 'company_id');
select fk_ok('company_host', 'company_id', 'company', 'company_id');
select col_type_is('company_host', 'company_id', 'integer');
select col_not_null('company_host', 'company_id');
select col_hasnt_default('company_host', 'company_id');
select *
from finish();
rollback;