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.
38 lines
1.1 KiB
PL/PgSQL
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;
|
|
|