feat: add shared notification, communication, and export services for bookings, courses, and events; introduce btree_gist extension and new booking atomic function
This commit is contained in:
121
apps/web/supabase/tests/database/member-audit.test.sql
Normal file
121
apps/web/supabase/tests/database/member-audit.test.sql
Normal file
@@ -0,0 +1,121 @@
|
||||
begin;
|
||||
|
||||
create extension "basejump-supabase_test_helpers" version '0.0.6';
|
||||
|
||||
select no_plan();
|
||||
|
||||
-- =====================================================
|
||||
-- Audit Trigger & Version Tests
|
||||
-- Verifies triggers fire correctly on member changes
|
||||
-- =====================================================
|
||||
|
||||
-- Setup
|
||||
select tests.create_supabase_user('audit_owner', 'audit_owner@test.com');
|
||||
select makerkit.set_identifier('audit_owner', 'audit_owner@test.com');
|
||||
|
||||
set local role service_role;
|
||||
select public.create_team_account('Audit Verein', tests.get_supabase_uid('audit_owner'));
|
||||
|
||||
set local role postgres;
|
||||
insert into public.role_permissions (role, permission)
|
||||
values ('owner', 'members.write')
|
||||
on conflict do nothing;
|
||||
|
||||
-- Get account ID
|
||||
select makerkit.authenticate_as('audit_owner');
|
||||
|
||||
-- Insert a member (triggers audit INSERT)
|
||||
set local role service_role;
|
||||
insert into public.members (
|
||||
account_id, first_name, last_name, status, entry_date, member_number,
|
||||
created_by, updated_by
|
||||
) values (
|
||||
(select id from public.accounts where slug = 'audit-verein' limit 1),
|
||||
'Audit', 'Test', 'active', current_date, '0001',
|
||||
tests.get_supabase_uid('audit_owner'),
|
||||
tests.get_supabase_uid('audit_owner')
|
||||
);
|
||||
|
||||
-- -------------------------------------------------------
|
||||
-- Test: INSERT creates audit entry
|
||||
-- -------------------------------------------------------
|
||||
select isnt_empty(
|
||||
$$ select * from public.member_audit_log
|
||||
where member_id = (select id from public.members where first_name = 'Audit' limit 1)
|
||||
and action = 'created' $$,
|
||||
'Member INSERT creates audit entry with action=created'
|
||||
);
|
||||
|
||||
-- -------------------------------------------------------
|
||||
-- Test: Version starts at 1
|
||||
-- -------------------------------------------------------
|
||||
select is(
|
||||
(select version from public.members where first_name = 'Audit' limit 1),
|
||||
1,
|
||||
'Initial version is 1'
|
||||
);
|
||||
|
||||
-- -------------------------------------------------------
|
||||
-- Test: UPDATE increments version
|
||||
-- -------------------------------------------------------
|
||||
update public.members
|
||||
set first_name = 'AuditUpdated'
|
||||
where first_name = 'Audit';
|
||||
|
||||
select is(
|
||||
(select version from public.members where first_name = 'AuditUpdated' limit 1),
|
||||
2,
|
||||
'Version incremented to 2 after update'
|
||||
);
|
||||
|
||||
-- -------------------------------------------------------
|
||||
-- Test: UPDATE creates audit entry with field diff
|
||||
-- -------------------------------------------------------
|
||||
select isnt_empty(
|
||||
$$ select * from public.member_audit_log
|
||||
where member_id = (select id from public.members where first_name = 'AuditUpdated' limit 1)
|
||||
and action = 'updated'
|
||||
and changes ? 'first_name' $$,
|
||||
'Member UPDATE creates audit entry with first_name change diff'
|
||||
);
|
||||
|
||||
-- -------------------------------------------------------
|
||||
-- Test: Status change creates status_changed audit entry
|
||||
-- -------------------------------------------------------
|
||||
update public.members
|
||||
set status = 'inactive'
|
||||
where first_name = 'AuditUpdated';
|
||||
|
||||
select isnt_empty(
|
||||
$$ select * from public.member_audit_log
|
||||
where member_id = (select id from public.members where first_name = 'AuditUpdated' limit 1)
|
||||
and action = 'status_changed' $$,
|
||||
'Status change creates audit entry with action=status_changed'
|
||||
);
|
||||
|
||||
-- -------------------------------------------------------
|
||||
-- Test: Archive creates archived audit entry
|
||||
-- -------------------------------------------------------
|
||||
update public.members
|
||||
set is_archived = true
|
||||
where first_name = 'AuditUpdated';
|
||||
|
||||
select isnt_empty(
|
||||
$$ select * from public.member_audit_log
|
||||
where member_id = (select id from public.members where first_name = 'AuditUpdated' limit 1)
|
||||
and action = 'archived' $$,
|
||||
'Archive creates audit entry with action=archived'
|
||||
);
|
||||
|
||||
-- -------------------------------------------------------
|
||||
-- Test: Multiple updates increment version correctly
|
||||
-- -------------------------------------------------------
|
||||
select is(
|
||||
(select version from public.members where first_name = 'AuditUpdated' limit 1),
|
||||
4,
|
||||
'Version is 4 after 3 updates (initial insert + 3 updates)'
|
||||
);
|
||||
|
||||
select * from finish();
|
||||
|
||||
rollback;
|
||||
Reference in New Issue
Block a user