The tables in the operational part of the Boundary database (meaning non-warehouse tables) suffix primary key columns and foreign key columns with `_id`. Many of these columns appear in the warehouse dimension and fact tables as normal attributes, not primary keys or foreign keys. To disambiguate ID columns from operational tables, the primary key column for dimension tables will be renamed from `id` to `key` and the foreign key columns in the fact tables will be renamed to change the suffix from `_id` to `_key`.
42 lines
1.9 KiB
PL/PgSQL
42 lines
1.9 KiB
PL/PgSQL
-- upsert tests that the wh_upsert_user function will do an update when
|
|
-- an existing source wh_user_dimension exists.
|
|
begin;
|
|
select plan(4);
|
|
|
|
select wtt_load('widgets', 'iam', 'kms', 'auth', 'hosts', 'targets');
|
|
|
|
-- ensure no existing dimensions
|
|
select is(count(*), 0::bigint) from wh_user_dimension where user_id = 'u_____walter';
|
|
|
|
insert into wh_user_dimension
|
|
(
|
|
key,
|
|
user_id, user_name, user_description,
|
|
auth_account_id, auth_account_type, auth_account_name, auth_account_description,
|
|
auth_account_external_id, auth_account_full_name, auth_account_email,
|
|
auth_method_id, auth_method_type, auth_method_name, auth_method_description,
|
|
auth_method_external_id,
|
|
user_organization_id, user_organization_name, user_organization_description,
|
|
current_row_indicator, row_effective_time, row_expiration_time
|
|
)
|
|
values
|
|
(
|
|
'wud_____1',
|
|
'u_____walter', 'Walter', 'This is Walter',
|
|
'apa___walter', 'password auth account', 'walter', 'Account for Walter',
|
|
'None', 'None', 'None',
|
|
'apm___widget', 'password auth method', 'Widget Auth Password', 'None',
|
|
'None',
|
|
'o_____widget', 'Widget Inc', 'None',
|
|
'Current', '2021-07-21T12:01'::timestamptz, 'infinity'::timestamptz
|
|
);
|
|
|
|
select lives_ok($$select wh_upsert_user('u_____walter', 'tok___walter')$$);
|
|
|
|
-- upsert should insert a user_dimension
|
|
select is(count(*), 2::bigint) from wh_user_dimension where user_id = 'u_____walter';
|
|
select is(count(*), 1::bigint) from wh_user_dimension where user_id = 'u_____walter' and current_row_indicator = 'Current';
|
|
|
|
select * from finish();
|
|
rollback;
|