Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 0 additions & 21 deletions __tests__/__main__/import-export.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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', () =>
Expand Down
2 changes: 1 addition & 1 deletion __tests__/__main__/validate-json.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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()
{
Expand Down
42 changes: 2 additions & 40 deletions js/import-export.mjs
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
/*eslint-disable no-prototype-builtins*/
'use strict';

import { assert } from 'console';
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:
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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;
Expand Down
File renamed without changes.