camper/test/remove_campsite_type_option...

124 lines
4.5 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Test remove_campsite_type_option
set client_min_messages to warning;
create extension if not exists pgtap;
reset client_min_messages;
begin;
select plan(14);
set search_path to camper, public;
select has_function('camper', 'remove_campsite_type_option', array['integer']);
select function_lang_is('camper', 'remove_campsite_type_option', array['integer'], 'sql');
select function_returns('camper', 'remove_campsite_type_option', array['integer'], 'void');
select isnt_definer('camper', 'remove_campsite_type_option', array['integer']);
select volatility_is('camper', 'remove_campsite_type_option', array['integer'], 'volatile');
select function_privs_are('camper', 'remove_campsite_type_option', array['integer'], 'guest', array[]::text[]);
select function_privs_are('camper', 'remove_campsite_type_option', array['integer'], 'employee', array[]::text[]);
select function_privs_are('camper', 'remove_campsite_type_option', array['integer'], 'admin', array['EXECUTE']);
select function_privs_are('camper', 'remove_campsite_type_option', array['integer'], 'authenticator', array[]::text[]);
set client_min_messages to warning;
truncate campsite_type_option_cost cascade;
truncate campsite_type_option_i18n cascade;
truncate campsite_type_option cascade;
truncate season cascade;
truncate media cascade;
truncate media_content cascade;
truncate company cascade;
reset client_min_messages;
insert into company (company_id, business_name, vatin, trade_name, phone, email, web, address, city, province, postal_code, rtc_number, tourist_tax, tourist_tax_max_days, country_code, currency_code, default_lang_tag)
values (1, 'Company 2', 'XX123', '', '555-555-555', 'a@a', '', '', '', '', '', '', 60, 7, 'ES', 'EUR', 'ca')
;
insert into media_content (media_type, bytes)
values ('image/x-xpixmap', 'static char *s[]={"1 1 1 1","a c #ffffff","a"};')
, ('image/x-xpixmap', 'static char *s[]={"1 1 1 1","a c #ff00ff","a"};')
, ('image/x-xpixmap', 'static char *s[]={"1 1 1 1","a c #ffff00","a"};')
, ('text/plain', 'hello, world!')
, ('image/svg+xml', '<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>')
;
insert into media (media_id, company_id, original_filename, content_hash)
values (2, 1, 'cover2.xpm', sha256('static char *s[]={"1 1 1 1","a c #ffffff","a"};'))
, (3, 1, 'cover3.xpm', sha256('static char *s[]={"1 1 1 1","a c #ff00ff","a"};'))
;
insert into campsite_type (campsite_type_id, company_id, slug, media_id, name, description, max_campers, bookable_nights, active)
values (10, 1, '87452b88-b48f-48d3-bb6c-0296de64164e', 2, 'Type A', '<p>A</p>', 5, '[1, 7]', true)
, (11, 1, '9b6370f7-f941-46f2-bc6e-de455675bd0a', 3, 'Type B', '<p>B</p>', 4, '[2, 6]', false)
;
insert into campsite_type_option (campsite_type_option_id, campsite_type_id, name, range, per_night)
values (12, 10, 'Option 1', '[0, 1]', true)
, (13, 10, 'Option 2', '[0, 1]', true)
, (14, 11, 'Option 3', '[0, 1]', true)
, (15, 11, 'Option 4', '[0, 1]', true)
;
insert into season (season_id, company_id, name)
values (16, 1, 'High')
;
insert into campsite_type_option_cost (campsite_type_option_id, season_id, cost)
values (12, 16, 44)
, (13, 16, 54)
, (14, 16, 74)
, (15, 16, 84)
;
insert into campsite_type_option_i18n (campsite_type_option_id, lang_tag, name)
values (12, 'ca', 'Opció 1')
, (12, 'es', 'Opción 1')
, (13, 'ca', 'Opció 2')
, (13, 'es', 'Opción 2')
, (14, 'ca', 'Opció 3')
, (14, 'es', 'Opción 3')
, (15, 'ca', 'Opció 4')
, (15, 'es', 'Opción 4')
;
select lives_ok(
$$ select remove_campsite_type_option(12) $$,
'Should be able to delete an option from the first campsite type'
);
select lives_ok(
$$ select remove_campsite_type_option(15) $$,
'Should be able to delete a slide from the second campsite type'
);
select bag_eq(
$$ select campsite_type_option_id, name from campsite_type_option $$,
$$ values (13, 'Option 2')
, (14, 'Option 3')
$$,
'Should have removed the options'
);
select bag_eq(
$$ select campsite_type_option_id, lang_tag, name from campsite_type_option_i18n $$,
$$ values (13, 'ca', 'Opció 2')
, (13, 'es', 'Opción 2')
, (14, 'ca', 'Opció 3')
, (14, 'es', 'Opción 3')
$$,
'Should have removed the options translations'
);
select bag_eq(
$$ select campsite_type_option_id, season_id, cost from campsite_type_option_cost $$,
$$ values (13, 16, 54)
, (14, 16, 74)
$$,
'Should have removed the options translations'
);
select *
from finish();
rollback;