* chore: bump version to 2.23.2 and enhance team account creation - Updated application version from 2.23.1 to 2.23.2 in package.json. - Enhanced team account creation to support slugs for non-Latin names, including validation and UI updates. - Updated localization files to reflect new slug requirements and error messages. - Refactored related schemas and server actions to accommodate slug handling in team account creation and updates. * refactor: remove old trigger and function for adding current user to new account - Dropped the trigger "add_current_user_to_new_account" and the associated function from the database schema. - Updated permissions for the function public.create_team_account to ensure proper access control.
130 lines
4.4 KiB
PL/PgSQL
130 lines
4.4 KiB
PL/PgSQL
BEGIN;
|
||
create extension "basejump-supabase_test_helpers" version '0.0.6';
|
||
|
||
select no_plan();
|
||
|
||
--- we insert a user into auth.users and return the id into user_id to use
|
||
|
||
select tests.create_supabase_user('test1', 'test1@test.com');
|
||
|
||
select tests.create_supabase_user('test2');
|
||
|
||
-- Create team accounts using service_role (function is now service_role only)
|
||
set local role service_role;
|
||
|
||
select public.create_team_account('Test', tests.get_supabase_uid('test1'));
|
||
select public.create_team_account('Test', tests.get_supabase_uid('test1'));
|
||
select public.create_team_account('Test', tests.get_supabase_uid('test1'));
|
||
|
||
-- Switch back to authenticated user for testing
|
||
select makerkit.authenticate_as('test1');
|
||
|
||
-- should automatically create slugs for the accounts
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Test' and slug = 'test' $$,
|
||
row('test'::text),
|
||
'The first team account should automatically create a slug named "test"'
|
||
);
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Test' and slug = 'test-1' $$,
|
||
row('test-1'::text),
|
||
'The second team account should automatically create a slug named "test-1"'
|
||
);
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Test' and slug = 'test-2' $$,
|
||
row('test-2'::text),
|
||
'The third team account should automatically create a slug named "test-2"'
|
||
);
|
||
|
||
-- Should automatically update the slug if the name is updated
|
||
update public.accounts set name = 'Test 4' where slug = 'test-2';
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Test 4' $$,
|
||
row('test-4'::text),
|
||
'Updating the name of a team account should update the slug'
|
||
);
|
||
|
||
-- Should fail if the slug is updated to an existing slug
|
||
select throws_ok(
|
||
$$ update public.accounts set slug = 'test-1' where slug = 'test-4' $$,
|
||
'duplicate key value violates unique constraint "accounts_slug_key"'
|
||
);
|
||
|
||
-- Test special characters in the slug
|
||
update public.accounts set slug = 'test-5' where slug = 'test-4[';
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Test 4' $$,
|
||
row('test-4'::text),
|
||
'Updating the name of a team account should update the slug'
|
||
);
|
||
|
||
-- Test various special characters
|
||
update public.accounts set name = 'Test@Special#Chars$' where slug = 'test-4';
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Test@Special#Chars$' $$,
|
||
row('test-special-chars'::text),
|
||
'Special characters should be removed from slug'
|
||
);
|
||
|
||
-- Test multiple consecutive special characters
|
||
update public.accounts set name = 'Test!!Multiple---Special$$$Chars' where slug = 'test-special-chars';
|
||
|
||
select row_eq(
|
||
$a$ select slug from public.accounts where name = 'Test!!Multiple---Special$$$Chars' $a$,
|
||
row('test-multiple-special-chars'::text),
|
||
'Multiple consecutive special characters should be replaced with single hyphen'
|
||
);
|
||
|
||
-- Test leading and trailing special characters
|
||
update public.accounts set name = '!!!LeadingAndTrailing###' where slug = 'test-multiple-special-chars';
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = '!!!LeadingAndTrailing###' $$,
|
||
row('leadingandtrailing'::text),
|
||
'Leading and trailing special characters should be removed'
|
||
);
|
||
|
||
-- Test non-ASCII characters
|
||
update public.accounts set name = 'Testéñ中文Русский' where slug = 'leadingandtrailing';
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Testéñ中文Русский' $$,
|
||
row('testen'::text),
|
||
'Non-ASCII characters should be transliterated or removed'
|
||
);
|
||
|
||
-- Test mixed case with special characters
|
||
update public.accounts set name = 'Test Mixed CASE With Special@Chars!' where slug = 'testen';
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Test Mixed CASE With Special@Chars!' $$,
|
||
row('test-mixed-case-with-special-chars'::text),
|
||
'Mixed case should be converted to lowercase and special chars handled'
|
||
);
|
||
|
||
-- Test using parentheses
|
||
update public.accounts set name = 'Test (Parentheses)' where slug = 'test-mixed-case-with-special-chars';
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Test (Parentheses)' $$,
|
||
row('test-parentheses'::text),
|
||
'Parentheses should be removed from slug'
|
||
);
|
||
|
||
-- Test using asterisk
|
||
update public.accounts set name = 'Test * Asterisk' where slug = 'test-parentheses';
|
||
|
||
select row_eq(
|
||
$$ select slug from public.accounts where name = 'Test * Asterisk' $$,
|
||
row('test-asterisk'::text),
|
||
'Asterisk should be removed from slug'
|
||
);
|
||
|
||
select * from finish();
|
||
|
||
ROLLBACK; |