Add positive_integer and nonnegative_integer domains
This is easier to read and requires less unit tests, but i only used them in the new relations and fields for HEAD, because i do not see any point on creating migrations just for that.
This commit is contained in:
parent
7e39e5f549
commit
af31daba8a
|
@ -1,15 +1,18 @@
|
||||||
-- Deploy camper:campsite_type_cost__per_age to pg
|
-- Deploy camper:campsite_type_cost__per_age to pg
|
||||||
-- requires: campsite_type_cost
|
-- requires: campsite_type_cost
|
||||||
|
-- requires: nonnegative_integer
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
alter table camper.campsite_type_cost
|
set search_path to camper, public;
|
||||||
add column cost_per_adult integer not null default 0 constraint per_adult_not_negative check(cost_per_adult >= 0)
|
|
||||||
, add column cost_per_teenager integer not null default 0 constraint per_teenager_not_negative check(cost_per_teenager >= 0)
|
alter table campsite_type_cost
|
||||||
, add column cost_per_child integer not null default 0 constraint per_child_not_negative check(cost_per_child >= 0)
|
add column cost_per_adult nonnegative_integer not null default 0
|
||||||
|
, add column cost_per_teenager nonnegative_integer not null default 0
|
||||||
|
, add column cost_per_child nonnegative_integer not null default 0
|
||||||
;
|
;
|
||||||
|
|
||||||
alter table camper.campsite_type_cost
|
alter table campsite_type_cost
|
||||||
alter column cost_per_adult drop default
|
alter column cost_per_adult drop default
|
||||||
, alter column cost_per_teenager drop default
|
, alter column cost_per_teenager drop default
|
||||||
, alter column cost_per_child drop default
|
, alter column cost_per_child drop default
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
-- requires: schema_camper
|
-- requires: schema_camper
|
||||||
-- requires: campsite_type
|
-- requires: campsite_type
|
||||||
-- requires: user_profile
|
-- requires: user_profile
|
||||||
|
-- requires: nonnegative_integer
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
|
@ -10,7 +11,7 @@ set search_path to camper, public;
|
||||||
|
|
||||||
create table campsite_type_pet_cost (
|
create table campsite_type_pet_cost (
|
||||||
campsite_type_id integer primary key references campsite_type,
|
campsite_type_id integer primary key references campsite_type,
|
||||||
cost_per_night integer not null constraint cost_not_negative check(cost_per_night >= 0)
|
cost_per_night nonnegative_integer not null
|
||||||
);
|
);
|
||||||
|
|
||||||
grant select on table campsite_type_pet_cost to guest;
|
grant select on table campsite_type_pet_cost to guest;
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
-- Deploy camper:nonnegative_integer to pg
|
||||||
|
-- requires: schema_camper
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
create domain nonnegative_integer as integer
|
||||||
|
check (value >= 0)
|
||||||
|
;
|
||||||
|
|
||||||
|
comment on domain nonnegative_integer is 'an integer that is either zero or positive';
|
||||||
|
|
||||||
|
commit;
|
|
@ -4,6 +4,8 @@
|
||||||
-- requires: company
|
-- requires: company
|
||||||
-- requires: campsite_type
|
-- requires: campsite_type
|
||||||
-- requires: payment_status
|
-- requires: payment_status
|
||||||
|
-- requires: positive_integer
|
||||||
|
-- requires: nonnegative_integer
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
|
@ -16,17 +18,17 @@ create table payment (
|
||||||
campsite_type_id integer not null references campsite_type,
|
campsite_type_id integer not null references campsite_type,
|
||||||
arrival_date date not null,
|
arrival_date date not null,
|
||||||
departure_date date not null constraint departure_after_arrival check (departure_date > arrival_date),
|
departure_date date not null constraint departure_after_arrival check (departure_date > arrival_date),
|
||||||
subtotal_nights integer not null constraint subtotal_nights_not_negative check (subtotal_nights >= 0),
|
subtotal_nights nonnegative_integer not null,
|
||||||
number_adults integer not null constraint number_adults_positive check (number_adults > 0),
|
number_adults positive_integer not null,
|
||||||
subtotal_adults integer not null constraint subtotal_adults_not_negative check (subtotal_adults >= 0),
|
subtotal_adults nonnegative_integer not null,
|
||||||
number_teenagers integer not null constraint number_teenagers_not_negative check (number_teenagers >= 0),
|
number_teenagers nonnegative_integer not null,
|
||||||
subtotal_teenagers integer not null constraint subtotal_teenagers_not_negative check (subtotal_teenagers >= 0),
|
subtotal_teenagers nonnegative_integer not null,
|
||||||
number_children integer not null constraint number_children_not_negative check (number_children >= 0),
|
number_children nonnegative_integer not null,
|
||||||
subtotal_children integer not null constraint subtotal_children_not_negative check (subtotal_children >= 0),
|
subtotal_children nonnegative_integer not null,
|
||||||
number_dogs integer not null constraint number_dogs_not_negative check (number_dogs >= 0),
|
number_dogs nonnegative_integer not null,
|
||||||
subtotal_dogs integer not null constraint subtotal_dogs_not_negative check (subtotal_dogs >= 0),
|
subtotal_dogs nonnegative_integer not null,
|
||||||
subtotal_tourist_tax integer not null constraint subtotal_tourist_tax_not_negative check (subtotal_tourist_tax >= 0),
|
subtotal_tourist_tax nonnegative_integer not null,
|
||||||
total integer not null constraint total_not_negative check (total >= 0),
|
total nonnegative_integer not null,
|
||||||
zone_preferences text not null,
|
zone_preferences text not null,
|
||||||
payment_status text not null default 'draft' references payment_status,
|
payment_status text not null default 'draft' references payment_status,
|
||||||
created_at timestamp with time zone not null default current_timestamp,
|
created_at timestamp with time zone not null default current_timestamp,
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
-- requires: schema_camper
|
-- requires: schema_camper
|
||||||
-- requires: payment
|
-- requires: payment
|
||||||
-- requires: campsite_type_option
|
-- requires: campsite_type_option
|
||||||
|
-- requires: positive_integer
|
||||||
|
-- requires: nonnegative_integer
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
|
@ -11,8 +13,8 @@ set search_path to camper, public;
|
||||||
create table payment_option (
|
create table payment_option (
|
||||||
payment_id integer not null references payment,
|
payment_id integer not null references payment,
|
||||||
campsite_type_option_id integer not null references campsite_type_option,
|
campsite_type_option_id integer not null references campsite_type_option,
|
||||||
units integer not null constraint units_positive check (units > 0),
|
units positive_integer not null,
|
||||||
subtotal integer not null constraint subtotal_not_negative check (subtotal >= 0),
|
subtotal nonnegative_integer not null,
|
||||||
primary key (payment_id, campsite_type_option_id)
|
primary key (payment_id, campsite_type_option_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
-- Deploy camper:positive_integer to pg
|
||||||
|
-- requires: schema_camper
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
create domain positive_integer as integer
|
||||||
|
check (value > 0)
|
||||||
|
;
|
||||||
|
|
||||||
|
comment on domain positive_integer is 'an integer that can not be negative or zero; a natural number';
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Revert camper:nonnegative_integer from pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
drop domain if exists camper.nonnegative_integer;
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Revert camper:positive_integer from pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
drop domain if exists camper.positive_integer;
|
||||||
|
|
||||||
|
commit;
|
10
sqitch.plan
10
sqitch.plan
|
@ -225,10 +225,11 @@ edit_campsite_type [edit_campsite_type@v2 campsite_type__overflow_allowed campsi
|
||||||
@v3 2024-01-31T20:40:16Z jordi fita mas <jordi@tandem.blog> # Tag v3
|
@v3 2024-01-31T20:40:16Z jordi fita mas <jordi@tandem.blog> # Tag v3
|
||||||
|
|
||||||
campsite_type__bookable_nights [campsite_type campsite_type_cost] 2024-01-31T19:45:46Z jordi fita mas <jordi@tandem.blog> # Add bookable_nights to campsite_type
|
campsite_type__bookable_nights [campsite_type campsite_type_cost] 2024-01-31T19:45:46Z jordi fita mas <jordi@tandem.blog> # Add bookable_nights to campsite_type
|
||||||
campsite_type_cost__per_age [campsite_type_cost] 2024-02-03T20:48:54Z jordi fita mas <jordi@tandem.blog> # Add cost_per_adult, cost_per_teenager, and cost_per_child fields to campsite_type_cost
|
nonnegative_integer [schema_camper] 2024-02-13T20:31:38Z jordi fita mas <jordi@tandem.blog> # Add nonnegative integer domain
|
||||||
|
campsite_type_cost__per_age [campsite_type_cost nonnegative_integer] 2024-02-03T20:48:54Z jordi fita mas <jordi@tandem.blog> # Add cost_per_adult, cost_per_teenager, and cost_per_child fields to campsite_type_cost
|
||||||
set_campsite_type_cost [set_campsite_type_cost@v3 campsite_type__bookable_nights campsite_type_cost__per_age] 2024-01-31T21:02:06Z jordi fita mas <jordi@tandem.blog> # Remove min_nights parameter from set_campsite_type_cost, and add per_adult, per_teenager, and per_child parameters
|
set_campsite_type_cost [set_campsite_type_cost@v3 campsite_type__bookable_nights campsite_type_cost__per_age] 2024-01-31T21:02:06Z jordi fita mas <jordi@tandem.blog> # Remove min_nights parameter from set_campsite_type_cost, and add per_adult, per_teenager, and per_child parameters
|
||||||
campsite_type_cost__-min_nights [campsite_type__bookable_nights set_campsite_type_cost] 2024-01-31T21:46:33Z jordi fita mas <jordi@tandem.blog> # Remove min_nights field from campsite_type_cost relation
|
campsite_type_cost__-min_nights [campsite_type__bookable_nights set_campsite_type_cost] 2024-01-31T21:46:33Z jordi fita mas <jordi@tandem.blog> # Remove min_nights field from campsite_type_cost relation
|
||||||
campsite_type_pet_cost [roles schema_camper campsite_type user_profile] 2024-02-10T03:24:04Z jordi fita mas <jordi@tandem.blog> # Add relation of pet cost of campsite type
|
campsite_type_pet_cost [roles schema_camper campsite_type user_profile nonnegative_integer] 2024-02-10T03:24:04Z jordi fita mas <jordi@tandem.blog> # Add relation of pet cost of campsite type
|
||||||
set_campsite_type_pet_cost [roles schema_camper campsite_type campsite_type_pet_cost parse_price] 2024-02-10T03:49:54Z jordi fita mas <jordi@tandem.blog> # Add function to set pet cost of campsite type
|
set_campsite_type_pet_cost [roles schema_camper campsite_type campsite_type_pet_cost parse_price] 2024-02-10T03:49:54Z jordi fita mas <jordi@tandem.blog> # Add function to set pet cost of campsite type
|
||||||
unset_campsite_type_pet_cost [roles schema_camper campsite_type campsite_type_pet_cost] 2024-02-10T04:00:11Z jordi fita mas <jordi@tandem.blog> # Add function to remove pet cost from campsite type
|
unset_campsite_type_pet_cost [roles schema_camper campsite_type campsite_type_pet_cost] 2024-02-10T04:00:11Z jordi fita mas <jordi@tandem.blog> # Add function to remove pet cost from campsite type
|
||||||
add_campsite_type [add_campsite_type@v3 campsite_type__bookable_nights] 2024-01-31T20:46:47Z jordi fita mas <jordi@tandem.blog> # Add bookable_nights param to, and remove dogs_allowed param from add_campsite_type
|
add_campsite_type [add_campsite_type@v3 campsite_type__bookable_nights] 2024-01-31T20:46:47Z jordi fita mas <jordi@tandem.blog> # Add bookable_nights param to, and remove dogs_allowed param from add_campsite_type
|
||||||
|
@ -243,9 +244,10 @@ campsite_type_option_cost__-cost_per_night [campsite_type_option_cost campsite_t
|
||||||
payment_status [roles schema_camper] 2024-02-11T21:13:32Z jordi fita mas <jordi@tandem.blog> # Add relation of payment statuses
|
payment_status [roles schema_camper] 2024-02-11T21:13:32Z jordi fita mas <jordi@tandem.blog> # Add relation of payment statuses
|
||||||
payment_status_i18n [roles schema_camper payment_status language] 2024-02-11T21:20:11Z jordi fita mas <jordi@tandem.blog> # Add relation for translation of payment status
|
payment_status_i18n [roles schema_camper payment_status language] 2024-02-11T21:20:11Z jordi fita mas <jordi@tandem.blog> # Add relation for translation of payment status
|
||||||
available_payment_status [payment_status payment_status_i18n] 2024-02-11T21:22:38Z jordi fita mas <jordi@tandem.blog> # Add available payment statuses
|
available_payment_status [payment_status payment_status_i18n] 2024-02-11T21:22:38Z jordi fita mas <jordi@tandem.blog> # Add available payment statuses
|
||||||
payment [roles schema_camper company campsite_type payment_status] 2024-02-11T21:54:13Z jordi fita mas <jordi@tandem.blog> # Add relation for payments
|
positive_integer [schema_camper] 2024-02-13T20:24:09Z jordi fita mas <jordi@tandem.blog> # Add positive integer domain
|
||||||
|
payment [roles schema_camper company campsite_type payment_status positive_integer nonnegative_integer] 2024-02-11T21:54:13Z jordi fita mas <jordi@tandem.blog> # Add relation for payments
|
||||||
payment_customer [roles schema_camper payment country country_code extension_pg_libphonenumber] 2024-02-12T00:10:20Z jordi fita mas <jordi@tandem.blog> # Add relation of payment customer
|
payment_customer [roles schema_camper payment country country_code extension_pg_libphonenumber] 2024-02-12T00:10:20Z jordi fita mas <jordi@tandem.blog> # Add relation of payment customer
|
||||||
payment_option [roles schema_camper payment campsite_type_option] 2024-02-12T00:58:07Z jordi fita mas <jordi@tandem.blog> # Add relation of payment for campsite type options
|
payment_option [roles schema_camper payment campsite_type_option positive_integer nonnegative_integer] 2024-02-12T00:58:07Z jordi fita mas <jordi@tandem.blog> # Add relation of payment for campsite type options
|
||||||
draft_payment [roles schema_camper season_calendar season campsite_type campsite_type_pet_cost campsite_type_cost campsite_type_option_cost campsite_type_option payment payment_option] 2024-02-12T01:31:52Z jordi fita mas <jordi@tandem.blog> # Add function to create a payment draft
|
draft_payment [roles schema_camper season_calendar season campsite_type campsite_type_pet_cost campsite_type_cost campsite_type_option_cost campsite_type_option payment payment_option] 2024-02-12T01:31:52Z jordi fita mas <jordi@tandem.blog> # Add function to create a payment draft
|
||||||
ready_payment [roles schema_camper payment payment_customer country_code email extension_pg_libphonenumber] 2024-02-12T12:57:24Z jordi fita mas <jordi@tandem.blog> # Add function to ready a draft payment
|
ready_payment [roles schema_camper payment payment_customer country_code email extension_pg_libphonenumber] 2024-02-12T12:57:24Z jordi fita mas <jordi@tandem.blog> # Add function to ready a draft payment
|
||||||
redsys_response [schema_camper currency_code] 2024-02-12T19:49:29Z jordi fita mas <jordi@tandem.blog> # Add type for Redsys responses
|
redsys_response [schema_camper currency_code] 2024-02-12T19:49:29Z jordi fita mas <jordi@tandem.blog> # Add type for Redsys responses
|
||||||
|
|
|
@ -5,7 +5,7 @@ reset client_min_messages;
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select plan(57);
|
select plan(54);
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
@ -37,17 +37,17 @@ select col_not_null('campsite_type_cost', 'cost_per_night');
|
||||||
select col_hasnt_default('campsite_type_cost', 'cost_per_night');
|
select col_hasnt_default('campsite_type_cost', 'cost_per_night');
|
||||||
|
|
||||||
select has_column('campsite_type_cost', 'cost_per_adult');
|
select has_column('campsite_type_cost', 'cost_per_adult');
|
||||||
select col_type_is('campsite_type_cost', 'cost_per_adult', 'integer');
|
select col_type_is('campsite_type_cost', 'cost_per_adult', 'nonnegative_integer');
|
||||||
select col_not_null('campsite_type_cost', 'cost_per_adult');
|
select col_not_null('campsite_type_cost', 'cost_per_adult');
|
||||||
select col_hasnt_default('campsite_type_cost', 'cost_per_adult');
|
select col_hasnt_default('campsite_type_cost', 'cost_per_adult');
|
||||||
|
|
||||||
select has_column('campsite_type_cost', 'cost_per_teenager');
|
select has_column('campsite_type_cost', 'cost_per_teenager');
|
||||||
select col_type_is('campsite_type_cost', 'cost_per_teenager', 'integer');
|
select col_type_is('campsite_type_cost', 'cost_per_teenager', 'nonnegative_integer');
|
||||||
select col_not_null('campsite_type_cost', 'cost_per_teenager');
|
select col_not_null('campsite_type_cost', 'cost_per_teenager');
|
||||||
select col_hasnt_default('campsite_type_cost', 'cost_per_teenager');
|
select col_hasnt_default('campsite_type_cost', 'cost_per_teenager');
|
||||||
|
|
||||||
select has_column('campsite_type_cost', 'cost_per_child');
|
select has_column('campsite_type_cost', 'cost_per_child');
|
||||||
select col_type_is('campsite_type_cost', 'cost_per_child', 'integer');
|
select col_type_is('campsite_type_cost', 'cost_per_child', 'nonnegative_integer');
|
||||||
select col_not_null('campsite_type_cost', 'cost_per_child');
|
select col_not_null('campsite_type_cost', 'cost_per_child');
|
||||||
select col_hasnt_default('campsite_type_cost', 'cost_per_child');
|
select col_hasnt_default('campsite_type_cost', 'cost_per_child');
|
||||||
|
|
||||||
|
@ -240,24 +240,6 @@ select throws_ok(
|
||||||
'Should not be able to insert campsite type costs with negative cost per night.'
|
'Should not be able to insert campsite type costs with negative cost per night.'
|
||||||
);
|
);
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into campsite_type_cost (campsite_type_id, season_id, cost_per_night, cost_per_adult, cost_per_teenager, cost_per_child) values (16, 27, 1, -1, 3, 4) $$,
|
|
||||||
'23514', 'new row for relation "campsite_type_cost" violates check constraint "per_adult_not_negative"',
|
|
||||||
'Should not be able to insert campsite type costs with negative cost per adult.'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into campsite_type_cost (campsite_type_id, season_id, cost_per_night, cost_per_adult, cost_per_teenager, cost_per_child) values (16, 27, 1, 2, -1, 4) $$,
|
|
||||||
'23514', 'new row for relation "campsite_type_cost" violates check constraint "per_teenager_not_negative"',
|
|
||||||
'Should not be able to insert campsite type costs with negative cost per teenager.'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into campsite_type_cost (campsite_type_id, season_id, cost_per_night, cost_per_adult, cost_per_teenager, cost_per_child) values (16, 27, 1, 2, 3, -1) $$,
|
|
||||||
'23514', 'new row for relation "campsite_type_cost" violates check constraint "per_child_not_negative"',
|
|
||||||
'Should not be able to insert campsite type costs with negative cost per child.'
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
reset role;
|
reset role;
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ reset client_min_messages;
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select plan(31);
|
select plan(30);
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ select col_not_null('campsite_type_pet_cost', 'campsite_type_id');
|
||||||
select col_hasnt_default('campsite_type_pet_cost', 'campsite_type_id');
|
select col_hasnt_default('campsite_type_pet_cost', 'campsite_type_id');
|
||||||
|
|
||||||
select has_column('campsite_type_pet_cost', 'cost_per_night');
|
select has_column('campsite_type_pet_cost', 'cost_per_night');
|
||||||
select col_type_is('campsite_type_pet_cost', 'cost_per_night', 'integer');
|
select col_type_is('campsite_type_pet_cost', 'cost_per_night', 'nonnegative_integer');
|
||||||
select col_not_null('campsite_type_pet_cost', 'cost_per_night');
|
select col_not_null('campsite_type_pet_cost', 'cost_per_night');
|
||||||
select col_hasnt_default('campsite_type_pet_cost', 'cost_per_night');
|
select col_hasnt_default('campsite_type_pet_cost', 'cost_per_night');
|
||||||
|
|
||||||
|
@ -178,12 +178,6 @@ select bag_eq(
|
||||||
'No row should have been changed'
|
'No row should have been changed'
|
||||||
);
|
);
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into campsite_type_pet_cost (campsite_type_id, cost_per_night) values (17, -1) $$,
|
|
||||||
'23514', 'new row for relation "campsite_type_pet_cost" violates check constraint "cost_not_negative"',
|
|
||||||
'Should not be able to insert negative pet costs.'
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
reset role;
|
reset role;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
-- Test nonnegative_integer
|
||||||
|
set client_min_messages to warning;
|
||||||
|
create extension if not exists pgtap;
|
||||||
|
reset client_min_messages;
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select plan(10);
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
select has_domain('nonnegative_integer');
|
||||||
|
select domain_type_is('nonnegative_integer', 'integer');
|
||||||
|
|
||||||
|
select lives_ok($$ select 0::nonnegative_integer $$);
|
||||||
|
select lives_ok($$ select 1::nonnegative_integer $$);
|
||||||
|
select lives_ok($$ select 2::nonnegative_integer $$);
|
||||||
|
select lives_ok($$ select 10::nonnegative_integer $$);
|
||||||
|
select lives_ok($$ select 31289::nonnegative_integer $$);
|
||||||
|
select lives_ok($$ select 8891892::nonnegative_integer $$);
|
||||||
|
|
||||||
|
select throws_ok(
|
||||||
|
$$ select (-1)::nonnegative_integer $$,
|
||||||
|
23514, null,
|
||||||
|
'No negative numbers allowed'
|
||||||
|
);
|
||||||
|
|
||||||
|
select is(
|
||||||
|
1.123::nonnegative_integer,
|
||||||
|
1::nonnegative_integer,
|
||||||
|
'Integers only'
|
||||||
|
);
|
||||||
|
|
||||||
|
select *
|
||||||
|
from finish();
|
||||||
|
|
||||||
|
rollback;
|
|
@ -5,7 +5,7 @@ reset client_min_messages;
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select plan(114);
|
select plan(103);
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
@ -54,57 +54,57 @@ select col_not_null('payment', 'departure_date');
|
||||||
select col_hasnt_default('payment', 'departure_date');
|
select col_hasnt_default('payment', 'departure_date');
|
||||||
|
|
||||||
select has_column('payment', 'subtotal_nights');
|
select has_column('payment', 'subtotal_nights');
|
||||||
select col_type_is('payment', 'subtotal_nights', 'integer');
|
select col_type_is('payment', 'subtotal_nights', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'subtotal_nights');
|
select col_not_null('payment', 'subtotal_nights');
|
||||||
select col_hasnt_default('payment', 'subtotal_nights');
|
select col_hasnt_default('payment', 'subtotal_nights');
|
||||||
|
|
||||||
select has_column('payment', 'number_adults');
|
select has_column('payment', 'number_adults');
|
||||||
select col_type_is('payment', 'number_adults', 'integer');
|
select col_type_is('payment', 'number_adults', 'positive_integer');
|
||||||
select col_not_null('payment', 'number_adults');
|
select col_not_null('payment', 'number_adults');
|
||||||
select col_hasnt_default('payment', 'number_adults');
|
select col_hasnt_default('payment', 'number_adults');
|
||||||
|
|
||||||
select has_column('payment', 'subtotal_adults');
|
select has_column('payment', 'subtotal_adults');
|
||||||
select col_type_is('payment', 'subtotal_adults', 'integer');
|
select col_type_is('payment', 'subtotal_adults', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'subtotal_adults');
|
select col_not_null('payment', 'subtotal_adults');
|
||||||
select col_hasnt_default('payment', 'subtotal_adults');
|
select col_hasnt_default('payment', 'subtotal_adults');
|
||||||
|
|
||||||
select has_column('payment', 'number_teenagers');
|
select has_column('payment', 'number_teenagers');
|
||||||
select col_type_is('payment', 'number_teenagers', 'integer');
|
select col_type_is('payment', 'number_teenagers', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'number_teenagers');
|
select col_not_null('payment', 'number_teenagers');
|
||||||
select col_hasnt_default('payment', 'number_teenagers');
|
select col_hasnt_default('payment', 'number_teenagers');
|
||||||
|
|
||||||
select has_column('payment', 'subtotal_teenagers');
|
select has_column('payment', 'subtotal_teenagers');
|
||||||
select col_type_is('payment', 'subtotal_teenagers', 'integer');
|
select col_type_is('payment', 'subtotal_teenagers', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'subtotal_teenagers');
|
select col_not_null('payment', 'subtotal_teenagers');
|
||||||
select col_hasnt_default('payment', 'subtotal_teenagers');
|
select col_hasnt_default('payment', 'subtotal_teenagers');
|
||||||
|
|
||||||
select has_column('payment', 'number_children');
|
select has_column('payment', 'number_children');
|
||||||
select col_type_is('payment', 'number_children', 'integer');
|
select col_type_is('payment', 'number_children', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'number_children');
|
select col_not_null('payment', 'number_children');
|
||||||
select col_hasnt_default('payment', 'number_children');
|
select col_hasnt_default('payment', 'number_children');
|
||||||
|
|
||||||
select has_column('payment', 'subtotal_children');
|
select has_column('payment', 'subtotal_children');
|
||||||
select col_type_is('payment', 'subtotal_children', 'integer');
|
select col_type_is('payment', 'subtotal_children', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'subtotal_children');
|
select col_not_null('payment', 'subtotal_children');
|
||||||
select col_hasnt_default('payment', 'subtotal_children');
|
select col_hasnt_default('payment', 'subtotal_children');
|
||||||
|
|
||||||
select has_column('payment', 'number_dogs');
|
select has_column('payment', 'number_dogs');
|
||||||
select col_type_is('payment', 'number_dogs', 'integer');
|
select col_type_is('payment', 'number_dogs', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'number_dogs');
|
select col_not_null('payment', 'number_dogs');
|
||||||
select col_hasnt_default('payment', 'number_dogs');
|
select col_hasnt_default('payment', 'number_dogs');
|
||||||
|
|
||||||
select has_column('payment', 'subtotal_dogs');
|
select has_column('payment', 'subtotal_dogs');
|
||||||
select col_type_is('payment', 'subtotal_dogs', 'integer');
|
select col_type_is('payment', 'subtotal_dogs', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'subtotal_dogs');
|
select col_not_null('payment', 'subtotal_dogs');
|
||||||
select col_hasnt_default('payment', 'subtotal_dogs');
|
select col_hasnt_default('payment', 'subtotal_dogs');
|
||||||
|
|
||||||
select has_column('payment', 'subtotal_tourist_tax');
|
select has_column('payment', 'subtotal_tourist_tax');
|
||||||
select col_type_is('payment', 'subtotal_tourist_tax', 'integer');
|
select col_type_is('payment', 'subtotal_tourist_tax', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'subtotal_tourist_tax');
|
select col_not_null('payment', 'subtotal_tourist_tax');
|
||||||
select col_hasnt_default('payment', 'subtotal_tourist_tax');
|
select col_hasnt_default('payment', 'subtotal_tourist_tax');
|
||||||
|
|
||||||
select has_column('payment', 'total');
|
select has_column('payment', 'total');
|
||||||
select col_type_is('payment', 'total', 'integer');
|
select col_type_is('payment', 'total', 'nonnegative_integer');
|
||||||
select col_not_null('payment', 'total');
|
select col_not_null('payment', 'total');
|
||||||
select col_hasnt_default('payment', 'total');
|
select col_hasnt_default('payment', 'total');
|
||||||
|
|
||||||
|
@ -165,72 +165,6 @@ select throws_ok(
|
||||||
'Should not be able to insert a payment with a departure date equal or before the arrival date (i.e., at least one night)'
|
'Should not be able to insert a payment with a departure date equal or before the arrival date (i.e., at least one night)'
|
||||||
);
|
);
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "subtotal_nights_not_negative"',
|
|
||||||
'Should not be able to insert a payment with negative subtotal for nights'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "number_adults_positive"',
|
|
||||||
'Should not be able to insert a payment with no adults'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "subtotal_adults_not_negative"',
|
|
||||||
'Should not be able to insert a payment with a negative subtotal for adults'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "number_teenagers_not_negative"',
|
|
||||||
'Should not be able to insert a payment with a negative number of teenagers'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "subtotal_teenagers_not_negative"',
|
|
||||||
'Should not be able to insert a payment with a negative subtotal for teenagers'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "number_children_not_negative"',
|
|
||||||
'Should not be able to insert a payment with a negative number of children'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "subtotal_children_not_negative"',
|
|
||||||
'Should not be able to insert a payment with a negative subtotal for children'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "number_dogs_not_negative"',
|
|
||||||
'Should not be able to insert a payment with a negative number of dogs'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "subtotal_dogs_not_negative"',
|
|
||||||
'Should not be able to insert a payment with a negative subtotal for dogs'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "subtotal_tourist_tax_not_negative"',
|
|
||||||
'Should not be able to insert a payment with a negative subtotal for tourist tax'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment (company_id, campsite_type_id, arrival_date, departure_date, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences) values (1, 10, '2024-07-07', '2024-07-09', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, '') $$,
|
|
||||||
'23514', 'new row for relation "payment" violates check constraint "total_not_negative"',
|
|
||||||
'Should not be able to insert a payment with a negative total'
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
select *
|
select *
|
||||||
from finish();
|
from finish();
|
||||||
|
|
|
@ -5,7 +5,7 @@ reset client_min_messages;
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select plan(29);
|
select plan(27);
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
@ -32,12 +32,12 @@ select col_not_null('payment_option', 'campsite_type_option_id');
|
||||||
select col_hasnt_default('payment_option', 'campsite_type_option_id');
|
select col_hasnt_default('payment_option', 'campsite_type_option_id');
|
||||||
|
|
||||||
select has_column('payment_option', 'units');
|
select has_column('payment_option', 'units');
|
||||||
select col_type_is('payment_option', 'units', 'integer');
|
select col_type_is('payment_option', 'units', 'positive_integer');
|
||||||
select col_not_null('payment_option', 'units');
|
select col_not_null('payment_option', 'units');
|
||||||
select col_hasnt_default('payment_option', 'units');
|
select col_hasnt_default('payment_option', 'units');
|
||||||
|
|
||||||
select has_column('payment_option', 'subtotal');
|
select has_column('payment_option', 'subtotal');
|
||||||
select col_type_is('payment_option', 'subtotal', 'integer');
|
select col_type_is('payment_option', 'subtotal', 'nonnegative_integer');
|
||||||
select col_not_null('payment_option', 'subtotal');
|
select col_not_null('payment_option', 'subtotal');
|
||||||
select col_hasnt_default('payment_option', 'subtotal');
|
select col_hasnt_default('payment_option', 'subtotal');
|
||||||
|
|
||||||
|
@ -77,18 +77,6 @@ insert into payment (payment_id, company_id, campsite_type_id, arrival_date, dep
|
||||||
values (15, 1, 10, '2024-07-07', '2024-07-08', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '')
|
values (15, 1, 10, '2024-07-07', '2024-07-08', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '')
|
||||||
;
|
;
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment_option (payment_id, campsite_type_option_id, units, subtotal) values (15, 11, 0, 0) $$,
|
|
||||||
'23514', 'new row for relation "payment_option" violates check constraint "units_positive"',
|
|
||||||
'Should not be able to insert a payment option with zero units'
|
|
||||||
);
|
|
||||||
|
|
||||||
select throws_ok(
|
|
||||||
$$ insert into payment_option (payment_id, campsite_type_option_id, units, subtotal) values (15, 12, 1, -1) $$,
|
|
||||||
'23514', 'new row for relation "payment_option" violates check constraint "subtotal_not_negative"',
|
|
||||||
'Should not be able to insert a payment option with a negative subtotal'
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
select *
|
select *
|
||||||
from finish();
|
from finish();
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
-- Test positive_integer
|
||||||
|
set client_min_messages to warning;
|
||||||
|
create extension if not exists pgtap;
|
||||||
|
reset client_min_messages;
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select plan(10);
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
select has_domain('positive_integer');
|
||||||
|
select domain_type_is('positive_integer', 'integer');
|
||||||
|
|
||||||
|
select lives_ok($$ select 1::positive_integer $$);
|
||||||
|
select lives_ok($$ select 2::positive_integer $$);
|
||||||
|
select lives_ok($$ select 10::positive_integer $$);
|
||||||
|
select lives_ok($$ select 31289::positive_integer $$);
|
||||||
|
select lives_ok($$ select 8891892::positive_integer $$);
|
||||||
|
|
||||||
|
select throws_ok(
|
||||||
|
$$ select (-1)::positive_integer $$,
|
||||||
|
23514, null,
|
||||||
|
'No negative numbers allowed'
|
||||||
|
);
|
||||||
|
|
||||||
|
select throws_ok(
|
||||||
|
$$ select 0::positive_integer $$,
|
||||||
|
23514, null,
|
||||||
|
'Zero is also not allowed'
|
||||||
|
);
|
||||||
|
|
||||||
|
select is(
|
||||||
|
1.123::positive_integer,
|
||||||
|
1::positive_integer,
|
||||||
|
'Integers only'
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
select *
|
||||||
|
from finish();
|
||||||
|
|
||||||
|
rollback;
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Verify camper:nonnegative_integer on pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select pg_catalog.has_type_privilege('camper.nonnegative_integer', 'usage');
|
||||||
|
|
||||||
|
rollback;
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Verify camper:positive_integer on pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select pg_catalog.has_type_privilege('camper.positive_integer', 'usage');
|
||||||
|
|
||||||
|
rollback;
|
Loading…
Reference in New Issue