Skip to content

Commit

Permalink
feat: updating validation logic on un-required products
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexZorkin authored and AlexZorkin committed Oct 13, 2021
1 parent a76dc27 commit 1435b6e
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ create or replace function ggircs_portal.no_reported_ciip_product(app_revision g
on pfd.product_id = p.id
and p.is_ciip_product = true
and p.is_energy_product = false
and pfd.product_amount > 0
and (pfd.product_amount > 0 or not p.requires_product_amount)
);

$$ language sql stable;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-- Deploy ggircs-portal:application_validation_functions/no_reported_ciip_product to pg
-- requires: tables/application_revision_validation_function
-- requires: computed_columns/application_revision_production_form_data
-- requires: computed_columns/application_revision_validation

begin;

create or replace function ggircs_portal.no_reported_ciip_product(app_revision ggircs_portal.application_revision)
returns boolean
as $$

select exists (
select * from ggircs_portal.application_revision_production_form_data(app_revision) pfd
join ggircs_portal.product p
on pfd.product_id = p.id
and p.is_ciip_product = true
and p.is_energy_product = false
and pfd.product_amount > 0
);

$$ language sql stable;

grant execute on function ggircs_portal.no_reported_ciip_product to ciip_administrator, ciip_analyst, ciip_industry_user;

comment on function ggircs_portal.no_reported_ciip_product(ggircs_portal.application_revision) is 'This validation function for a CIIP (CleanBC Industrial Incentive Program) application determines if it contains at least one valid ciip product reported';

commit;
Original file line number Diff line number Diff line change
@@ -1,7 +1,27 @@
-- Revert ggircs-portal:application_validation_functions/no_reported_ciip_product from pg
-- Deploy ggircs-portal:application_validation_functions/no_reported_ciip_product to pg
-- requires: tables/application_revision_validation_function
-- requires: computed_columns/application_revision_production_form_data
-- requires: computed_columns/application_revision_validation

begin;

drop function ggircs_portal.no_reported_ciip_product;
create or replace function ggircs_portal.no_reported_ciip_product(app_revision ggircs_portal.application_revision)
returns boolean
as $$

select exists (
select * from ggircs_portal.application_revision_production_form_data(app_revision) pfd
join ggircs_portal.product p
on pfd.product_id = p.id
and p.is_ciip_product = true
and p.is_energy_product = false
and pfd.product_amount > 0
);

$$ language sql stable;

grant execute on function ggircs_portal.no_reported_ciip_product to ciip_administrator, ciip_analyst, ciip_industry_user;

comment on function ggircs_portal.no_reported_ciip_product(ggircs_portal.application_revision) is 'This validation function for a CIIP (CleanBC Industrial Incentive Program) application determines if it contains at least one valid ciip product reported';

commit;
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Revert ggircs-portal:application_validation_functions/no_reported_ciip_product from pg

begin;

drop function ggircs_portal.no_reported_ciip_product;

commit;
1 change: 1 addition & 0 deletions schema/sqitch.plan
Original file line number Diff line number Diff line change
Expand Up @@ -386,3 +386,4 @@ mutations/create_application_revision_mutation_chain [mutations/create_applicati
@v2.13.1 2021-09-28T19:27:43Z Pierre Bastianelli <pierre.bastianelli@gov.bc.ca> # release v2.13.1
@v2.13.2 2021-10-05T19:51:38Z Matthieu Foucault <matthieu@button.is> # release v2.13.2
application_validation_functions/emission_category_missing_fuel [application_validation_functions/emission_category_missing_fuel@v2.13.0] 2021-04-27T21:54:17Z Dylan Leard <dylan@button.is> # Validation function to determine if there a missing fuels based on the emission categories with reported emissions
application_validation_functions/no_reported_ciip_product [application_validation_functions/no_reported_ciip_product@v2.13.0] 2021-10-12T22:07:57Z Alex Zorkin <AizeeDev@BigThink> # Updating validation ogic on un-required products
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ create extension if not exists pgtap;
reset client_min_messages;

begin;
select plan(5);
select plan(6);

select has_function(
'ggircs_portal', 'no_reported_ciip_product', array['ggircs_portal.application_revision'],
Expand Down Expand Up @@ -121,6 +121,29 @@ select is(
'Function returns true when there is at least one valid ciip product reported with productionAmount > 0'
);

update ggircs_portal.form_result
set form_result =
'[
{
"productRowId": 10,
"productUnits": "MWh",
"isCiipProduct": true,
"productAmount": 0,
"productEmissions": 5900,
"requiresProductAmount": false,
"requiresEmissionAllocation": true
}
]'
where form_id=(select id from ggircs_portal.form_json where slug = 'production');
update ggircs_portal.product set requires_product_amount=false where id=10;

select is(
(with record as (select row(application_revision.*)::ggircs_portal.application_revision from ggircs_portal.application_revision where application_id=1 and version_number=1)
select ggircs_portal.no_reported_ciip_product((select * from record))),
true,
'Function returns true when there is at least one valid ciip product reported with productionAmount = 0 and requiresProductAmount = false'
);

select finish();

rollback;
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Verify ggircs-portal:application_validation_functions/no_reported_ciip_product on pg

begin;

select pg_get_functiondef('ggircs_portal.no_reported_ciip_product(ggircs_portal.application_revision)'::regprocedure);

rollback;

0 comments on commit 1435b6e

Please sign in to comment.