This is more or less the same as the campsites, as public information goes, but for buildings and other amenities that the camping provides that are not campsites.
109 lines
4.4 KiB
PL/PgSQL
109 lines
4.4 KiB
PL/PgSQL
-- Test remove_amenity_carousel_slide
|
||
set client_min_messages to warning;
|
||
create extension if not exists pgtap;
|
||
reset client_min_messages;
|
||
|
||
begin;
|
||
|
||
select plan(13);
|
||
|
||
set search_path to camper, public;
|
||
|
||
select has_function('camper', 'remove_amenity_carousel_slide', array['integer', 'text', 'integer']);
|
||
select function_lang_is('camper', 'remove_amenity_carousel_slide', array['integer', 'text', 'integer'], 'plpgsql');
|
||
select function_returns('camper', 'remove_amenity_carousel_slide', array['integer', 'text', 'integer'], 'void');
|
||
select isnt_definer('camper', 'remove_amenity_carousel_slide', array['integer', 'text', 'integer']);
|
||
select volatility_is('camper', 'remove_amenity_carousel_slide', array['integer', 'text', 'integer'], 'volatile');
|
||
select function_privs_are('camper', 'remove_amenity_carousel_slide', array['integer', 'text', 'integer'], 'guest', array[]::text[]);
|
||
select function_privs_are('camper', 'remove_amenity_carousel_slide', array['integer', 'text', 'integer'], 'employee', array[]::text[]);
|
||
select function_privs_are('camper', 'remove_amenity_carousel_slide', array['integer', 'text', 'integer'], 'admin', array['EXECUTE']);
|
||
select function_privs_are('camper', 'remove_amenity_carousel_slide', array['integer', 'text', 'integer'], 'authenticator', array[]::text[]);
|
||
|
||
|
||
set client_min_messages to warning;
|
||
truncate amenity_carousel_i18n cascade;
|
||
truncate amenity_carousel cascade;
|
||
truncate amenity 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, country_code, currency_code, default_lang_tag)
|
||
values (1, 'Company 2', 'XX123', '', '555-555-555', 'a@a', '', '', '', '', '', '', 60, 'ES', 'EUR', 'ca')
|
||
, (2, 'Company 2', 'XX123', '', '555-555-555', 'a@a', '', '', '', '', '', '', 60, '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 (3, 1, 'cover2.xpm', sha256('static char *s[]={"1 1 1 1","a c #ffffff","a"};'))
|
||
, (4, 1, 'cover3.xpm', sha256('static char *s[]={"1 1 1 1","a c #ff00ff","a"};'))
|
||
, (5, 2, 'cover4.xpm', sha256('static char *s[]={"1 1 1 1","a c #ffff00","a"};'))
|
||
, (6, 2, 'text.txt', sha256('hello, world!'))
|
||
, (7, 2, 'image.svg', sha256('<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>'))
|
||
;
|
||
|
||
insert into amenity (amenity_id, company_id, label, name)
|
||
values (12, 1, 'A1', 'Amenity A1')
|
||
, (13, 2, 'A1', 'Amenity A1')
|
||
;
|
||
|
||
insert into amenity_carousel (amenity_id, media_id, caption)
|
||
values (12, 3, 'Source caption')
|
||
, (12, 4, 'Source caption')
|
||
, (13, 5, 'Another caption')
|
||
, (13, 6, 'N/A')
|
||
;
|
||
|
||
insert into amenity_carousel_i18n (amenity_id, media_id, lang_tag, caption)
|
||
values (12, 3, 'en', 'Target caption')
|
||
, (12, 3, 'es', 'Target caption (spanish)')
|
||
, (12, 4, 'en', 'Target caption')
|
||
, (12, 4, 'es', 'Target caption (spanish)')
|
||
, (13, 5, 'en', 'Target caption')
|
||
, (13, 5, 'es', 'Target caption (spanish)')
|
||
, (13, 6, 'en', 'Target caption')
|
||
, (13, 6, 'es', 'Target caption (spanish)')
|
||
;
|
||
|
||
select lives_ok(
|
||
$$ select remove_amenity_carousel_slide(1, 'A1', 3) $$,
|
||
'Should be able to delete a slide from the first amenity type'
|
||
);
|
||
|
||
select lives_ok(
|
||
$$ select remove_amenity_carousel_slide(2, 'A1', 6) $$,
|
||
'Should be able to delete a slide from the second amenity type'
|
||
);
|
||
|
||
select bag_eq(
|
||
$$ select amenity_id, media_id, caption from amenity_carousel $$,
|
||
$$ values (12, 4, 'Source caption')
|
||
, (13, 5, 'Another caption')
|
||
$$,
|
||
'Should have removed the slides'
|
||
);
|
||
|
||
select bag_eq(
|
||
$$ select amenity_id, media_id, lang_tag, caption from amenity_carousel_i18n $$,
|
||
$$ values (12, 4, 'en', 'Target caption')
|
||
, (12, 4, 'es', 'Target caption (spanish)')
|
||
, (13, 5, 'en', 'Target caption')
|
||
, (13, 5, 'es', 'Target caption (spanish)')
|
||
$$,
|
||
'Should have removed the slides’ translations'
|
||
);
|
||
|
||
|
||
select *
|
||
from finish();
|
||
|
||
rollback;
|