Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SIMSBIOHUB-30: SIMS Home Page #1020

Merged
merged 62 commits into from
May 9, 2023
Merged
Show file tree
Hide file tree
Changes from 60 commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
cc0e1d6
SIMSBIOHUB-41: Create temporary, publicly-accessible home page in SIMS
curtisupshall Apr 26, 2023
4af112a
SIMSBIOHUB-30: Initial commit
curtisupshall Apr 26, 2023
c0a84c2
SIMSBIOHUB-30: Theming
curtisupshall Apr 26, 2023
f6f6029
SIMSBIOHUB-30: Add browser history
curtisupshall Apr 27, 2023
7107efe
SIMSBIOHUB-30: Created login stub
curtisupshall Apr 27, 2023
0575fc8
SIMSBIOHUB-30: Generate absolute redirect uri; Styling
curtisupshall Apr 27, 2023
f3fd1ec
SIMSBIOHUB-30: More styling
curtisupshall Apr 27, 2023
e99b3de
SIMSBIOHUB-30: Added tests
curtisupshall Apr 27, 2023
4ba1424
SIMSBIOHUB-30: clean-up
curtisupshall Apr 27, 2023
2f07448
Merge branch 'dev' into SIMSBIOHUB-30
curtisupshall Apr 27, 2023
3b44fa3
SIMSBIOHUB-30: Make fix
curtisupshall Apr 27, 2023
37b0982
Merge branch 'dev' into SIMSBIOHUB-30
curtisupshall Apr 27, 2023
9578ea3
SIMSBIOHUB-30: Create LoginPage component
curtisupshall Apr 28, 2023
bf1583b
Merge branch 'dev' into SIMSBIOHUB-30
curtisupshall Apr 28, 2023
da5dabc
Merge branch 'dev' into SIMSBIOHUB-30
KjartanE Apr 28, 2023
0693fc1
Merge branch 'SIMSBIOHUB-30' of github.com:bcgov/biohubbc into SIMSBI…
curtisupshall Apr 28, 2023
a4676c4
SIMSBIOHUB-30: Added test coverage
curtisupshall Apr 28, 2023
4b74930
SIMSBIOHUB-30: auth helper test coverage
curtisupshall Apr 28, 2023
7920f30
SIMSBIOHUB-30: Test coverage
curtisupshall May 1, 2023
a0cc501
SIMSBIOHUB-30: Test coverage 2
curtisupshall May 1, 2023
bc4e96c
SIMSBIOHUB-30: Moved Landing Page actions into its own component
curtisupshall May 1, 2023
bdbc325
SIMSBIOHUB-30: Begin creating admin activities repo+service files WIP
curtisupshall May 1, 2023
79f5241
Merge branch 'dev' into SIMSBIOHUB-30
curtisupshall May 1, 2023
490e15a
SIMSBIOHUB-30: Add todo comment
curtisupshall May 2, 2023
1202447
SIMSBIOHUB-30: WIP; Completed admnactvty service methods.
curtisupshall May 2, 2023
b34a576
SIMSBIOHUB-30: Complete impl of adminactvtys standing in frontend
curtisupshall May 2, 2023
18ca220
SIMSBIOHUB-30: Replace hero image
curtisupshall May 2, 2023
48d3e7c
SIMSBIOHUB-30: Account for different user roles on front page
curtisupshall May 2, 2023
47adc71
SIMSBIOHUB-30: Fix app route
curtisupshall May 2, 2023
4858fed
SIMSBIOHUB-30: Rename test file
curtisupshall May 2, 2023
9482ec5
SIMSBIOHUB-30: Frontend test boilerplate
curtisupshall May 2, 2023
b841036
SIMSBIOHUB-30: Begin fixing tests
curtisupshall May 2, 2023
126fe23
SIMSBIOHUB-30: Renamed admin activity classes
curtisupshall May 2, 2023
3571389
SIMSBIOHUB-30: More test cleanup
curtisupshall May 2, 2023
5c3eaf4
SIMSBIOHUB-30: More test boilerplate
curtisupshall May 2, 2023
03d22a3
SIMSBIOHUB-30: Update tests
curtisupshall May 3, 2023
58cf529
SIMSBIOHUB-30: Added frontend tests
curtisupshall May 4, 2023
d575855
SIMSBIOHUB-30: Added testing...
curtisupshall May 4, 2023
13a7000
SIMSBIOHUB-30: Added breakpoints to home page CSS
curtisupshall May 4, 2023
86c3d3a
SIMSBIOHUB-30: Alert styling
curtisupshall May 4, 2023
58dcd0d
Update API Tests.
NickPhura May 5, 2023
0bb8371
SIMSBIOHUB-30: Fix frontend tests
curtisupshall May 5, 2023
0c4fede
SIMSBIOHUB-30: Fix all remaining tests
curtisupshall May 5, 2023
3ada467
Merge branch 'SIMSBIOHUB-30' of https://github.com/bcgov/biohubbc int…
NickPhura May 5, 2023
6a8637b
Merge branch 'SIMSBIOHUB-30' of https://github.com/bcgov/biohubbc int…
NickPhura May 5, 2023
e3f0b80
SIMSBIOHUB-30: Lint fix; added tests
curtisupshall May 5, 2023
e4bde92
SIMSBIOHUB-30: Code smells
curtisupshall May 5, 2023
6cdda1a
SIMSBIOHUB-30: Remove old test register link
curtisupshall May 5, 2023
e159741
Merge branch 'dev' into SIMSBIOHUB-30
curtisupshall May 5, 2023
6a10bd2
SIMSBIOHUB-30: Lint fix
curtisupshall May 5, 2023
68b54db
SIMSBIOHUB-30: Access denied wording change
curtisupshall May 5, 2023
b6889c4
Add administrative activity repo zod types
NickPhura May 5, 2023
cffdf9a
Merge branch 'SIMSBIOHUB-30' of https://github.com/bcgov/biohubbc int…
NickPhura May 5, 2023
30e7024
SIMSBIOHUB-30: Make fix
curtisupshall May 8, 2023
8c970e5
SIMSBIOHUB-30: Update snapshots
curtisupshall May 8, 2023
b8ab642
UI Updates
jeznorth May 8, 2023
474042d
Merge branch 'SIMSBIOHUB-30' of https://github.com/bcgov/biohubbc int…
jeznorth May 8, 2023
2230f77
Minor Breakpoint Fixes
jeznorth May 8, 2023
c112713
Minor Content Update
jeznorth May 8, 2023
8f07c92
SIMSBIOHUB-30: Test fix
curtisupshall May 8, 2023
27386ce
Merge branch 'dev' into SIMSBIOHUB-30
curtisupshall May 9, 2023
20959ec
SIMSBIOHUB-30: Fix tests
curtisupshall May 9, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions api/src/constants/administrative-activity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export enum ADMINISTRATIVE_ACTIVITY_TYPE {
SYSTEM_ACCESS = 'System Access'
}

export enum ADMINISTRATIVE_ACTIVITY_STATUS_TYPE {
PENDING = 'Pending',
ACTIONED = 'Actioned',
REJECTED = 'Rejected'
}
8 changes: 4 additions & 4 deletions api/src/constants/notifications.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { IgcNotifyGenericMessage } from '../services/gcnotify-service';

//admin email template for new access requests
export const ACCESS_REQUEST_ADMIN_EMAIL: IgcNotifyGenericMessage = {
// Email template for an admin, informing them that a new access request has been submitted that requires their attention.
export const ACCESS_REQUEST_ADMIN_NOTIFICATION_EMAIL: IgcNotifyGenericMessage = {
subject: 'SIMS: A request for access has been received.',
header: 'A request for access to the Species Inventory Management System has been submitted.',
body1: `To review the request,`,
body2: 'This is an automated message from the BioHub Species Inventory Management System',
footer: ''
};

//admin email template for approval of access requests
export const ACCESS_REQUEST_APPROVAL_ADMIN_EMAIL: IgcNotifyGenericMessage = {
// Email template for an access request submitter, informing them that their access request has been approved.
export const ACCESS_REQUEST_SUBMITTER_APPROVAL_EMAIL: IgcNotifyGenericMessage = {
subject: 'SIMS: Your request for access has been approved.',
header: 'Your request for access to the Species Inventory Management System has been approved.',
body1: `To access the site, `,
Expand Down
12 changes: 0 additions & 12 deletions api/src/openapi/schemas/administrative-activity.test.ts

This file was deleted.

25 changes: 0 additions & 25 deletions api/src/openapi/schemas/administrative-activity.ts

This file was deleted.

40 changes: 23 additions & 17 deletions api/src/paths/administrative-activities.test.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,37 @@
import Ajv from 'ajv';
import chai, { expect } from 'chai';
import { describe } from 'mocha';
import { QueryResult } from 'pg';
import sinon from 'sinon';
import sinonChai from 'sinon-chai';
import SQL from 'sql-template-strings';
import * as db from '../database/db';
import administrative_queries from '../queries/administrative-activity';
import { getMockDBConnection, getRequestHandlerMocks } from '../__mocks__/db';
import * as administrative_activities from './administrative-activities';
import { GET, getAdministrativeActivities } from './administrative-activities';

chai.use(sinonChai);

describe('openapi schema', () => {
const ajv = new Ajv();

describe('GET', () => {
it('is valid openapi v3 schema', () => {
expect(ajv.validateSchema((GET.apiDoc as unknown) as object)).to.be.true;
});
});
});

describe('getAdministrativeActivities', () => {
afterEach(() => {
sinon.restore();
});

it('should return the rows on success (empty)', async () => {
sinon.stub(administrative_queries, 'getAdministrativeActivitiesSQL').returns(SQL`some`);

const mockQuery = sinon.stub().resolves({
rows: null,
rowCount: 0
const mockDBConnection = getMockDBConnection({
sql: async () => {
return ({ rowCount: 0, rows: [] } as any) as Promise<QueryResult<any>>;
}
});

const mockDBConnection = getMockDBConnection({ query: mockQuery });

sinon.stub(db, 'getDBConnection').returns(mockDBConnection);

const { mockReq, mockRes, mockNext } = getRequestHandlerMocks();
Expand All @@ -34,7 +41,7 @@ describe('getAdministrativeActivities', () => {
status: ['status']
};

const requestHandler = administrative_activities.getAdministrativeActivities();
const requestHandler = getAdministrativeActivities();

await requestHandler(mockReq, mockRes, mockNext);

Expand All @@ -54,13 +61,12 @@ describe('getAdministrativeActivities', () => {
create_date: '2020/04/04'
};

const mockQuery = sinon.stub().resolves({
rows: [data],
rowCount: 1
const mockDBConnection = getMockDBConnection({
sql: async () => {
return ({ rowCount: 1, rows: [data] } as any) as Promise<QueryResult<any>>;
}
});

const mockDBConnection = getMockDBConnection({ query: mockQuery });

sinon.stub(db, 'getDBConnection').returns(mockDBConnection);

const { mockReq, mockRes, mockNext } = getRequestHandlerMocks();
Expand All @@ -70,7 +76,7 @@ describe('getAdministrativeActivities', () => {
status: ['status']
};

const requestHandler = administrative_activities.getAdministrativeActivities();
const requestHandler = getAdministrativeActivities();

await requestHandler(mockReq, mockRes, mockNext);

Expand Down
32 changes: 13 additions & 19 deletions api/src/paths/administrative-activities.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import { RequestHandler } from 'express';
import { Operation } from 'express-openapi';
import {
ADMINISTRATIVE_ACTIVITY_STATUS_TYPE,
ADMINISTRATIVE_ACTIVITY_TYPE
} from '../constants/administrative-activity';
import { SYSTEM_ROLE } from '../constants/roles';
import { getDBConnection } from '../database/db';
import { queries } from '../queries/queries';
import { authorizeRequestHandler } from '../request-handlers/security/authorization';
import { AdministrativeActivityService } from '../services/administrative-activity-service';
import { getLogger } from '../utils/logger';

const defaultLog = getLogger('paths/administrative-activities');
Expand All @@ -22,18 +26,8 @@ export const GET: Operation = [
getAdministrativeActivities()
];

export enum ADMINISTRATIVE_ACTIVITY_TYPE {
SYSTEM_ACCESS = 'System Access'
}

export const getAllAdministrativeActivityTypes = (): string[] => Object.values(ADMINISTRATIVE_ACTIVITY_TYPE);

export enum ADMINISTRATIVE_ACTIVITY_STATUS_TYPE {
PENDING = 'Pending',
ACTIONED = 'Actioned',
REJECTED = 'Rejected'
}

export const getAllAdministrativeActivityStatusTypes = (): string[] =>
Object.values(ADMINISTRATIVE_ACTIVITY_STATUS_TYPE);

Expand Down Expand Up @@ -149,25 +143,25 @@ export function getAdministrativeActivities(): RequestHandler {
const connection = getDBConnection(req['keycloak_token']);

try {
// Only search for specified types if provided, otherwise search all types
const administrativeActivityTypes = (req.query.type as string[]) || getAllAdministrativeActivityTypes();

// Only search for specified status types if provided, otherwise search all status types
const administrativeActivityStatusTypes: string[] =
(req.query.status as string[]) || getAllAdministrativeActivityStatusTypes();

const sqlStatement = queries.administrativeActivity.getAdministrativeActivitiesSQL(
await connection.open();

const administrativeActivityService = new AdministrativeActivityService(connection);

const response = await administrativeActivityService.getAdministrativeActivities(
administrativeActivityTypes,
administrativeActivityStatusTypes
);

await connection.open();

const response = await connection.query(sqlStatement.text, sqlStatement.values);

await connection.commit();

const result = (response && response.rowCount && response.rows) || [];

return res.status(200).json(result);
return res.status(200).json(response);
} catch (error) {
defaultLog.error({ label: 'getAdministrativeActivities', message: 'error', error });
throw error;
Expand Down
Loading