From d55a2251ffce3ec8a90f965281ae951c38596651 Mon Sep 17 00:00:00 2001 From: ciatph Date: Wed, 28 Aug 2024 19:29:03 +0800 Subject: [PATCH 01/14] fix: undefined url on class init, #101 --- app/__tests__/classInitialization/fileLoading.js | 2 +- app/__tests__/municipalities/createMunicipalityInstance.js | 2 +- app/__tests__/municipalities/municipalitiesCount.js | 2 +- app/__tests__/municipalities/municipalitiesPerProvinceCount.js | 2 +- app/__tests__/provinces/createInstances.js | 2 +- app/__tests__/provinces/testProvinceCount.js | 2 +- app/__tests__/provinces/updateInstances.js | 2 +- app/index.js | 1 - 8 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/__tests__/classInitialization/fileLoading.js b/app/__tests__/classInitialization/fileLoading.js index 3d78e4e..5babdf8 100644 --- a/app/__tests__/classInitialization/fileLoading.js +++ b/app/__tests__/classInitialization/fileLoading.js @@ -1,4 +1,4 @@ -require('dotenv') +require('dotenv').config() const path = require('path') const ExcelFile = require('../../src/classes/excel') diff --git a/app/__tests__/municipalities/createMunicipalityInstance.js b/app/__tests__/municipalities/createMunicipalityInstance.js index b17430a..6b79a32 100644 --- a/app/__tests__/municipalities/createMunicipalityInstance.js +++ b/app/__tests__/municipalities/createMunicipalityInstance.js @@ -1,4 +1,4 @@ -require('dotenv') +require('dotenv').config() const ColorLog = require('../../src/classes/colorlog') const logger = new ColorLog({ color: ColorLog.COLORS.TEXT.YELLOW, isBold: true }) diff --git a/app/__tests__/municipalities/municipalitiesCount.js b/app/__tests__/municipalities/municipalitiesCount.js index 58ad4ff..56dda62 100644 --- a/app/__tests__/municipalities/municipalitiesCount.js +++ b/app/__tests__/municipalities/municipalitiesCount.js @@ -1,4 +1,4 @@ -require('dotenv') +require('dotenv').config() const path = require('path') const ExcelFile = require('../../src/classes/excel') diff --git a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js index 04a7790..8ba6e3b 100644 --- a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js +++ b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js @@ -1,4 +1,4 @@ -require('dotenv') +require('dotenv').config() const path = require('path') const ExcelFile = require('../../src/classes/excel') diff --git a/app/__tests__/provinces/createInstances.js b/app/__tests__/provinces/createInstances.js index d087347..d7e4e1f 100644 --- a/app/__tests__/provinces/createInstances.js +++ b/app/__tests__/provinces/createInstances.js @@ -1,4 +1,4 @@ -require('dotenv') +require('dotenv').config() const ColorLog = require('../../src/classes/colorlog') const logger = new ColorLog({ color: ColorLog.COLORS.TEXT.YELLOW, isBold: true }) diff --git a/app/__tests__/provinces/testProvinceCount.js b/app/__tests__/provinces/testProvinceCount.js index ab2479a..c043a88 100644 --- a/app/__tests__/provinces/testProvinceCount.js +++ b/app/__tests__/provinces/testProvinceCount.js @@ -1,4 +1,4 @@ -require('dotenv') +require('dotenv').config() const path = require('path') const ExcelFile = require('../../src/classes/excel') diff --git a/app/__tests__/provinces/updateInstances.js b/app/__tests__/provinces/updateInstances.js index 01dd27d..316a1a5 100644 --- a/app/__tests__/provinces/updateInstances.js +++ b/app/__tests__/provinces/updateInstances.js @@ -1,4 +1,4 @@ -require('dotenv') +require('dotenv').config() const ColorLog = require('../../src/classes/colorlog') const logger = new ColorLog({ color: ColorLog.COLORS.TEXT.YELLOW, isBold: true }) diff --git a/app/index.js b/app/index.js index a8e207c..a53c319 100644 --- a/app/index.js +++ b/app/index.js @@ -1,4 +1,3 @@ -require('dotenv').config() const ExcelFile = require('./src/classes/excel') const ExcelFactory = require('./src/classes/excelfactory') const Schema = require('./src/classes/schema') From 7ffe0851430e289fecace3e189983257dc9dc8b6 Mon Sep 17 00:00:00 2001 From: ciatph Date: Wed, 28 Aug 2024 19:48:02 +0800 Subject: [PATCH 02/14] chore: display the default /config/regions.json file in diagram, #92 --- docs/diagrams/ph-municipalities-arch-90.png | Bin 59566 -> 60963 bytes docs/diagrams/ph-municipalities-arch.drawio | 145 ++++++++++---------- 2 files changed, 74 insertions(+), 71 deletions(-) diff --git a/docs/diagrams/ph-municipalities-arch-90.png b/docs/diagrams/ph-municipalities-arch-90.png index b40d83570d445fd7997fd42fea11cfed8eb0d5df..4c81f74ba474921b8f645738772ee99ae54b2697 100644 GIT binary patch literal 60963 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Π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%0Dr#pZ&opOq)>-Ex&z+44Y+((g0pTHWG3 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 b_xMN=)rThJ&qR+V5%@FPV`*GSbwBqXW^;k^ literal 59566 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 M_t~>r!5w&`y^XRI=$rwu3#}di@A&VA%Hal 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 Il*0b$A9+ + - + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - + - - + + - + - - + + - + - - + + + + + From b6d61f8be85dedf468ba25700f631d001cfaf1ba Mon Sep 17 00:00:00 2001 From: ciatph Date: Wed, 28 Aug 2024 20:15:24 +0800 Subject: [PATCH 03/14] fix: put checks at the end of methods --- .../classInitialization/fileLoading.js | 6 ++---- .../municipalities/municipalitiesCount.js | 12 +++++------ .../municipalitiesPerProvinceCount.js | 16 +++++++-------- app/__tests__/provinces/testProvinceCount.js | 20 +++++++++---------- 4 files changed, 26 insertions(+), 28 deletions(-) diff --git a/app/__tests__/classInitialization/fileLoading.js b/app/__tests__/classInitialization/fileLoading.js index 5babdf8..a6611fd 100644 --- a/app/__tests__/classInitialization/fileLoading.js +++ b/app/__tests__/classInitialization/fileLoading.js @@ -31,6 +31,7 @@ describe('Class intialization using DEFAULT config', () => { it('should load remote Excel file', async () => { jest.setTimeout(15000) + logger.log('[INIT]: Started loading using "DEFAULT" config') const excelFile = new ExcelFile({ pathToFile: path.join(__dirname, 'excelfiledownload4.xlsx'), @@ -58,8 +59,6 @@ describe('Class intialization using DEFAULT config', () => { isRemote: true, classType: ExcelFile }) - - logger.log('[INIT]: Success loading using "DEFAULT" config') }) }) @@ -87,6 +86,7 @@ describe('Class intialization using CUSTOM config', () => { it('should load remote Excel file', async () => { jest.setTimeout(15000) + logger.log('[INIT]: Started loading using "CUSTOM" config') const excelFile = new ExcelFile({ pathToFile: path.join(__dirname, 'excelfiledownload5.xlsx'), @@ -116,7 +116,5 @@ describe('Class intialization using CUSTOM config', () => { isRemote: true, classType: ExcelFile }) - - logger.log('[INIT]: Success loading using "CUSTOM" config') }) }) diff --git a/app/__tests__/municipalities/municipalitiesCount.js b/app/__tests__/municipalities/municipalitiesCount.js index 56dda62..cfe2516 100644 --- a/app/__tests__/municipalities/municipalitiesCount.js +++ b/app/__tests__/municipalities/municipalitiesCount.js @@ -23,12 +23,6 @@ describe('Municipalities total count match', () => { // Start file download await excelFile.init() - checkClass({ - excelInstance: excelFile, - isRemote: true, - classType: ExcelFile - }) - const { excel, config, @@ -85,6 +79,12 @@ describe('Municipalities total count match', () => { }) } + checkClass({ + excelInstance: excelFile, + isRemote: true, + classType: ExcelFile + }) + /* Uncomment true "tests" for municipalities count match testing expect(excel.countMunicipalities).toBe(config.countMunicipalities) expect(excel.provinces.length).toBe(config.provinces.size) diff --git a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js index 8ba6e3b..5ecd75f 100644 --- a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js +++ b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js @@ -22,12 +22,6 @@ describe('Municipalities per province count match', () => { // Start file download await excelFile.init() - checkClass({ - excelInstance: excelFile, - isRemote: true, - classType: ExcelFile - }) - // Parsed/processed provinces from the Excel file const allProvinces = excelFile.listAllProvinces(true) @@ -73,8 +67,6 @@ describe('Municipalities per province count match', () => { } }) - expect(missing).toHaveLength(0) - let totalLoaded = 0 let totalParsed = 0 @@ -107,5 +99,13 @@ describe('Municipalities per province count match', () => { logger.log(msg, { color: ColorLog.COLORS.TEXT.YELLOW }) } } + + checkClass({ + excelInstance: excelFile, + isRemote: true, + classType: ExcelFile + }) + + expect(missing).toHaveLength(0) }) }) diff --git a/app/__tests__/provinces/testProvinceCount.js b/app/__tests__/provinces/testProvinceCount.js index c043a88..6f5dec7 100644 --- a/app/__tests__/provinces/testProvinceCount.js +++ b/app/__tests__/provinces/testProvinceCount.js @@ -21,12 +21,6 @@ describe('Provinces names and count match', () => { // Start file download await excelFile.init() - checkClass({ - excelInstance: excelFile, - isRemote: true, - classType: ExcelFile - }) - const { allExcelProvinces, allProvinces, @@ -36,10 +30,6 @@ describe('Provinces names and count match', () => { fromExcel } = createInstances(excelFile) - // Provinces from config and the Excel files should be unique - expect(uniqueProvinceList.size).toBe(allProvinces.length) - expect(uniqueExcelList.size).toBe(allExcelProvinces.length) - const { uniqueExcelProvinces, uniqueProvinces } = updateInstances({ allExcelProvinces, allProvinces, @@ -49,6 +39,16 @@ describe('Provinces names and count match', () => { fromExcel }) + checkClass({ + excelInstance: excelFile, + isRemote: true, + classType: ExcelFile + }) + + // Provinces from config and the Excel files should be unique + expect(uniqueProvinceList.size).toBe(allProvinces.length) + expect(uniqueExcelList.size).toBe(allExcelProvinces.length) + // Provinces from config and Excel file count should match // 20240826: Synced counts to pass tests, but take note of warning logs for // custom overrides and extensions for future PAGASA seasonal config / 10-day Excel file updates From 6755eaf4f85f83ad18c20145f034cc39aefda6c1 Mon Sep 17 00:00:00 2001 From: ciatph Date: Wed, 28 Aug 2024 20:18:05 +0800 Subject: [PATCH 04/14] fix: increase jest timeout, #101 --- app/jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jest.config.js b/app/jest.config.js index 189979d..5067444 100644 --- a/app/jest.config.js +++ b/app/jest.config.js @@ -1,6 +1,6 @@ module.exports = { verbose: true, - testTimeout: 15000, + testTimeout: 20000, moduleFileExtensions: ['js'], testPathIgnorePatterns: [ '/node_modules/', From f88d0cfc9d9597b47cec9de0947c6f1b364afbef Mon Sep 17 00:00:00 2001 From: ciatph Date: Wed, 28 Aug 2024 20:20:28 +0800 Subject: [PATCH 05/14] fix: increase jest timeout on tests scripts, #101 --- app/__tests__/classInitialization/fileLoading.js | 4 ++-- app/__tests__/municipalities/municipalitiesCount.js | 2 +- .../municipalities/municipalitiesPerProvinceCount.js | 2 +- app/__tests__/provinces/testProvinceCount.js | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/__tests__/classInitialization/fileLoading.js b/app/__tests__/classInitialization/fileLoading.js index a6611fd..ec7eb8c 100644 --- a/app/__tests__/classInitialization/fileLoading.js +++ b/app/__tests__/classInitialization/fileLoading.js @@ -30,7 +30,7 @@ describe('Class intialization using DEFAULT config', () => { }) it('should load remote Excel file', async () => { - jest.setTimeout(15000) + jest.setTimeout(20000) logger.log('[INIT]: Started loading using "DEFAULT" config') const excelFile = new ExcelFile({ @@ -85,7 +85,7 @@ describe('Class intialization using CUSTOM config', () => { }) it('should load remote Excel file', async () => { - jest.setTimeout(15000) + jest.setTimeout(20000) logger.log('[INIT]: Started loading using "CUSTOM" config') const excelFile = new ExcelFile({ diff --git a/app/__tests__/municipalities/municipalitiesCount.js b/app/__tests__/municipalities/municipalitiesCount.js index cfe2516..3fd4603 100644 --- a/app/__tests__/municipalities/municipalitiesCount.js +++ b/app/__tests__/municipalities/municipalitiesCount.js @@ -18,7 +18,7 @@ describe('Municipalities total count match', () => { }) it('municipalities from provinces config should match with original Excel municipalities count', async () => { - jest.setTimeout(15000) + jest.setTimeout(20000) // Start file download await excelFile.init() diff --git a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js index 5ecd75f..e744357 100644 --- a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js +++ b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js @@ -17,7 +17,7 @@ describe('Municipalities per province count match', () => { }) it('number of parsed/processed municipalities per province should match per province count from original data', async () => { - jest.setTimeout(15000) + jest.setTimeout(20000) // Start file download await excelFile.init() diff --git a/app/__tests__/provinces/testProvinceCount.js b/app/__tests__/provinces/testProvinceCount.js index 6f5dec7..3152bf3 100644 --- a/app/__tests__/provinces/testProvinceCount.js +++ b/app/__tests__/provinces/testProvinceCount.js @@ -16,7 +16,7 @@ describe('Provinces names and count match', () => { }) it('settings (seasonal) provinces should match with (10-day) Excel provinces', async () => { - jest.setTimeout(15000) + jest.setTimeout(20000) // Start file download await excelFile.init() From f3534e5a40d662e60aac4f8a387e77d1fdace1c6 Mon Sep 17 00:00:00 2001 From: ciatph Date: Wed, 28 Aug 2024 20:30:39 +0800 Subject: [PATCH 06/14] chore: bump version patch v1.3.6 --- app/package-lock.json | 4 ++-- app/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/package-lock.json b/app/package-lock.json index edd3951..925e567 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,12 +1,12 @@ { "name": "ph-municipalities", - "version": "1.3.5", + "version": "1.3.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ph-municipalities", - "version": "1.3.5", + "version": "1.3.6", "license": "ISC", "dependencies": { "dotenv": "^16.0.1", diff --git a/app/package.json b/app/package.json index 355dad9..8f9978d 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "ph-municipalities", - "version": "1.3.5", + "version": "1.3.6", "description": "List and write the `municipalities` of Philippines provinces or regions into JSON files", "main": "index.js", "engines": { From af3c7842e7c5788a96e31f1c3162af92aa7d61e0 Mon Sep 17 00:00:00 2001 From: ciatph Date: Wed, 28 Aug 2024 23:50:34 +0800 Subject: [PATCH 07/14] wip: test custom and local paghasa regions settings on separate files --- .../classInitialization/customSettings.js | 73 +++++++++++ .../classInitialization/defaultSettings.js | 69 ++++++++++ .../classInitialization/fileLoading.js | 120 ------------------ app/jest.config.js | 3 + 4 files changed, 145 insertions(+), 120 deletions(-) create mode 100644 app/__tests__/classInitialization/customSettings.js create mode 100644 app/__tests__/classInitialization/defaultSettings.js delete mode 100644 app/__tests__/classInitialization/fileLoading.js diff --git a/app/__tests__/classInitialization/customSettings.js b/app/__tests__/classInitialization/customSettings.js new file mode 100644 index 0000000..efb6f7e --- /dev/null +++ b/app/__tests__/classInitialization/customSettings.js @@ -0,0 +1,73 @@ +require('dotenv').config() +const path = require('path') + +const ExcelFile = require('../../src/classes/excel') +const ExcelFactory = require('../../src/classes/excelfactory') +const ColorLog = require('../../src/classes/colorlog') +const logger = new ColorLog({ isBold: true }) + +const checkClass = require('./checkClass') +const config = require('./config.json') + +// Classes loading the default local 10-day Excel file +const local = { + excelFactory: new ExcelFactory({ settings: config }), + + excelFile: new ExcelFile({ + pathToFile: path.join(__dirname, '..', '..', 'data', 'day1.xlsx'), + settings: config + }) +} + +// Classes loading the remote 10-day Excel file +const remote = { + excelFile: new ExcelFile({ + pathToFile: path.join(__dirname, 'excelfiledownload4.xlsx'), + url: process.env.EXCEL_FILE_URL, + settings: config + }), + + excelFactory: new ExcelFactory({ + url: process.env.EXCEL_FILE_URL, + settings: config + }) +} + +/* eslint-disable no-undef */ +describe('Class intialization using CUSTOM config', () => { + beforeAll(async () => { + return await Promise.all([ + remote.excelFile.init(), + remote.excelFactory.init() + ]) + }) + + it('should load local Excel file', () => { + checkClass({ + excelInstance: local.excelFactory, + classType: ExcelFactory + }) + + checkClass({ + excelInstance: local.excelFile, + classType: ExcelFile + }) + }) + + it('should load remote Excel file', async () => { + jest.setTimeout(20000) + logger.log('[INIT]: Started loading using "CUSTOM" config') + + checkClass({ + excelInstance: remote.excelFactory, + isRemote: true, + classType: ExcelFactory + }) + + checkClass({ + excelInstance: remote.excelFile, + isRemote: true, + classType: ExcelFile + }) + }) +}) diff --git a/app/__tests__/classInitialization/defaultSettings.js b/app/__tests__/classInitialization/defaultSettings.js new file mode 100644 index 0000000..02e097c --- /dev/null +++ b/app/__tests__/classInitialization/defaultSettings.js @@ -0,0 +1,69 @@ +require('dotenv').config() +const path = require('path') + +const ExcelFile = require('../../src/classes/excel') +const ExcelFactory = require('../../src/classes/excelfactory') +const ColorLog = require('../../src/classes/colorlog') +const logger = new ColorLog({ isBold: true }) + +const checkClass = require('./checkClass') + +// Classes loading the default local 10-day Excel file +const local = { + excelFactory: new ExcelFactory(), + + excelFile: new ExcelFile({ + pathToFile: path.join(__dirname, '..', '..', 'data', 'day1.xlsx') + }) +} + +// Classes loading the remote 10-day Excel file +const remote = { + excelFile: new ExcelFile({ + pathToFile: path.join(__dirname, 'excelfiledownload4.xlsx'), + url: process.env.EXCEL_FILE_URL + }), + + excelFactory: new ExcelFactory({ + url: process.env.EXCEL_FILE_URL + }) +} + +/* eslint-disable no-undef */ +describe('Class intialization using DEFAULT config', () => { + beforeAll(async () => { + return await Promise.all([ + remote.excelFile.init(), + remote.excelFactory.init() + ]) + }) + + it('should load local Excel file', () => { + checkClass({ + excelInstance: local.excelFactory, + classType: ExcelFactory + }) + + checkClass({ + excelInstance: local.excelFile, + classType: ExcelFile + }) + }) + + it('should load remote Excel file', async () => { + jest.setTimeout(20000) + logger.log('[INIT]: Started loading using "DEFAULT" config') + + checkClass({ + excelInstance: remote.excelFactory, + isRemote: true, + classType: ExcelFactory + }) + + checkClass({ + excelInstance: remote.excelFile, + isRemote: true, + classType: ExcelFile + }) + }) +}) diff --git a/app/__tests__/classInitialization/fileLoading.js b/app/__tests__/classInitialization/fileLoading.js deleted file mode 100644 index ec7eb8c..0000000 --- a/app/__tests__/classInitialization/fileLoading.js +++ /dev/null @@ -1,120 +0,0 @@ -require('dotenv').config() -const path = require('path') - -const ExcelFile = require('../../src/classes/excel') -const ExcelFactory = require('../../src/classes/excelfactory') -const ColorLog = require('../../src/classes/colorlog') -const logger = new ColorLog({ isBold: true }) - -const checkClass = require('./checkClass') -const config = require('./config.json') - -/* eslint-disable no-undef */ -describe('Class intialization using DEFAULT config', () => { - it('should load local Excel file', () => { - const excelFile = new ExcelFile({ - pathToFile: path.join(__dirname, '..', '..', 'data', 'day1.xlsx') - }) - - const excelFactory = new ExcelFactory() - - checkClass({ - excelInstance: excelFactory, - classType: ExcelFactory - }) - - checkClass({ - excelInstance: excelFile, - classType: ExcelFile - }) - }) - - it('should load remote Excel file', async () => { - jest.setTimeout(20000) - logger.log('[INIT]: Started loading using "DEFAULT" config') - - const excelFile = new ExcelFile({ - pathToFile: path.join(__dirname, 'excelfiledownload4.xlsx'), - url: process.env.EXCEL_FILE_URL - }) - - const excelFactory = new ExcelFactory({ - url: process.env.EXCEL_FILE_URL - }) - - // Start file download - await Promise.all([ - excelFile.init(), - excelFactory.init() - ]) - - checkClass({ - excelInstance: excelFactory, - isRemote: true, - classType: ExcelFactory - }) - - checkClass({ - excelInstance: excelFile, - isRemote: true, - classType: ExcelFile - }) - }) -}) - -describe('Class intialization using CUSTOM config', () => { - it('should load local Excel file', () => { - const excelFile = new ExcelFile({ - pathToFile: path.join(__dirname, '..', '..', 'data', 'day1.xlsx'), - settings: config - }) - - const excelFactory = new ExcelFactory({ - settings: config - }) - - checkClass({ - excelInstance: excelFactory, - classType: ExcelFactory - }) - - checkClass({ - excelInstance: excelFile, - classType: ExcelFile - }) - }) - - it('should load remote Excel file', async () => { - jest.setTimeout(20000) - logger.log('[INIT]: Started loading using "CUSTOM" config') - - const excelFile = new ExcelFile({ - pathToFile: path.join(__dirname, 'excelfiledownload5.xlsx'), - url: process.env.EXCEL_FILE_URL, - settings: config - }) - - const excelFactory = new ExcelFactory({ - url: process.env.EXCEL_FILE_URL, - settings: config - }) - - // Start file download - await Promise.all([ - excelFile.init(), - excelFactory.init() - ]) - - checkClass({ - excelInstance: excelFactory, - isRemote: true, - classType: ExcelFactory - }) - - checkClass({ - excelInstance: excelFile, - isRemote: true, - classType: ExcelFile - }) - }) -}) diff --git a/app/jest.config.js b/app/jest.config.js index 5067444..9988879 100644 --- a/app/jest.config.js +++ b/app/jest.config.js @@ -6,9 +6,12 @@ module.exports = { '/node_modules/', '__tests__/classInitialization/checkClass.js', '__tests__/municipalities/createMunicipalityInstance.js', + '__tests__/municipalities/municipalitiesCount.js', + '__tests__/municipalities/municipalitiesPerProvinceCount.js', '__tests__/municipalities/index.js', '__tests__/provinces/createInstances.js', '__tests__/provinces/updateInstances.js', + '__tests__/provinces/testProvinceCount.js', '__tests__/provinces/index.js' ] } From dbc05519175665629beb35fe13f67d981672734d Mon Sep 17 00:00:00 2001 From: ciatph Date: Wed, 28 Aug 2024 23:58:43 +0800 Subject: [PATCH 08/14] wip: initialize municipalities remote excelfile in b4all --- .../municipalities/municipalitiesCount.js | 18 +++++++++--------- app/jest.config.js | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/__tests__/municipalities/municipalitiesCount.js b/app/__tests__/municipalities/municipalitiesCount.js index 3fd4603..5ee46ba 100644 --- a/app/__tests__/municipalities/municipalitiesCount.js +++ b/app/__tests__/municipalities/municipalitiesCount.js @@ -9,20 +9,20 @@ const checkClass = require('../classInitialization/checkClass') const createMunicipalityInstance = require('./createMunicipalityInstance') const { arrayToString } = require('../../src/lib/utils') +// Test using the latest 10-day PAGASA Excel file +const excelFile = new ExcelFile({ + pathToFile: path.join(__dirname, 'excelfiledownload.xlsx'), + url: process.env.EXCEL_FILE_URL +}) + /* eslint-disable no-undef */ describe('Municipalities total count match', () => { - // Test using the latest 10-day PAGASA Excel file - const excelFile = new ExcelFile({ - pathToFile: path.join(__dirname, 'excelfiledownload.xlsx'), - url: process.env.EXCEL_FILE_URL + beforeAll(async () => { + // Start file download + return await excelFile.init() }) it('municipalities from provinces config should match with original Excel municipalities count', async () => { - jest.setTimeout(20000) - - // Start file download - await excelFile.init() - const { excel, config, diff --git a/app/jest.config.js b/app/jest.config.js index 9988879..3b7b5e6 100644 --- a/app/jest.config.js +++ b/app/jest.config.js @@ -6,7 +6,7 @@ module.exports = { '/node_modules/', '__tests__/classInitialization/checkClass.js', '__tests__/municipalities/createMunicipalityInstance.js', - '__tests__/municipalities/municipalitiesCount.js', + // '__tests__/municipalities/municipalitiesCount.js', '__tests__/municipalities/municipalitiesPerProvinceCount.js', '__tests__/municipalities/index.js', '__tests__/provinces/createInstances.js', From 32759ac54cb2663a829e1c304f0d8d27edffa231 Mon Sep 17 00:00:00 2001 From: ciatph Date: Thu, 29 Aug 2024 00:09:16 +0800 Subject: [PATCH 09/14] wip: initialize municipalities per province remote excelfile in b4all --- .../municipalitiesPerProvinceCount.js | 18 +++++++++--------- app/jest.config.js | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js index e744357..5155562 100644 --- a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js +++ b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js @@ -8,20 +8,20 @@ const logger = new ColorLog() const checkClass = require('../classInitialization/checkClass') const { arrayToString } = require('../../src/lib/utils') +// Test using the latest 10-day PAGASA Excel file +const excelFile = new ExcelFile({ + pathToFile: path.join(__dirname, 'excelfiledownload2.xlsx'), + url: process.env.EXCEL_FILE_URL +}) + /* eslint-disable no-undef */ describe('Municipalities per province count match', () => { - // Test using the latest 10-day PAGASA Excel file - const excelFile = new ExcelFile({ - pathToFile: path.join(__dirname, 'excelfiledownload2.xlsx'), - url: process.env.EXCEL_FILE_URL + beforeAll(async () => { + // Start file download + return await excelFile.init() }) it('number of parsed/processed municipalities per province should match per province count from original data', async () => { - jest.setTimeout(20000) - - // Start file download - await excelFile.init() - // Parsed/processed provinces from the Excel file const allProvinces = excelFile.listAllProvinces(true) diff --git a/app/jest.config.js b/app/jest.config.js index 3b7b5e6..196b5b6 100644 --- a/app/jest.config.js +++ b/app/jest.config.js @@ -7,7 +7,7 @@ module.exports = { '__tests__/classInitialization/checkClass.js', '__tests__/municipalities/createMunicipalityInstance.js', // '__tests__/municipalities/municipalitiesCount.js', - '__tests__/municipalities/municipalitiesPerProvinceCount.js', + // '__tests__/municipalities/municipalitiesPerProvinceCount.js', '__tests__/municipalities/index.js', '__tests__/provinces/createInstances.js', '__tests__/provinces/updateInstances.js', From 8e8a33f04c656568e8b3d582b1ac478969ba7eb4 Mon Sep 17 00:00:00 2001 From: ciatph Date: Thu, 29 Aug 2024 00:26:02 +0800 Subject: [PATCH 10/14] wip: initialize provinces excelfile test in b4all --- app/__tests__/provinces/testProvinceCount.js | 16 +++++++++------- app/jest.config.js | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/__tests__/provinces/testProvinceCount.js b/app/__tests__/provinces/testProvinceCount.js index 3152bf3..6d9146f 100644 --- a/app/__tests__/provinces/testProvinceCount.js +++ b/app/__tests__/provinces/testProvinceCount.js @@ -7,20 +7,22 @@ const checkClass = require('../classInitialization/checkClass') const createInstances = require('./createInstances') const updateInstances = require('./updateInstances') +// Test using the latest 10-day PAGASA Excel file +const excelFile = new ExcelFile({ + pathToFile: path.join(__dirname, 'excelfiledownload3.xlsx'), + url: process.env.EXCEL_FILE_URL +}) + /* eslint-disable no-undef */ describe('Provinces names and count match', () => { - // Test using the latest 10-day PAGASA Excel file - const excelFile = new ExcelFile({ - pathToFile: path.join(__dirname, 'excelfiledownload3.xlsx'), - url: process.env.EXCEL_FILE_URL + beforeAll(async () => { + // Start file download + return await excelFile.init() }) it('settings (seasonal) provinces should match with (10-day) Excel provinces', async () => { jest.setTimeout(20000) - // Start file download - await excelFile.init() - const { allExcelProvinces, allProvinces, diff --git a/app/jest.config.js b/app/jest.config.js index 196b5b6..5eef639 100644 --- a/app/jest.config.js +++ b/app/jest.config.js @@ -11,7 +11,7 @@ module.exports = { '__tests__/municipalities/index.js', '__tests__/provinces/createInstances.js', '__tests__/provinces/updateInstances.js', - '__tests__/provinces/testProvinceCount.js', + // '__tests__/provinces/testProvinceCount.js', '__tests__/provinces/index.js' ] } From ee1d98d301076d17700a56fef43332b498fd5b07 Mon Sep 17 00:00:00 2001 From: ciatph Date: Thu, 29 Aug 2024 00:30:38 +0800 Subject: [PATCH 11/14] chore: restore jest timeouts in it() methods --- app/__tests__/classInitialization/customSettings.js | 5 ++++- app/__tests__/classInitialization/defaultSettings.js | 5 ++++- app/__tests__/municipalities/municipalitiesCount.js | 2 ++ .../municipalities/municipalitiesPerProvinceCount.js | 2 ++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/__tests__/classInitialization/customSettings.js b/app/__tests__/classInitialization/customSettings.js index efb6f7e..f477f37 100644 --- a/app/__tests__/classInitialization/customSettings.js +++ b/app/__tests__/classInitialization/customSettings.js @@ -43,6 +43,9 @@ describe('Class intialization using CUSTOM config', () => { }) it('should load local Excel file', () => { + jest.setTimeout(20000) + logger.log('[INIT]: Started loading using "CUSTOM" config on LOCAL file') + checkClass({ excelInstance: local.excelFactory, classType: ExcelFactory @@ -56,7 +59,7 @@ describe('Class intialization using CUSTOM config', () => { it('should load remote Excel file', async () => { jest.setTimeout(20000) - logger.log('[INIT]: Started loading using "CUSTOM" config') + logger.log('[INIT]: Started loading using "CUSTOM" config on REMOTE file') checkClass({ excelInstance: remote.excelFactory, diff --git a/app/__tests__/classInitialization/defaultSettings.js b/app/__tests__/classInitialization/defaultSettings.js index 02e097c..bdf0177 100644 --- a/app/__tests__/classInitialization/defaultSettings.js +++ b/app/__tests__/classInitialization/defaultSettings.js @@ -39,6 +39,9 @@ describe('Class intialization using DEFAULT config', () => { }) it('should load local Excel file', () => { + jest.setTimeout(20000) + logger.log('[INIT]: Started loading using "DEFAULT" config on LOCAL file') + checkClass({ excelInstance: local.excelFactory, classType: ExcelFactory @@ -52,7 +55,7 @@ describe('Class intialization using DEFAULT config', () => { it('should load remote Excel file', async () => { jest.setTimeout(20000) - logger.log('[INIT]: Started loading using "DEFAULT" config') + logger.log('[INIT]: Started loading using "DEFAULT" config on REMOTE file') checkClass({ excelInstance: remote.excelFactory, diff --git a/app/__tests__/municipalities/municipalitiesCount.js b/app/__tests__/municipalities/municipalitiesCount.js index 5ee46ba..9a61cbf 100644 --- a/app/__tests__/municipalities/municipalitiesCount.js +++ b/app/__tests__/municipalities/municipalitiesCount.js @@ -23,6 +23,8 @@ describe('Municipalities total count match', () => { }) it('municipalities from provinces config should match with original Excel municipalities count', async () => { + jest.setTimeout(20000) + const { excel, config, diff --git a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js index 5155562..385d645 100644 --- a/app/__tests__/municipalities/municipalitiesPerProvinceCount.js +++ b/app/__tests__/municipalities/municipalitiesPerProvinceCount.js @@ -22,6 +22,8 @@ describe('Municipalities per province count match', () => { }) it('number of parsed/processed municipalities per province should match per province count from original data', async () => { + jest.setTimeout(20000) + // Parsed/processed provinces from the Excel file const allProvinces = excelFile.listAllProvinces(true) From 58ef8194ded7efff487bf7b72cb51f9d38de75ec Mon Sep 17 00:00:00 2001 From: ciatph Date: Thu, 29 Aug 2024 00:41:08 +0800 Subject: [PATCH 12/14] chore: update code comments --- .../classInitialization/customSettings.js | 24 +++++++++---------- .../classInitialization/defaultSettings.js | 24 +++++++++---------- .../municipalities/municipalitiesCount.js | 1 + 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/app/__tests__/classInitialization/customSettings.js b/app/__tests__/classInitialization/customSettings.js index f477f37..2e8bc01 100644 --- a/app/__tests__/classInitialization/customSettings.js +++ b/app/__tests__/classInitialization/customSettings.js @@ -9,8 +9,8 @@ const logger = new ColorLog({ isBold: true }) const checkClass = require('./checkClass') const config = require('./config.json') -// Classes loading the default local 10-day Excel file -const local = { +// Classes loading the default local 10-day Excel file using a custom regions config +const LOCAL_SOURCE = { excelFactory: new ExcelFactory({ settings: config }), excelFile: new ExcelFile({ @@ -19,8 +19,8 @@ const local = { }) } -// Classes loading the remote 10-day Excel file -const remote = { +// Classes loading the remote 10-day Excel file using a custom regions config +const REMOTE_SOURCE = { excelFile: new ExcelFile({ pathToFile: path.join(__dirname, 'excelfiledownload4.xlsx'), url: process.env.EXCEL_FILE_URL, @@ -37,38 +37,38 @@ const remote = { describe('Class intialization using CUSTOM config', () => { beforeAll(async () => { return await Promise.all([ - remote.excelFile.init(), - remote.excelFactory.init() + REMOTE_SOURCE.excelFile.init(), + REMOTE_SOURCE.excelFactory.init() ]) }) - it('should load local Excel file', () => { + it('should load LOCAL_SOURCE Excel file', () => { jest.setTimeout(20000) logger.log('[INIT]: Started loading using "CUSTOM" config on LOCAL file') checkClass({ - excelInstance: local.excelFactory, + excelInstance: LOCAL_SOURCE.excelFactory, classType: ExcelFactory }) checkClass({ - excelInstance: local.excelFile, + excelInstance: LOCAL_SOURCE.excelFile, classType: ExcelFile }) }) - it('should load remote Excel file', async () => { + it('should load REMOTE_SOURCE Excel file', async () => { jest.setTimeout(20000) logger.log('[INIT]: Started loading using "CUSTOM" config on REMOTE file') checkClass({ - excelInstance: remote.excelFactory, + excelInstance: REMOTE_SOURCE.excelFactory, isRemote: true, classType: ExcelFactory }) checkClass({ - excelInstance: remote.excelFile, + excelInstance: REMOTE_SOURCE.excelFile, isRemote: true, classType: ExcelFile }) diff --git a/app/__tests__/classInitialization/defaultSettings.js b/app/__tests__/classInitialization/defaultSettings.js index bdf0177..2796b63 100644 --- a/app/__tests__/classInitialization/defaultSettings.js +++ b/app/__tests__/classInitialization/defaultSettings.js @@ -8,8 +8,8 @@ const logger = new ColorLog({ isBold: true }) const checkClass = require('./checkClass') -// Classes loading the default local 10-day Excel file -const local = { +// Classes loading the default local 10-day Excel file using the default PAGASA seasonal config +const LOCAL_SOURCE = { excelFactory: new ExcelFactory(), excelFile: new ExcelFile({ @@ -17,8 +17,8 @@ const local = { }) } -// Classes loading the remote 10-day Excel file -const remote = { +// Classes loading the remote 10-day Excel file using the default PAGASA seasonal config +const REMOTE_SOURCE = { excelFile: new ExcelFile({ pathToFile: path.join(__dirname, 'excelfiledownload4.xlsx'), url: process.env.EXCEL_FILE_URL @@ -33,38 +33,38 @@ const remote = { describe('Class intialization using DEFAULT config', () => { beforeAll(async () => { return await Promise.all([ - remote.excelFile.init(), - remote.excelFactory.init() + REMOTE_SOURCE.excelFile.init(), + REMOTE_SOURCE.excelFactory.init() ]) }) - it('should load local Excel file', () => { + it('should load LOCAL_SOURCE Excel file', () => { jest.setTimeout(20000) logger.log('[INIT]: Started loading using "DEFAULT" config on LOCAL file') checkClass({ - excelInstance: local.excelFactory, + excelInstance: LOCAL_SOURCE.excelFactory, classType: ExcelFactory }) checkClass({ - excelInstance: local.excelFile, + excelInstance: LOCAL_SOURCE.excelFile, classType: ExcelFile }) }) - it('should load remote Excel file', async () => { + it('should load REMOTE_SOURCE Excel file', async () => { jest.setTimeout(20000) logger.log('[INIT]: Started loading using "DEFAULT" config on REMOTE file') checkClass({ - excelInstance: remote.excelFactory, + excelInstance: REMOTE_SOURCE.excelFactory, isRemote: true, classType: ExcelFactory }) checkClass({ - excelInstance: remote.excelFile, + excelInstance: REMOTE_SOURCE.excelFile, isRemote: true, classType: ExcelFile }) diff --git a/app/__tests__/municipalities/municipalitiesCount.js b/app/__tests__/municipalities/municipalitiesCount.js index 9a61cbf..d8b9a92 100644 --- a/app/__tests__/municipalities/municipalitiesCount.js +++ b/app/__tests__/municipalities/municipalitiesCount.js @@ -25,6 +25,7 @@ describe('Municipalities total count match', () => { it('municipalities from provinces config should match with original Excel municipalities count', async () => { jest.setTimeout(20000) + // Create local/remote ExcelFile classes using the default PAGASA region settings const { excel, config, From 6e988a77dc1c6dec1b5efc312bbc578b663b3c29 Mon Sep 17 00:00:00 2001 From: ciatph Date: Thu, 29 Aug 2024 00:45:25 +0800 Subject: [PATCH 13/14] chore: increase jest timeout on promise arrays --- app/__tests__/classInitialization/customSettings.js | 2 +- app/__tests__/classInitialization/defaultSettings.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/__tests__/classInitialization/customSettings.js b/app/__tests__/classInitialization/customSettings.js index 2e8bc01..b8832f6 100644 --- a/app/__tests__/classInitialization/customSettings.js +++ b/app/__tests__/classInitialization/customSettings.js @@ -43,7 +43,7 @@ describe('Class intialization using CUSTOM config', () => { }) it('should load LOCAL_SOURCE Excel file', () => { - jest.setTimeout(20000) + jest.setTimeout(40000) logger.log('[INIT]: Started loading using "CUSTOM" config on LOCAL file') checkClass({ diff --git a/app/__tests__/classInitialization/defaultSettings.js b/app/__tests__/classInitialization/defaultSettings.js index 2796b63..06b7a4a 100644 --- a/app/__tests__/classInitialization/defaultSettings.js +++ b/app/__tests__/classInitialization/defaultSettings.js @@ -39,7 +39,7 @@ describe('Class intialization using DEFAULT config', () => { }) it('should load LOCAL_SOURCE Excel file', () => { - jest.setTimeout(20000) + jest.setTimeout(40000) logger.log('[INIT]: Started loading using "DEFAULT" config on LOCAL file') checkClass({ From 5aa80618eb4b9e4dcc404c2bef6a51bba101f05d Mon Sep 17 00:00:00 2001 From: ciatph Date: Thu, 29 Aug 2024 00:55:55 +0800 Subject: [PATCH 14/14] wip: use different excel file download name --- app/__tests__/classInitialization/customSettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/__tests__/classInitialization/customSettings.js b/app/__tests__/classInitialization/customSettings.js index b8832f6..e07bb80 100644 --- a/app/__tests__/classInitialization/customSettings.js +++ b/app/__tests__/classInitialization/customSettings.js @@ -22,7 +22,7 @@ const LOCAL_SOURCE = { // Classes loading the remote 10-day Excel file using a custom regions config const REMOTE_SOURCE = { excelFile: new ExcelFile({ - pathToFile: path.join(__dirname, 'excelfiledownload4.xlsx'), + pathToFile: path.join(__dirname, 'excelfiledownload5.xlsx'), url: process.env.EXCEL_FILE_URL, settings: config }),