From ea0a4ecb43138ee12abac03f96b2218f3867185a Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Fri, 11 Aug 2023 10:12:10 -0400 Subject: [PATCH 01/10] fix hot relaoding --- Dockerfile | 46 +++++++---------------------------------- Dockerfile.dev | 39 +++++++---------------------------- dockerRunnerDev.sh | 33 ++++++++++++++++++------------ frontend/.env | 2 ++ frontend/env.json | 51 ---------------------------------------------- 5 files changed, 36 insertions(+), 135 deletions(-) create mode 100644 frontend/.env delete mode 100644 frontend/env.json diff --git a/Dockerfile b/Dockerfile index 6378271..67c0f04 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,49 +1,17 @@ -# OVERVIEW: This is the Dockerfile for a multi-stage build of the CDS Authoring -# Tool. A multi-stage approach was used to keep the overall image size low by -# including only the layers needed at runtime in the final image. For more -# info see: https://docs.docker.com/develop/develop-images/multistage-build/ - -############################################################################### -# STAGE 0: base -# - Setup base image from which most others derive. This allows for a single -# place to declare the versioned node image we use and any other commands -# common to all (or most?) environments. -############################################################################### - -FROM node:18-alpine as base +FROM node:14-alpine ENV NODE_ENV production -# ADD https://gitlab.mitre.org/mitre-scripts/mitre-pki/raw/master/os_scripts/install_certs.sh /tmp/install_certs.sh -# RUN chmod a+x /tmp/install_certs.sh && /tmp/install_certs.sh && rm /tmp/install_certs.sh - -# RUN apk update -# RUN apk upgrade openssl -# First copy just the package.json, package-lock.json, and local dependencies so that -# if they have not changed, we can use cached node_modules instead of -# redownloading them all. -COPY ./ /usr/src/app/ -WORKDIR /usr/src/app/backend - - +WORKDIR /home/node/app +COPY --chown=node:node . . +WORKDIR /home/node/app/backend RUN npm install - -RUN ls -la - - - -WORKDIR /usr/src/app/frontend +WORKDIR /home/node/app/frontend RUN npm install +WORKDIR /home/node/app - -RUN npm install -g pm2@4.4.1 -WORKDIR /usr/src/app -RUN chown -R node:node . -ENV PORT 5050 +RUN npm install pm2 -g EXPOSE 5050 EXPOSE 5051 -USER node - - CMD [ "pm2-docker", "pm2.config.js" ] \ No newline at end of file diff --git a/Dockerfile.dev b/Dockerfile.dev index 93659e8..436f2df 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,41 +1,16 @@ -# OVERVIEW: This is the Dockerfile for a multi-stage build of the CDS Authoring -# Tool. A multi-stage approach was used to keep the overall image size low by -# including only the layers needed at runtime in the final image. For more -# info see: https://docs.docker.com/develop/develop-images/multistage-build/ - -############################################################################### -# STAGE 0: base -# - Setup base image from which most others derive. This allows for a single -# place to declare the versioned node image we use and any other commands -# common to all (or most?) environments. -############################################################################### - -FROM node:14-alpine as base - - -# First copy just the package.json, package-lock.json, and local dependencies so that -# if they have not changed, we can use cached node_modules instead of -# redownloading them all. -COPY ./ /usr/src/app/ -WORKDIR /usr/src/app/backend - +FROM node:14-alpine +WORKDIR /home/node/app +COPY --chown=node:node . . +WORKDIR /home/node/app/backend RUN npm install -RUN npm run build - -WORKDIR /usr/src/app/frontend +WORKDIR /home/node/app/frontend RUN npm install +WORKDIR /home/node/app - - -RUN npm install -g pm2@4.4.1 -WORKDIR /usr/src/app -RUN chown -R node:node . -ENV PORT 5050 +RUN npm install pm2 -g EXPOSE 5050 EXPOSE 5051 -USER node - CMD ./dockerRunnerDev.sh \ No newline at end of file diff --git a/dockerRunnerDev.sh b/dockerRunnerDev.sh index 59cd204..a1229c1 100755 --- a/dockerRunnerDev.sh +++ b/dockerRunnerDev.sh @@ -1,26 +1,26 @@ #!/bin/sh # Handle closing application on signal interrupt (ctrl + c) -trap 'kill $CONTINUOUS_INSTALL_PID $SERVER_PID; gradle --stop; exit' INT +trap 'kill $CONTINUOUS_INSTALL_PID $SERVER_PID $BACKEND_SERVER_PID; exit' INT mkdir logs # Reset log file content for new application boot -echo "*** Logs for continuous installer ***" > ./frontend/logs/installer.log -echo "*** Logs for 'npm run start' ***" > ./frontent/logs/runner.log +echo "*** Logs for continuous frontend installer ***" > ./frontend/logs/installer.log +echo "*** Logs for frontend 'npm run start' ***" > ./frontent/logs/runner.log -echo "*** Logs for continuous installer ***" > ./backend/logs/installer.log -echo "*** Logs for 'npm run start' ***" > ./backend/logs/runner.log +echo "*** Logs for continuous backend installer ***" > ./backend/logs/installer.log +echo "*** Logs for backend 'npm run start' ***" > ./backend/logs/runner.log # Print that the application is starting in watch mode echo "starting application in watch mode..." # Start the continious build listener process -echo "starting continuous installer..." +echo "starting continuous installers..." cd frontend -npm install | tee ./logs/installer.log +npm install | tee ./frontend/logs/installer.log cd ../backend -npm install | tee ./logs/installer.log +npm install | tee ./backend/logs/installer.log cd .. ( package_modify_time=$(stat -c %Y frontend/package.json) @@ -36,13 +36,16 @@ do if [[ "$package_modify_time" != "$new_package_modify_time" ]] || [[ "$package_lock_modify_time" != "$new_package_lock_modify_time" ]] || [[ "$backend_lock_modify_time" != "$new_backend_lock_modify_time" ]]|| [[ "$backend_modify_time" != "$new_backend_modify_time" ]] then - echo "running npm install..." + echo "running frontent npm install..." cd frontend npm install | tee ./logs/installer.log - cd ../backend + cd .. + elif [[ "$backend_lock_modify_time" != "$new_backend_lock_modify_time" ]]|| [[ "$backend_modify_time" != "$new_backend_modify_time" ]] + then + echo "running backend npm install..." + cd backend npm install | tee ./logs/installer.log cd .. - pm2-docker pm2.config.dev.js fi package_modify_time=$new_package_modify_time @@ -53,10 +56,14 @@ do done ) & CONTINUOUS_INSTALL_PID=$! # Start server process once initial build finishes -( pm2-docker pm2.config.js ) & SERVER_PID=$! +cd frontend +( npm run start | tee ./frontent/logs/runner.log ) & SERVER_PID=$! + +cd ../backend +( npm run start | tee ./backend/logs/runner.log ) & BACKEND_SERVER_PID=$! # Handle application background process exiting -wait $CONTINUOUS_INSTALL_PID $SERVER_PID +wait $CONTINUOUS_INSTALL_PID $SERVER_PID $BACKEND_SERVER_PID EXIT_CODE=$? echo "application exited with exit code $EXIT_CODE..." diff --git a/frontend/.env b/frontend/.env new file mode 100644 index 0000000..7e845eb --- /dev/null +++ b/frontend/.env @@ -0,0 +1,2 @@ +PORT=5050 +REACT_APP_PIMS_BACKEND_PORT=5051 \ No newline at end of file diff --git a/frontend/env.json b/frontend/env.json deleted file mode 100644 index 172333d..0000000 --- a/frontend/env.json +++ /dev/null @@ -1,51 +0,0 @@ -{ -"BACKEND_PORT" : { - "type" :"number", - "default" : 5051 -}, -"ALLOWED_ORIGIN" : { - "type" : "object", - "default" : ["http://localhost:3000", "https://localhost:3000/", "http://localhost:3005", "https://localhost:3005/", "http://localhost:5050", "https://localhost:5050/", "http://localhost:4040", "https://localhost:4040/"] -}, -"MONGO_USERNAME": { - "type" : "string", - "default" : "rems-admin-pims-root" -}, - -"MONGO_PASSWORD" :{ - "type" : "string", - "default" : "rems-admin-pims-password" -}, - -"MONGO_URL" : { - "type" : "string", - "default" : "mongodb://localhost:27017/pims" -}, - -"AUTH_SOURCE" :{ - "type" : "string", - "default" : "admin" -}, - -"REMS_ADMIN_BASE" : { - "type" : "string", - "default" : "http://localhost:8090" -}, - -"PORT" : { - "type" :"number", - "default" : 5050 -}, -"SSL_KEY_FILE": { - "type": "string", - "default": "server.key" -}, -"SSL_CRT_FILE": { - "type": "string", - "default": "server.cert" -}, -"USE_HTTPS": { - "type": "boolean", - "default": false -} -} From 50495b2a4633609f61cb8a268b55d95cf73ca8cd Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Fri, 11 Aug 2023 11:22:14 -0400 Subject: [PATCH 02/10] dockerRunner updates --- .gitignore | 6 +++++- dockerRunnerDev.sh | 21 +++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 91b4877..ba03303 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,8 @@ backend/dist .env.development.local .env.test.local .env.production.local +.env +env.json dist npm-debug.log* @@ -30,4 +32,6 @@ frontend/server.key frontend/server.cert backend/server.key -backend/server.cert \ No newline at end of file +backend/server.cert + +logs \ No newline at end of file diff --git a/dockerRunnerDev.sh b/dockerRunnerDev.sh index a1229c1..02a0cfd 100755 --- a/dockerRunnerDev.sh +++ b/dockerRunnerDev.sh @@ -4,12 +4,13 @@ trap 'kill $CONTINUOUS_INSTALL_PID $SERVER_PID $BACKEND_SERVER_PID; exit' INT mkdir logs + # Reset log file content for new application boot -echo "*** Logs for continuous frontend installer ***" > ./frontend/logs/installer.log -echo "*** Logs for frontend 'npm run start' ***" > ./frontent/logs/runner.log +echo "*** Logs for continuous frontend installer ***" > ./logs/frontend_installer.log +echo "*** Logs for frontend 'npm run start' ***" > ./logs/frontend_runner.log -echo "*** Logs for continuous backend installer ***" > ./backend/logs/installer.log -echo "*** Logs for backend 'npm run start' ***" > ./backend/logs/runner.log +echo "*** Logs for continuous backend installer ***" > ./logs/backend_installer.log +echo "*** Logs for backend 'npm run start' ***" > ./logs/backend_runner.log # Print that the application is starting in watch mode echo "starting application in watch mode..." @@ -18,9 +19,9 @@ echo "starting application in watch mode..." echo "starting continuous installers..." cd frontend -npm install | tee ./frontend/logs/installer.log +npm install | tee ./logs/frontend_installer.log cd ../backend -npm install | tee ./backend/logs/installer.log +npm install | tee ./logs/backend_installer.log cd .. ( package_modify_time=$(stat -c %Y frontend/package.json) @@ -38,13 +39,13 @@ do then echo "running frontent npm install..." cd frontend - npm install | tee ./logs/installer.log + npm install | tee ./logs/frontend_installer.log cd .. elif [[ "$backend_lock_modify_time" != "$new_backend_lock_modify_time" ]]|| [[ "$backend_modify_time" != "$new_backend_modify_time" ]] then echo "running backend npm install..." cd backend - npm install | tee ./logs/installer.log + npm install | tee ./logs/backend_installer.log cd .. fi @@ -57,10 +58,10 @@ done ) & CONTINUOUS_INSTALL_PID=$! # Start server process once initial build finishes cd frontend -( npm run start | tee ./frontent/logs/runner.log ) & SERVER_PID=$! +( npm run start | tee ./logs/frontend_runner.log ) & SERVER_PID=$! cd ../backend -( npm run start | tee ./backend/logs/runner.log ) & BACKEND_SERVER_PID=$! +( npm run start | tee ./logs/backend_runner.log ) & BACKEND_SERVER_PID=$! # Handle application background process exiting wait $CONTINUOUS_INSTALL_PID $SERVER_PID $BACKEND_SERVER_PID From 70a05cbe878c8c3429d538bc02536a58ed3df3e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Aug 2023 04:48:54 +0000 Subject: [PATCH 03/10] Bump @adobe/css-tools from 4.1.0 to 4.3.1 in /frontend Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.1.0 to 4.3.1. - [Changelog](https://github.com/adobe/css-tools/blob/main/History.md) - [Commits](https://github.com/adobe/css-tools/commits) --- updated-dependencies: - dependency-name: "@adobe/css-tools" dependency-type: indirect ... Signed-off-by: dependabot[bot] --- frontend/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 626f03b..51ff208 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -56,9 +56,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.1.0.tgz", - "integrity": "sha512-mMVJ/j/GbZ/De4ZHWbQAQO1J6iVnjtZLc9WEdkUQb8S/Bu2cAF2bETXUgMAdvMG3/ngtKmcNBe+Zms9bg6jnQQ==" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", + "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==" }, "node_modules/@ampproject/remapping": { "version": "2.2.0", From 3e11d852cea78346a5d6855f9e2490be14130b6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Aug 2023 22:34:59 +0000 Subject: [PATCH 04/10] Bump mongodb from 5.5.0 to 5.8.0 in /backend Bumps [mongodb](https://github.com/mongodb/node-mongodb-native) from 5.5.0 to 5.8.0. - [Release notes](https://github.com/mongodb/node-mongodb-native/releases) - [Changelog](https://github.com/mongodb/node-mongodb-native/blob/v5.8.0/HISTORY.md) - [Commits](https://github.com/mongodb/node-mongodb-native/compare/v5.5.0...v5.8.0) --- updated-dependencies: - dependency-name: mongodb dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- backend/package-lock.json | 32 +++++++++++++++++++++++++------- backend/package.json | 2 +- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index cdc3031..b997dcc 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -42,7 +42,7 @@ "eslint-plugin-prettier": "^4.2.1", "json-diff": "^0.9.0", "mocha": "^10.2.0", - "mongodb": "5.5.0", + "mongodb": "5.8.0", "mongodb-memory-server": "^8.12.1", "nock": "^13.2.9", "nodemon": "^2.0.20", @@ -815,6 +815,16 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", + "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "dev": true, + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4342,12 +4352,12 @@ } }, "node_modules/mongodb": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.5.0.tgz", - "integrity": "sha512-XgrkUgAAdfnZKQfk5AsYL8j7O99WHd4YXPxYxnh8dZxD+ekYWFRA3JktUsBnfg+455Smf75/+asoU/YLwNGoQQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.8.0.tgz", + "integrity": "sha512-xx4CXmxcj3bNe7iGBlhntVrUqrNARYhUZteXaz4epEESv4oXD/FONAovcyoCaEffdYlw25Yz284OxMfpnPLlgQ==", "dev": true, "dependencies": { - "bson": "^5.3.0", + "bson": "^5.4.0", "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" }, @@ -4355,10 +4365,12 @@ "node": ">=14.20.1" }, "optionalDependencies": { - "saslprep": "^1.0.3" + "@mongodb-js/saslprep": "^1.1.0" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.0.0", + "kerberos": "^1.0.0 || ^2.0.0", "mongodb-client-encryption": ">=2.3.0 <3", "snappy": "^7.2.2" }, @@ -4366,6 +4378,12 @@ "@aws-sdk/credential-providers": { "optional": true }, + "@mongodb-js/zstd": { + "optional": true + }, + "kerberos": { + "optional": true + }, "mongodb-client-encryption": { "optional": true }, diff --git a/backend/package.json b/backend/package.json index 05c4cb8..9ae70f5 100644 --- a/backend/package.json +++ b/backend/package.json @@ -37,7 +37,7 @@ "eslint-plugin-prettier": "^4.2.1", "json-diff": "^0.9.0", "mocha": "^10.2.0", - "mongodb": "5.5.0", + "mongodb": "5.8.0", "mongodb-memory-server": "^8.12.1", "nock": "^13.2.9", "nodemon": "^2.0.20", From 2970ea6463e5e9165c0a41041932ef256d2b0de6 Mon Sep 17 00:00:00 2001 From: Ariel Virgulto Date: Thu, 31 Aug 2023 22:29:43 -0400 Subject: [PATCH 05/10] Update Order card to only show no orders if fully loaded and orders is empty --- frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx index de771e9..78936e8 100644 --- a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx +++ b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx @@ -45,6 +45,7 @@ interface DoctorOrder { const OrderCard = (props: any) => { const [doctorOrder, setDoctorOrders] = useState([]); + const [isLoading, setIsLoading] = useState(true); //remove all doctorOrders const deleteAll = async () => { @@ -64,12 +65,16 @@ const OrderCard = (props: any) => { .get(url) .then(function (response) { const allDoctorOrders = response.data; + setIsLoading(false); setDoctorOrders(allDoctorOrders); }) - .catch(error => console.error(`Error: ${error}`)); + .catch(error => { + setIsLoading(false); + console.error(`Error: ${error}`); + }); }; - if (doctorOrder.length < 1) { + if (doctorOrder.length < 1 && !isLoading) { return (

No orders yet.

From 86adb3bf4c9096f53d9d4a6c199a8cc674929632 Mon Sep 17 00:00:00 2001 From: Ariel Virgulto Date: Wed, 6 Sep 2023 10:36:42 -0400 Subject: [PATCH 06/10] Add async/await for doctors order api call --- frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx index 78936e8..25d1b7d 100644 --- a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx +++ b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.tsx @@ -60,8 +60,8 @@ const OrderCard = (props: any) => { getAllDoctorOrders(); }, []); - const getAllDoctorOrders = () => { - axios + const getAllDoctorOrders = async () => { + await axios .get(url) .then(function (response) { const allDoctorOrders = response.data; From 24366298b9d3d4b8c354651c945449fb663e9a03 Mon Sep 17 00:00:00 2001 From: Ariel Virgulto Date: Wed, 6 Sep 2023 10:57:43 -0400 Subject: [PATCH 07/10] adding async/await in tests --- frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx | 4 ++-- .../views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx | 4 ++-- .../views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx b/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx index 3004e37..251d716 100644 --- a/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx +++ b/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx @@ -2,8 +2,8 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; import NewOrders from './NewOrders'; -test('renders NewOrders', () => { +test('renders NewOrders', async () => { render(); - const linkElement = screen.getByText(/NewOrders/i); + const linkElement = await screen.getByText(/NewOrders/i); expect(linkElement).toBeInTheDocument(); }); \ No newline at end of file diff --git a/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx b/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx index f7dbf20..f4d7d31 100644 --- a/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx +++ b/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx @@ -2,8 +2,8 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; import PickedUpOrders from './PickedUpOrders'; -test('renders PickedUpOrders', () => { +test('renders PickedUpOrders', async () => { render(); - const linkElement = screen.getByText(/PickedUpOrders/i); + const linkElement = await screen.getByText(/PickedUpOrders/i); expect(linkElement).toBeInTheDocument(); }); \ No newline at end of file diff --git a/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx b/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx index 5cd0e61..fc5a5dd 100644 --- a/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx +++ b/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx @@ -2,8 +2,8 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; import VerifiedOrders from './VerifiedOrders'; -test('renders VerifiedOrders', () => { +test('renders VerifiedOrders', async () => { render(); - const linkElement = screen.getByText(/VerifiedOrders/i); + const linkElement = await screen.getByText(/VerifiedOrders/i); expect(linkElement).toBeInTheDocument(); }); \ No newline at end of file From 4f676c5ad1be6cdac04a8a5db866940c8e95f47c Mon Sep 17 00:00:00 2001 From: Ariel Virgulto Date: Wed, 6 Sep 2023 12:09:55 -0400 Subject: [PATCH 08/10] Updates to mocking api calls --- .../DoctorOrders/NewOrders/NewOrders.test.tsx | 19 ++++-- .../DoctorOrders/OrderCard/OrderCard.test.tsx | 63 +++++++++++++++++-- .../PickedUpOrders/PickedUpOrders.test.tsx | 19 ++++-- .../VerifiedOrders/VerifiedOrders.test.tsx | 22 +++++-- 4 files changed, 102 insertions(+), 21 deletions(-) diff --git a/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx b/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx index 251d716..51dd590 100644 --- a/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx +++ b/frontend/src/views/DoctorOrders/NewOrders/NewOrders.test.tsx @@ -1,9 +1,18 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen, waitFor } from '@testing-library/react'; import NewOrders from './NewOrders'; +import axios from 'axios'; -test('renders NewOrders', async () => { - render(); - const linkElement = await screen.getByText(/NewOrders/i); - expect(linkElement).toBeInTheDocument(); +jest.mock('axios'); +describe('', () => { + + it('renders the order card with no doctor orders', async () => { + axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: [] })); + render(); + + await waitFor(() => { + const linkElement = screen.getByText(/NewOrders/i); + expect(linkElement).toBeInTheDocument(); + }); + }); }); \ No newline at end of file diff --git a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.test.tsx b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.test.tsx index 90bd1eb..f7a1888 100644 --- a/frontend/src/views/DoctorOrders/OrderCard/OrderCard.test.tsx +++ b/frontend/src/views/DoctorOrders/OrderCard/OrderCard.test.tsx @@ -1,9 +1,62 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen, waitFor } from '@testing-library/react'; import OrderCard from './OrderCard'; +import axios from 'axios'; -test.skip('renders Status', () => { - render(); - const linkElement = screen.getByText("Total"); - expect(linkElement).toBeInTheDocument(); +const doctorOrders = [{caseNumber: '1694010494795', + dispenseStatus: 'Pending', + doctorContact: '716-873-1557', + doctorEmail: 'jane.betty@myhospital.com', + doctorID: '1122334455', + doctorName: 'Dr. Jane Doe', + drugNames:'Turalio 200 MG Oral Capsule', + drugNdcCode: '65597-402-20', + drugPrice: 200, + metRequirements: [], + patientCity: 'Winterfell', + patientCountry: 'US', + patientDOB: '1996-06-01', + patientFirstName: 'Jon', + patientLastName: 'Snow', + patientName: 'Jon Snow', + patientPostalCode: '00008', + patientStateProvince: 'Westeros', + pickupDate: 'Tue Dec 13 2022', + quanitities: '90', + rxDate: '2020-07-11', + simpleDrugName: 'Turalio', + total: 1800}]; + +jest.mock('axios'); + +describe('', () => { + it('renders the order card with no doctor orders', async () => { + axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: [] })); + render(); + + await waitFor(() => { + expect(screen.getByRole('heading', { name: /no orders yet\./i })).toBeInTheDocument(); + }); + }); + + it('renders the order card and any doctor orders', async () => { + axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: doctorOrders })); + render(); + + await waitFor(() => { + expect(screen.getByText(/Jon Snow/i)).toBeInTheDocument(); + expect(screen.getByText(/1996/i)).toBeInTheDocument(); + expect(screen.getByText(/Turalio/i)).toBeInTheDocument(); + expect(screen.getByText(/Pending/i)).toBeInTheDocument(); + // expect(screen.getByTestId('quantities')).toBeInTheDocument(); + // expect(screen.getByTestId('drugPrice')).toBeInTheDocument(); + // expect(screen.getByTestId('total')).toBeInTheDocument(); + // expect(screen.getByTestId('doctorName')).toBeInTheDocument(); + // expect(screen.getByTestId('doctorID')).toBeInTheDocument(); + // expect(screen.getByTestId('doctorContact')).toBeInTheDocument(); + // expect(screen.getByTestId('doctorEmail')).toBeInTheDocument(); + // expect(screen.getByTestId('pickupDate')).toBeInTheDocument(); + expect(screen.getByRole('button', { name: /remove all/i })).toBeInTheDocument(); + }); + }); }); \ No newline at end of file diff --git a/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx b/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx index f4d7d31..4b44995 100644 --- a/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx +++ b/frontend/src/views/DoctorOrders/PickedUpOrders/PickedUpOrders.test.tsx @@ -1,9 +1,18 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen, waitFor } from '@testing-library/react'; import PickedUpOrders from './PickedUpOrders'; +import axios from 'axios'; -test('renders PickedUpOrders', async () => { - render(); - const linkElement = await screen.getByText(/PickedUpOrders/i); - expect(linkElement).toBeInTheDocument(); +jest.mock('axios'); +describe('', () => { + + it('renders the order card with no doctor orders', async () => { + axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: [] })); + render(); + + await waitFor(() => { + const linkElement = screen.getByText(/PickedUpOrders/i); + expect(linkElement).toBeInTheDocument(); + }); + }); }); \ No newline at end of file diff --git a/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx b/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx index fc5a5dd..2a4b8ae 100644 --- a/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx +++ b/frontend/src/views/DoctorOrders/VerifiedOrders/VerifiedOrders.test.tsx @@ -1,9 +1,19 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen, waitFor } from '@testing-library/react'; import VerifiedOrders from './VerifiedOrders'; +import axios from 'axios'; -test('renders VerifiedOrders', async () => { - render(); - const linkElement = await screen.getByText(/VerifiedOrders/i); - expect(linkElement).toBeInTheDocument(); -}); \ No newline at end of file + +jest.mock('axios'); +describe('', () => { + + it('renders the order card with no doctor orders', async () => { + axios.get = jest.fn().mockImplementationOnce(() => Promise.resolve({ data: [] })); + render(); + + await waitFor(() => { + const linkElement = screen.getByText(/VerifiedOrders/i); + expect(linkElement).toBeInTheDocument(); + }); + }); +}); From f8edbf9fd84ad5a8a71b69ac2c334d5a9659d938 Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Fri, 8 Sep 2023 15:45:55 -0400 Subject: [PATCH 09/10] fixed fixing the broken hot reloading --- .gitignore | 2 +- backend/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ba03303..ffa6af6 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,4 @@ frontend/server.cert backend/server.key backend/server.cert -logs \ No newline at end of file +logs diff --git a/backend/package.json b/backend/package.json index 9ae70f5..dd6553f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -48,7 +48,7 @@ "typescript": "^4.9.3" }, "scripts": { - "start": "tsc && nodemon ./dist/server.js", + "start": "ts-node-dev src/server.js", "test": "mocha", "build": "tsc", "lint": "tsc && eslint \"**/*.{js,ts}\"", From 7dace1eff543eca7461c48bfd877b9fe760636f1 Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Fri, 8 Sep 2023 16:16:31 -0400 Subject: [PATCH 10/10] fixed the file extension --- backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/package.json b/backend/package.json index dd6553f..fe8e3ab 100644 --- a/backend/package.json +++ b/backend/package.json @@ -48,7 +48,7 @@ "typescript": "^4.9.3" }, "scripts": { - "start": "ts-node-dev src/server.js", + "start": "ts-node-dev src/server.ts", "test": "mocha", "build": "tsc", "lint": "tsc && eslint \"**/*.{js,ts}\"",