From cd1cedad693c036c2d8dd083cfa995e64e1017d5 Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Mon, 5 Aug 2024 12:09:38 -0700 Subject: [PATCH 01/17] add debug staging api to docs --- docs/debug-issues-with-staging-api.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 docs/debug-issues-with-staging-api.md diff --git a/docs/debug-issues-with-staging-api.md b/docs/debug-issues-with-staging-api.md new file mode 100644 index 000000000..e80a2ac32 --- /dev/null +++ b/docs/debug-issues-with-staging-api.md @@ -0,0 +1,26 @@ +### Setting Up Environment Variables for Local Development to the Staging API + +When you’re working locally, you can point your local admin repo to the staging API and use that to help debug +issues with the staging data set. To do this, you’ll need to modify your .env file for the admin project and +include the following new environment variables: + +- `ADMIN_CLIENT_SECRET` +- `ADMIN_CLIENT_USERNAME` +- `DANGEROUS_SALT` +- `SECRET_KEY` + +Additionally, update `API_HOST_NAME` and `NOTIFY_ENVIRONMENT`: + +1. Change `API_HOST_NAME` to `API_HOST_NAME=https://notify-api-staging.app.cloud.gov` +2. Change `NOTIFY_ENVIRONMENT` to `NOTIFY_ENVIRONMENT=staging` + +### Retrieving Environment Variables for Staging + +You can retrieve the values needed for these by using the cf CLI (Cloud Foundry CLI tool) and making sure +you’re targeting the notify-staging space. + +1. `cf login -a [api.fr.cloud.gov](http://api.fr.cloud.gov/) --sso` +2. select `notify-staging` +3. `cf env notify-admin-staging` + +By pointing your local environment to staging, it should mirror what's in staging. From 89eb24c795070ef3c38dc292e9aa3a659267ed9b Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 6 Aug 2024 08:37:43 -0700 Subject: [PATCH 02/17] add ds.baseline --- .ds.baseline | 4 ++-- .github/workflows/checks.yml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.ds.baseline b/.ds.baseline index 6d2034588..e397d83f8 100644 --- a/.ds.baseline +++ b/.ds.baseline @@ -141,7 +141,7 @@ "filename": ".github/workflows/checks.yml", "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "is_verified": false, - "line_number": 101, + "line_number": 102, "is_secret": false } ], @@ -692,5 +692,5 @@ } ] }, - "generated_at": "2024-07-24T14:13:02Z" + "generated_at": "2024-08-06T15:37:18Z" } diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 71ede96c5..a35ed404b 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -84,6 +84,7 @@ jobs: ports: # Maps tcp port 6379 on service container to the host - 6379:6379 + if: ${{ github.actor != 'dependabot[bot]' }} steps: - uses: actions/checkout@v4 - uses: ./.github/actions/setup-project From ad2151b637141ac325605b14862bb45e01441cab Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Tue, 6 Aug 2024 17:28:14 -0700 Subject: [PATCH 03/17] fix 400 errors --- app/__init__.py | 2 +- app/assets/javascripts/activityChart.js | 6 +++++- app/main/views/dashboard.py | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index f32a98b6c..55942769c 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -177,7 +177,7 @@ def create_app(application): init_govuk_frontend(application) init_jinja(application) - socketio.init_app(application) + socketio.init_app(application, cors_allowed_origins=['http://localhost:6012']) for client in ( csrf, diff --git a/app/assets/javascripts/activityChart.js b/app/assets/javascripts/activityChart.js index 84e5e3d51..75913c145 100644 --- a/app/assets/javascripts/activityChart.js +++ b/app/assets/javascripts/activityChart.js @@ -185,7 +185,7 @@ return; } - var socket = io(); + var socket = io("/services"); var eventType = type === 'service' ? 'fetch_daily_stats' : 'fetch_daily_stats_by_user'; var socketConnect = type === 'service' ? 'daily_stats_update' : 'daily_stats_by_user_update'; @@ -193,6 +193,10 @@ socket.emit(eventType); }); + socket.on('connect_error', function(error) { + console.error('WebSocket connection error:', error); + }); + socket.on(socketConnect, function(data) { var labels = []; diff --git a/app/main/views/dashboard.py b/app/main/views/dashboard.py index 32a0e46e2..9c3eb6527 100644 --- a/app/main/views/dashboard.py +++ b/app/main/views/dashboard.py @@ -32,7 +32,7 @@ from app.utils.user import user_has_permissions from notifications_utils.recipients import format_phone_number_human_readable -@socketio.on("fetch_daily_stats") +@socketio.on("fetch_daily_stats", namespace="/services") def handle_fetch_daily_stats(): service_id = session.get("service_id") if service_id: @@ -45,7 +45,7 @@ def handle_fetch_daily_stats(): emit("error", {"error": "No service_id provided"}) -@socketio.on("fetch_daily_stats_by_user") +@socketio.on("fetch_daily_stats_by_user", namespace="/services") def handle_fetch_daily_stats_by_user(): service_id = session.get("service_id") user_id = session.get("user_id") From b77a142f6b76d132bdfc94626eaee1c94f75fdf6 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Wed, 7 Aug 2024 07:37:04 -0700 Subject: [PATCH 04/17] try moving if block --- .ds.baseline | 6 +++--- .github/workflows/checks.yml | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.ds.baseline b/.ds.baseline index e397d83f8..f7f116b20 100644 --- a/.ds.baseline +++ b/.ds.baseline @@ -133,7 +133,7 @@ "filename": ".github/workflows/checks.yml", "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "is_verified": false, - "line_number": 67, + "line_number": 68, "is_secret": false }, { @@ -141,7 +141,7 @@ "filename": ".github/workflows/checks.yml", "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "is_verified": false, - "line_number": 102, + "line_number": 103, "is_secret": false } ], @@ -692,5 +692,5 @@ } ] }, - "generated_at": "2024-08-06T15:37:18Z" + "generated_at": "2024-08-07T14:36:40Z" } diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index a35ed404b..efeefdbd6 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -54,6 +54,7 @@ jobs: run: poetry run coverage report --fail-under=90 end-to-end-tests: + if: ${{ github.actor != 'dependabot[bot]' }} permissions: checks: write pull-requests: write @@ -84,7 +85,7 @@ jobs: ports: # Maps tcp port 6379 on service container to the host - 6379:6379 - if: ${{ github.actor != 'dependabot[bot]' }} + steps: - uses: actions/checkout@v4 - uses: ./.github/actions/setup-project From 65d339fb8aafccf516e0122aef4269d5c021defe Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 15:16:09 -0700 Subject: [PATCH 05/17] fix jest testing errors --- tests/javascripts/totalMessagesChart.test.js | 45 +++++++++++--------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/tests/javascripts/totalMessagesChart.test.js b/tests/javascripts/totalMessagesChart.test.js index f0d7ee55d..6f74d0630 100644 --- a/tests/javascripts/totalMessagesChart.test.js +++ b/tests/javascripts/totalMessagesChart.test.js @@ -15,10 +15,11 @@ function loadScript(scriptContent) { Object.defineProperty(HTMLElement.prototype, 'clientWidth', { value: 600, writable: true, + configurable: true, }); // beforeAll hook to set up the DOM and load D3.js script -beforeAll(done => { +beforeEach(() => { // Set up the DOM with the D3 script included document.body.innerHTML = `
@@ -33,15 +34,13 @@ beforeAll(done => { loadScript(d3ScriptContent); // Wait a bit to ensure the script is executed - setTimeout(() => { - // Require the actual JavaScript file you are testing - require('../../app/assets/javascripts/totalMessagesChart.js'); - - // Call the function to create the chart - window.createTotalMessagesChart(); - - done(); - }, 100); + return new Promise(resolve => { + setTimeout(() => { + // Require the actual JavaScript file you are testing + require('../../app/assets/javascripts/totalMessagesChart.js'); + resolve(); + }, 100); + }); }); // Single test to check if D3 is loaded correctly @@ -52,15 +51,20 @@ test('D3 is loaded correctly', () => { }); // Test to check if the SVG element is correctly set up -test('SVG element is correctly set up', () => { - const svg = document.getElementById('totalMessageChart'); - expect(svg).not.toBeNull(); - expect(svg.getAttribute('width')).toBe('600'); - expect(svg.getAttribute('height')).toBe('64'); +test('SVG element is correctly set up', done => { + window.createTotalMessagesChart(); + + setTimeout(() => { + const svg = document.getElementById('totalMessageChart'); + expect(svg.getAttribute('width')).toBe('600'); + expect(svg.getAttribute('height')).toBe('64'); + done(); + }, 1000); // Ensure enough time for the DOM updates }); // Test to check if the table is created and populated correctly test('Populates the accessible table correctly', () => { + window.createTotalMessagesChart(); const table = document.getElementById('totalMessageTable').getElementsByTagName('table')[0]; expect(table).toBeDefined(); @@ -84,6 +88,8 @@ test('Chart title is correctly set', () => { // Test to check if the chart resizes correctly on window resize test('Chart resizes correctly on window resize', done => { + window.createTotalMessagesChart(); + setTimeout(() => { const svg = document.getElementById('totalMessageChart'); const chartContainer = document.getElementById('totalMessageChartContainer'); @@ -92,7 +98,7 @@ test('Chart resizes correctly on window resize', done => { expect(svg.getAttribute('width')).toBe('600'); // Set new container width - Object.defineProperty(chartContainer, 'clientWidth', { value: 800 }); + Object.defineProperty(chartContainer, 'clientWidth', { value: 800, configurable: true }); // Trigger resize event window.dispatchEvent(new Event('resize')); @@ -101,9 +107,9 @@ test('Chart resizes correctly on window resize', done => { // Check if SVG width is updated expect(svg.getAttribute('width')).toBe('800'); done(); - }, 500); // Adjust the timeout if necessary + }, 1000); // Adjust the timeout if necessary }, 1000); // Initial wait for the chart to render -}, 10000); // Adjust the overall test timeout if necessary +}, 15000); // Adjust the overall test timeout if necessary // Testing the tooltip test('Tooltip displays on hover', () => { @@ -148,6 +154,7 @@ test('Tooltip displays on hover', () => { // Test to ensure SVG bars are created and animated correctly test('SVG bars are created and animated correctly', done => { + window.createTotalMessagesChart(); const svg = document.getElementById('totalMessageChart'); // Initial check @@ -176,7 +183,7 @@ test('Handles zero width chart container', () => { Object.defineProperty(document.getElementById('totalMessageChartContainer'), 'clientWidth', { value: 0 }); // Call the function to create the chart - createTotalMessagesChart(); + window.createTotalMessagesChart(); // Check if the console error was called expect(consoleSpy).toHaveBeenCalledWith('Chart container width is 0, cannot set SVG width.'); From 4bfbd9f71f337953d5b18722f91135419948786e Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 15:27:43 -0700 Subject: [PATCH 06/17] fixing console errors --- app/assets/javascripts/totalMessagesChart.js | 4 ++-- tests/javascripts/totalMessagesChart.test.js | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/totalMessagesChart.js b/app/assets/javascripts/totalMessagesChart.js index ff409c969..f437cfc4c 100644 --- a/app/assets/javascripts/totalMessagesChart.js +++ b/app/assets/javascripts/totalMessagesChart.js @@ -25,10 +25,10 @@ // Ensure the width is set correctly if (width === 0) { - console.error('Chart container width is 0, cannot set SVG width.'); - return; + throw new Error('Chart container width is 0, cannot set SVG width.'); } + svg.attr("width", width).attr("height", height); var x = d3.scaleLinear() diff --git a/tests/javascripts/totalMessagesChart.test.js b/tests/javascripts/totalMessagesChart.test.js index 6f74d0630..e4a3708c5 100644 --- a/tests/javascripts/totalMessagesChart.test.js +++ b/tests/javascripts/totalMessagesChart.test.js @@ -182,14 +182,14 @@ test('Handles zero width chart container', () => { // Set chart container width to 0 Object.defineProperty(document.getElementById('totalMessageChartContainer'), 'clientWidth', { value: 0 }); + try { // Call the function to create the chart window.createTotalMessagesChart(); - - // Check if the console error was called - expect(consoleSpy).toHaveBeenCalledWith('Chart container width is 0, cannot set SVG width.'); - - consoleSpy.mockRestore(); - }); + } catch (error) { + // Check if the error message is as expected + expect(error.message).toBe('Chart container width is 0, cannot set SVG width.'); + } +}); test('Creates chart on DOMContentLoaded', () => { const createTotalMessagesChartSpy = jest.spyOn(window, 'createTotalMessagesChart'); From 5797e989fdd97e64657716c4d6bd346deb8c8d2d Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 15:33:08 -0700 Subject: [PATCH 07/17] fixing console errors --- app/assets/javascripts/totalMessagesChart.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/assets/javascripts/totalMessagesChart.js b/app/assets/javascripts/totalMessagesChart.js index f437cfc4c..aec3e8ba3 100644 --- a/app/assets/javascripts/totalMessagesChart.js +++ b/app/assets/javascripts/totalMessagesChart.js @@ -28,7 +28,6 @@ throw new Error('Chart container width is 0, cannot set SVG width.'); } - svg.attr("width", width).attr("height", height); var x = d3.scaleLinear() From f65655e56c91aefa840b6a6bff5e4fb27a614aa7 Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 15:42:46 -0700 Subject: [PATCH 08/17] fixing console errors --- app/assets/javascripts/totalMessagesChart.js | 3 ++- tests/javascripts/totalMessagesChart.test.js | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/totalMessagesChart.js b/app/assets/javascripts/totalMessagesChart.js index aec3e8ba3..ff409c969 100644 --- a/app/assets/javascripts/totalMessagesChart.js +++ b/app/assets/javascripts/totalMessagesChart.js @@ -25,7 +25,8 @@ // Ensure the width is set correctly if (width === 0) { - throw new Error('Chart container width is 0, cannot set SVG width.'); + console.error('Chart container width is 0, cannot set SVG width.'); + return; } svg.attr("width", width).attr("height", height); diff --git a/tests/javascripts/totalMessagesChart.test.js b/tests/javascripts/totalMessagesChart.test.js index e4a3708c5..bb2e770d5 100644 --- a/tests/javascripts/totalMessagesChart.test.js +++ b/tests/javascripts/totalMessagesChart.test.js @@ -179,16 +179,17 @@ test('Handles zero width chart container', () => { // Mock console.error const consoleSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); - // Set chart container width to 0 - Object.defineProperty(document.getElementById('totalMessageChartContainer'), 'clientWidth', { value: 0 }); + // Set chart container width to 0 + const chartContainer = document.getElementById('totalMessageChartContainer'); + Object.defineProperty(chartContainer, 'clientWidth', { value: 0, configurable: true }); - try { - // Call the function to create the chart - window.createTotalMessagesChart(); - } catch (error) { - // Check if the error message is as expected - expect(error.message).toBe('Chart container width is 0, cannot set SVG width.'); - } + // Call the function to create the chart + window.createTotalMessagesChart(); + + // Check if the console error was called + expect(consoleSpy).toHaveBeenCalledWith('Chart container width is 0, cannot set SVG width.'); + + consoleSpy.mockRestore(); }); test('Creates chart on DOMContentLoaded', () => { From c6f1ae37a44681b8991405af89f68cf7fa18eee2 Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 15:47:33 -0700 Subject: [PATCH 09/17] fixing console errors --- app/assets/javascripts/totalMessagesChart.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/assets/javascripts/totalMessagesChart.js b/app/assets/javascripts/totalMessagesChart.js index ff409c969..d83c66841 100644 --- a/app/assets/javascripts/totalMessagesChart.js +++ b/app/assets/javascripts/totalMessagesChart.js @@ -23,12 +23,6 @@ var width = chartContainer.clientWidth; var height = 64; - // Ensure the width is set correctly - if (width === 0) { - console.error('Chart container width is 0, cannot set SVG width.'); - return; - } - svg.attr("width", width).attr("height", height); var x = d3.scaleLinear() From a6ac7086da69380aeee15c11520f1dd8fac32981 Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 15:48:35 -0700 Subject: [PATCH 10/17] fixing console errors --- tests/javascripts/totalMessagesChart.test.js | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/tests/javascripts/totalMessagesChart.test.js b/tests/javascripts/totalMessagesChart.test.js index bb2e770d5..a8f9fe65d 100644 --- a/tests/javascripts/totalMessagesChart.test.js +++ b/tests/javascripts/totalMessagesChart.test.js @@ -174,23 +174,6 @@ test('SVG bars are created and animated correctly', done => { }, 1500); // Duration of the animation + buffer time }); -// Test to check console error when chart container width is 0 -test('Handles zero width chart container', () => { - // Mock console.error - const consoleSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); - - // Set chart container width to 0 - const chartContainer = document.getElementById('totalMessageChartContainer'); - Object.defineProperty(chartContainer, 'clientWidth', { value: 0, configurable: true }); - - // Call the function to create the chart - window.createTotalMessagesChart(); - - // Check if the console error was called - expect(consoleSpy).toHaveBeenCalledWith('Chart container width is 0, cannot set SVG width.'); - - consoleSpy.mockRestore(); -}); test('Creates chart on DOMContentLoaded', () => { const createTotalMessagesChartSpy = jest.spyOn(window, 'createTotalMessagesChart'); From 92026a83aab18c1a115db4b65543e9628b6d42e3 Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 15:54:21 -0700 Subject: [PATCH 11/17] fixing console errors --- tests/javascripts/totalMessagesChart.test.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/javascripts/totalMessagesChart.test.js b/tests/javascripts/totalMessagesChart.test.js index a8f9fe65d..ca4fd16ad 100644 --- a/tests/javascripts/totalMessagesChart.test.js +++ b/tests/javascripts/totalMessagesChart.test.js @@ -173,8 +173,7 @@ test('SVG bars are created and animated correctly', done => { done(); }, 1500); // Duration of the animation + buffer time }); - - +console.log('update') test('Creates chart on DOMContentLoaded', () => { const createTotalMessagesChartSpy = jest.spyOn(window, 'createTotalMessagesChart'); From 2bb398a962d2f693e3e7ca95e0911d48f47257d6 Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 15:54:54 -0700 Subject: [PATCH 12/17] fixing console errors --- app/assets/javascripts/totalMessagesChart.js | 1 + tests/javascripts/totalMessagesChart.test.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/totalMessagesChart.js b/app/assets/javascripts/totalMessagesChart.js index d83c66841..0ccbf71e8 100644 --- a/app/assets/javascripts/totalMessagesChart.js +++ b/app/assets/javascripts/totalMessagesChart.js @@ -22,6 +22,7 @@ var svg = d3.select("#totalMessageChart"); var width = chartContainer.clientWidth; var height = 64; + console.log('update') svg.attr("width", width).attr("height", height); diff --git a/tests/javascripts/totalMessagesChart.test.js b/tests/javascripts/totalMessagesChart.test.js index ca4fd16ad..17c09a87f 100644 --- a/tests/javascripts/totalMessagesChart.test.js +++ b/tests/javascripts/totalMessagesChart.test.js @@ -173,7 +173,7 @@ test('SVG bars are created and animated correctly', done => { done(); }, 1500); // Duration of the animation + buffer time }); -console.log('update') + test('Creates chart on DOMContentLoaded', () => { const createTotalMessagesChartSpy = jest.spyOn(window, 'createTotalMessagesChart'); From 1a75fc51429e2971bb5c3f862b0c1027a72a43be Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 16:44:02 -0700 Subject: [PATCH 13/17] fixed coverage report --- tests/javascripts/activityChart.test.js | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/javascripts/activityChart.test.js b/tests/javascripts/activityChart.test.js index a8b520aa7..830534b66 100644 --- a/tests/javascripts/activityChart.test.js +++ b/tests/javascripts/activityChart.test.js @@ -124,3 +124,44 @@ test('Check HTML content after chart creation', () => { expect(container.querySelector('svg')).not.toBeNull(); expect(container.querySelectorAll('rect').length).toBeGreaterThan(0); }); + + +test('Initial fetch data populates chart and table', done => { + const mockData = { + '2024-07-01': { sms: { delivered: 50, failed: 5 } }, + '2024-07-02': { sms: { delivered: 60, failed: 2 } }, + '2024-07-03': { sms: { delivered: 70, failed: 1 } }, + '2024-07-04': { sms: { delivered: 80, failed: 0 } }, + '2024-07-05': { sms: { delivered: 90, failed: 3 } }, + '2024-07-06': { sms: { delivered: 100, failed: 4 } }, + '2024-07-07': { sms: { delivered: 110, failed: 2 } }, + }; + + const socket = { + on: jest.fn((event, callback) => { + if (event === 'daily_stats_update') { + console.log('Mock data:', mockData); + callback(mockData); + done(); + } + }), + emit: jest.fn(), + }; + window.io = jest.fn(() => socket); + + document.dispatchEvent(new Event('DOMContentLoaded')); + + setTimeout(() => { + const table = document.getElementById('weeklyTable'); + expect(table).toBeDefined(); + + const rows = table.getElementsByTagName('tr'); + expect(rows.length).toBe(8); + + const firstRowCells = rows[1].getElementsByTagName('td'); + console.log('First row cells:', firstRowCells); + expect(firstRowCells[0].textContent).toBe('07/01/24'); + expect(firstRowCells[1].textContent).toBe('50'); + expect(firstRowCells[2].textContent).toBe('5'); + }, 100); +}); From 86748c331702bd1627bcbf9a81ca197440861bad Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 17:03:25 -0700 Subject: [PATCH 14/17] js lint --- app/assets/javascripts/totalMessagesChart.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/totalMessagesChart.js b/app/assets/javascripts/totalMessagesChart.js index 0ccbf71e8..ff409c969 100644 --- a/app/assets/javascripts/totalMessagesChart.js +++ b/app/assets/javascripts/totalMessagesChart.js @@ -22,7 +22,12 @@ var svg = d3.select("#totalMessageChart"); var width = chartContainer.clientWidth; var height = 64; - console.log('update') + + // Ensure the width is set correctly + if (width === 0) { + console.error('Chart container width is 0, cannot set SVG width.'); + return; + } svg.attr("width", width).attr("height", height); From b426a17cf86d49f9060fb455f59219524e261ad8 Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 7 Aug 2024 17:15:15 -0700 Subject: [PATCH 15/17] fix activity jtest test --- tests/javascripts/activityChart.test.js | 1 - tests/javascripts/totalMessagesChart.test.js | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/javascripts/activityChart.test.js b/tests/javascripts/activityChart.test.js index 830534b66..2bca46d0f 100644 --- a/tests/javascripts/activityChart.test.js +++ b/tests/javascripts/activityChart.test.js @@ -140,7 +140,6 @@ test('Initial fetch data populates chart and table', done => { const socket = { on: jest.fn((event, callback) => { if (event === 'daily_stats_update') { - console.log('Mock data:', mockData); callback(mockData); done(); } diff --git a/tests/javascripts/totalMessagesChart.test.js b/tests/javascripts/totalMessagesChart.test.js index 17c09a87f..22bc39500 100644 --- a/tests/javascripts/totalMessagesChart.test.js +++ b/tests/javascripts/totalMessagesChart.test.js @@ -174,6 +174,23 @@ test('SVG bars are created and animated correctly', done => { }, 1500); // Duration of the animation + buffer time }); +// Test to check console error when chart container width is 0 +test('Handles zero width chart container', () => { + // Mock console.error + const consoleSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); + + // Set chart container width to 0 + Object.defineProperty(document.getElementById('totalMessageChartContainer'), 'clientWidth', { value: 0 }); + + // Call the function to create the chart + createTotalMessagesChart(); + + // Check if the console error was called + expect(consoleSpy).toHaveBeenCalledWith('Chart container width is 0, cannot set SVG width.'); + + consoleSpy.mockRestore(); + }); + test('Creates chart on DOMContentLoaded', () => { const createTotalMessagesChartSpy = jest.spyOn(window, 'createTotalMessagesChart'); From 3bafa485779023dcffd948f6ce387bafd4dcd7ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 16:39:07 +0000 Subject: [PATCH 16/17] Bump botocore from 1.34.150 to 1.34.156 Bumps [botocore](https://github.com/boto/botocore) from 1.34.150 to 1.34.156. - [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/boto/botocore/compare/1.34.150...1.34.156) --- updated-dependencies: - dependency-name: botocore dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- poetry.lock | 10 +++++----- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 865e6da97..6e4ba5a7f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -201,13 +201,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.150" +version = "1.34.156" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.34.150-py3-none-any.whl", hash = "sha256:b988d47f4d502df85befce11a48002421e4e6ea4289997b5e0261bac5fa76ce6"}, - {file = "botocore-1.34.150.tar.gz", hash = "sha256:4d23387e0f076d87b637a2a35c0ff2b8daca16eace36b63ce27f65630c6b375a"}, + {file = "botocore-1.34.156-py3-none-any.whl", hash = "sha256:c48f8c8996216dfdeeb0aa6d3c0f2c7ae25234766434a2ea3e57bdc08494bdda"}, + {file = "botocore-1.34.156.tar.gz", hash = "sha256:5d1478c41ab9681e660b3322432fe09c4055759c317984b7b8d3af9557ff769a"}, ] [package.dependencies] @@ -216,7 +216,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.20.11)"] +crt = ["awscrt (==0.21.2)"] [[package]] name = "cachecontrol" @@ -3092,4 +3092,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.12.2" -content-hash = "b271104f669ce0a8e78fb09299b61cf0502cc81a18213dda00f77c759b6e0209" +content-hash = "9d6309a76755b2639d787f99944c1ead0bd93ab9f2f13208f88c51cecb5e0081" diff --git a/pyproject.toml b/pyproject.toml index 5a9dc8727..915f23610 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ markdown = "^3.5.2" async-timeout = "^4.0.3" bleach = "^6.1.0" boto3 = "^1.34.150" -botocore = "^1.34.150" +botocore = "^1.34.156" cachetools = "^5.4.0" cffi = "^1.16.0" cryptography = "^43.0.0" From 21da7ef7db724c597067d3fd81779734a356b85d Mon Sep 17 00:00:00 2001 From: Carlo Costino Date: Thu, 8 Aug 2024 13:49:49 -0400 Subject: [PATCH 17/17] Update docs/debug-issues-with-staging-api.md Some additional formatting. --- docs/debug-issues-with-staging-api.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/debug-issues-with-staging-api.md b/docs/debug-issues-with-staging-api.md index e80a2ac32..517eab4d9 100644 --- a/docs/debug-issues-with-staging-api.md +++ b/docs/debug-issues-with-staging-api.md @@ -16,8 +16,8 @@ Additionally, update `API_HOST_NAME` and `NOTIFY_ENVIRONMENT`: ### Retrieving Environment Variables for Staging -You can retrieve the values needed for these by using the cf CLI (Cloud Foundry CLI tool) and making sure -you’re targeting the notify-staging space. +You can retrieve the values needed for these by using the `cf` CLI (Cloud Foundry CLI tool) and making sure +you’re targeting the `notify-staging` space. 1. `cf login -a [api.fr.cloud.gov](http://api.fr.cloud.gov/) --sso` 2. select `notify-staging`