From f5dbb67aefe7141c92bd9feaaf40c1f7c7da1a45 Mon Sep 17 00:00:00 2001 From: Anatoly Date: Tue, 19 Dec 2017 01:10:42 +0200 Subject: [PATCH] initial commit --- test/README.md | 2 ++ test/SchemaProcessor.test.js | 51 +++++++++++++++++++++++++++ test/Utilities/TestBase.js | 67 ++++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 test/README.md create mode 100644 test/SchemaProcessor.test.js create mode 100644 test/Utilities/TestBase.js diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..650adc0 --- /dev/null +++ b/test/README.md @@ -0,0 +1,2 @@ +

Test

+

Automated tests development is in progress.

diff --git a/test/SchemaProcessor.test.js b/test/SchemaProcessor.test.js new file mode 100644 index 0000000..03e9ed0 --- /dev/null +++ b/test/SchemaProcessor.test.js @@ -0,0 +1,51 @@ +/* + * This file is a part of "NMIG" - the database migration tool. + * + * Copyright (C) 2016 - present, Anatoly Khaytovich + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (please see the "LICENSE.md" file). + * If not, see . + * + * @author Anatoly Khaytovich + */ +'use strict'; + +const { assert } = require('chai'); +const createSchema = require('../src/SchemaProcessor'); +const Conversion = require('../src/Classes/Conversion'); +const TestBase = require('./Utilities/TestBase'); + +class SchemaProcessorTest extends TestBase { + + /** + * SchemaProcessorTest constructor. + */ + constructor() { + super(); + const withExistingSchema = false; + this.setUp(withExistingSchema); + } +} + +const test = new SchemaProcessorTest(); + +describe('Test schema processing cases', function () { + it('Should create a new schema', function(done) { + createSchema(test._conversion) + .then(() => { + // + }); + + // + }); +}); diff --git a/test/Utilities/TestBase.js b/test/Utilities/TestBase.js new file mode 100644 index 0000000..6773ee2 --- /dev/null +++ b/test/Utilities/TestBase.js @@ -0,0 +1,67 @@ +/* + * This file is a part of "NMIG" - the database migration tool. + * + * Copyright (C) 2016 - present, Anatoly Khaytovich + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (please see the "LICENSE.md" file). + * If not, see . + * + * @author Anatoly Khaytovich + */ +'use strict'; + +const Main = require('../../src/Main'); +const createSchema = require('../../src/SchemaProcessor'); + +module.exports = class TestBase { + + /** + * TestBase constructor. + */ + constructor() { + this._app = new Main(); + this._conversion = null; + } + + /** + * Runs before all tests in this suite. + * + * @param {Boolean} withExistingSchema + * + * @returns {undefined} + */ + setUp(withExistingSchema = true) { + const flowPromise = this._app.readConfig() + .then(this._app.readExtraConfig) + .then(this._app.initializeConversion) + .then(conversion => { + // Make a Conversion instance available for derivative classes. + this._conversion = conversion; + + return Promise.resolve(conversion); + }); + + if (withExistingSchema) { + flowPromise.then(createSchema); + } + } + + /** + * Runs after all tests in this suite. + * + * @returns {undefined} + */ + tearDown() { + // + } +};