diff --git a/__tests__/__main__/import-export.mjs b/__tests__/__main__/import-export.mjs index 31a78b0c2..71bc0eb0a 100644 --- a/__tests__/__main__/import-export.mjs +++ b/__tests__/__main__/import-export.mjs @@ -42,27 +42,6 @@ describe('Import export', function() fs.writeFileSync(invalidEntriesFile, invalidEntriesContent, 'utf8'); }); - describe('validEntry(entry)', function() - { - const goodEntry = {'type': 'flexible', 'date': '2020-06-03', 'values': ['08:00', '12:00', '13:00', '14:00']}; - const goodWaivedEntry = {'type': 'waived', 'date': '2020-06-03', 'data': 'waived', 'hours': '08:00'}; - const badEntry = {'type': 'flexible', 'date': '2020-06-03', 'values': ['not-an-hour']}; - const badEntry2 = {'type': 'flexible', 'date': '2020-06-03', 'values': 'not-an-array'}; - const badWaivedEntry = {'type': 'regular', 'date': '2020-06-03', 'data': 'day-begin', 'hours': 'not-an-hour'}; - it('should be valid', () => - { - assert.strictEqual(ImportExport.validEntry(goodWaivedEntry), true); - assert.strictEqual(ImportExport.validEntry(goodEntry), true); - }); - - it('should not be valid', () => - { - assert.strictEqual(ImportExport.validEntry(badWaivedEntry), false); - assert.strictEqual(ImportExport.validEntry(badEntry), false); - assert.strictEqual(ImportExport.validEntry(badEntry2), false); - }); - }); - describe('exportDatabaseToFile', function() { it('Check that export works', () => diff --git a/__tests__/__main__/validate-json.mjs b/__tests__/__main__/validate-json.mjs index 0ea14715a..218676d48 100644 --- a/__tests__/__main__/validate-json.mjs +++ b/__tests__/__main__/validate-json.mjs @@ -2,7 +2,7 @@ import assert from 'assert'; -import { validateJSON } from '../../js/validate-json.js'; +import { validateJSON } from '../../js/validate-json.mjs'; describe('Validate json', function() { diff --git a/js/import-export.mjs b/js/import-export.mjs index d6f2a4202..878f81031 100644 --- a/js/import-export.mjs +++ b/js/import-export.mjs @@ -1,4 +1,3 @@ -/*eslint-disable no-prototype-builtins*/ 'use strict'; import { assert } from 'console'; @@ -6,7 +5,7 @@ import Store from 'electron-store'; import fs from 'fs'; import { generateKey } from './date-db-formatter.mjs'; -import TimeMath from './time-math.mjs'; +import { validateJSON } from './validate-json.mjs'; /** * Returns the database as an array of: @@ -55,45 +54,8 @@ function _getWaivedEntries() return output; } -function _validateDate(dateStr) -{ - const date = new Date(dateStr); - return date instanceof Date && !Number.isNaN(date.getTime()); -} - class ImportExport { - static validEntry(entry) - { - if (entry.hasOwnProperty('type') && ['waived', 'flexible'].indexOf(entry.type) !== -1) - { - const validatedDate = entry.hasOwnProperty('date') && _validateDate(entry.date); - let hasExpectedProperties; - let validatedTime = true; - if (entry.type === 'flexible') - { - hasExpectedProperties = entry.hasOwnProperty('values') && Array.isArray(entry.values) && entry.values.length > 0; - if (hasExpectedProperties) - { - for (const value of entry.values) - { - validatedTime &= (TimeMath.validateTime(value) || value === '--:--'); - } - } - } - else - { - hasExpectedProperties = entry.hasOwnProperty('data'); - validatedTime = entry.hasOwnProperty('hours') && TimeMath.validateTime(entry.hours); - } - if (hasExpectedProperties && validatedDate && validatedTime) - { - return true; - } - } - return false; - } - static exportDatabaseToFile(filename) { let information = _getEntries(); @@ -122,7 +84,7 @@ class ImportExport for (let i = 0; i < information.length; ++i) { const entry = information[i]; - if (!ImportExport.validEntry(entry)) + if (!validateJSON([entry])) { failedEntries += 1; continue; diff --git a/js/validate-json.js b/js/validate-json.mjs similarity index 100% rename from js/validate-json.js rename to js/validate-json.mjs