Skip to content

Commit

Permalink
fix: application list should retrieve the latest *submitted* status
Browse files Browse the repository at this point in the history
  • Loading branch information
matthieu-foucault committed Jul 21, 2021
1 parent 3f77cf6 commit ee2507c
Show file tree
Hide file tree
Showing 9 changed files with 124 additions and 4 deletions.
2 changes: 1 addition & 1 deletion app/containers/Applications/ApplicationListContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ export default createFragmentContainer(ApplicationList, {
facilityName: {includesInsensitive: $facility_name}
reportingYear: {equalTo: $reporting_year}
submissionDate: {equalTo: $submission_date}
status: {notEqualTo: DRAFT, equalTo: $status}
latestSubmittedRevisionStatus: {equalTo: $status, isNull: false}
}
orderBy: $order_by
) {
Expand Down
8 changes: 5 additions & 3 deletions app/containers/Applications/ApplicationRowItemContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,11 @@ export const ApplicationRowItem: React.FunctionComponent<Props> = (props) => {
<Badge
pill
style={{width: '100%', textTransform: 'uppercase'}}
variant={statusBadgeColor[application.status]}
variant={statusBadgeColor[application.latestSubmittedRevisionStatus]}
>
{getUserFriendlyStatusLabel(application.status)}
{getUserFriendlyStatusLabel(
application.latestSubmittedRevisionStatus
)}
</Badge>
</td>
<td>
Expand All @@ -64,7 +66,7 @@ export default createFragmentContainer(ApplicationRowItem, {
rowId
operatorName
facilityName
status
latestSubmittedRevisionStatus
reportingYear
submissionDate
}
Expand Down
10 changes: 10 additions & 0 deletions app/server/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -649,6 +649,11 @@ type Application implements Node {
"""
latestSubmittedRevision: ApplicationRevision

"""
Returns the current status of an application, excluding application revisions that are not submitted yet (i.e. in draft)
"""
latestSubmittedRevisionStatus: CiipApplicationRevisionStatus

"""
This function is a wrapper to return operator_name from the organisation object
"""
Expand Down Expand Up @@ -1678,6 +1683,9 @@ input ApplicationFilter {
"""Some related `formResultsByApplicationId` exist."""
formResultsByApplicationIdExist: Boolean

"""Filter by the object’s `latestSubmittedRevisionStatus` field."""
latestSubmittedRevisionStatus: CiipApplicationRevisionStatusFilter

"""Negates the expression."""
not: ApplicationFilter

Expand Down Expand Up @@ -3910,6 +3918,8 @@ enum ApplicationsOrderBy {
FACILITY_NAME_DESC
ID_ASC
ID_DESC
LATEST_SUBMITTED_REVISION_STATUS_ASC
LATEST_SUBMITTED_REVISION_STATUS_DESC
NATURAL
OPERATOR_NAME_ASC
OPERATOR_NAME_DESC
Expand Down
34 changes: 34 additions & 0 deletions app/server/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -2042,6 +2042,18 @@
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "latestSubmittedRevisionStatus",
"description": "Returns the current status of an application, excluding application revisions that are not submitted yet (i.e. in draft)",
"args": [],
"type": {
"kind": "ENUM",
"name": "CiipApplicationRevisionStatus",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "operatorName",
"description": "This function is a wrapper to return operator_name from the organisation object",
Expand Down Expand Up @@ -5603,6 +5615,16 @@
},
"defaultValue": null
},
{
"name": "latestSubmittedRevisionStatus",
"description": "Filter by the object’s `latestSubmittedRevisionStatus` field.",
"type": {
"kind": "INPUT_OBJECT",
"name": "CiipApplicationRevisionStatusFilter",
"ofType": null
},
"defaultValue": null
},
{
"name": "not",
"description": "Negates the expression.",
Expand Down Expand Up @@ -13124,6 +13146,18 @@
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "LATEST_SUBMITTED_REVISION_STATUS_ASC",
"description": null,
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "LATEST_SUBMITTED_REVISION_STATUS_DESC",
"description": null,
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "NATURAL",
"description": null,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-- Deploy ggircs-portal:computed_columns/application_latest_submitted_revision_status to pg

begin;

create or replace function ggircs_portal.application_latest_submitted_revision_status(app ggircs_portal.application)
returns ggircs_portal.ciip_application_revision_status
as $$
select application_revision_status
from ggircs_portal.application_revision_status
where application_id = app.id
and version_number = (ggircs_portal.application_latest_submitted_revision(app::ggircs_portal.application)).version_number
order by id desc
limit 1;
$$ language sql stable;

comment on function ggircs_portal.application_latest_submitted_revision_status(ggircs_portal.application) is E'@sortable\nReturns the current status of an application, excluding application revisions that are not submitted yet (i.e. in draft)';

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

begin;

drop function ggircs_portal.application_latest_submitted_revision_status;

commit;
2 changes: 2 additions & 0 deletions schema/sqitch.plan
Original file line number Diff line number Diff line change
Expand Up @@ -366,3 +366,5 @@ swrs_functions/refresh_swrs_version_data [swrs_functions/refresh_swrs_version_da
database_functions/dd_enum_comparison_operators 2021-07-08T21:17:17Z Naomi Aro <naomi.aro@gov.bc.ca> # Enum operators for Metabase.
views/ciip_incentive_per_product 2021-07-15T18:36:33Z Matthieu Foucault <matthieu@button.is> # add ciip_incentive_per_product view
@v2.11.0 2021-07-20T17:12:11Z Matthieu Foucault <matthieu@button.is> # release v2.11.0

computed_columns/application_latest_submitted_revision_status 2021-07-21T20:38:31Z Matthieu Foucault <matthieu@button.is> # add a computed column to get an application revision's latest submitted revision status
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
begin;
set client_min_messages to warning;
create extension if not exists pgtap;

select plan(3);
truncate ggircs_portal.application restart identity cascade;
select test_helper.modify_triggers('disable');
reset client_min_messages;
select test_helper.mock_open_window(2019);
select ggircs_portal.create_application_mutation_chain(1);

select is(
(
select * from ggircs_portal.application_latest_submitted_revision_status((select row(application.*)::ggircs_portal.application from ggircs_portal.application where id = 1))
),
null,
'The latest submitted revision status should be null if the application was not submitted'
);

insert into ggircs_portal.application_revision_status(application_id, version_number, application_revision_status) values (1, 1, 'submitted');

select is(
(
select * from ggircs_portal.application_latest_submitted_revision_status((select row(application.*)::ggircs_portal.application from ggircs_portal.application where id = 1))
),
'submitted',
'The latest submitted revision status should be "submitted" if the application was submitted'
);

select ggircs_portal.create_application_revision_mutation_chain(1,1);

select is(
(
select * from ggircs_portal.application_latest_submitted_revision_status((select row(application.*)::ggircs_portal.application from ggircs_portal.application where id = 1))
),
'submitted',
'The latest submitted revision status should remain "submitted" if a new application revision was started'
);

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

begin;

select pg_get_functiondef('ggircs_portal.application_latest_submitted_revision_status(ggircs_portal.application)'::regprocedure);

rollback;

0 comments on commit ee2507c

Please sign in to comment.