fix(tests): simplify tests

This commit is contained in:
Alexey Kasyanchuk 2018-06-30 01:54:38 +03:00
parent 72828b860f
commit 8dc7cfecf9
8 changed files with 28 additions and 72 deletions

View File

@ -5,24 +5,27 @@ const base = require("./webpack.base.config");
// Test files are scattered through the whole project. Here we're searching // Test files are scattered through the whole project. Here we're searching
// for them and generating entry file for webpack. // for them and generating entry file for webpack.
const e2eDir = jetpack.cwd("tests"); const testsDir = jetpack.cwd("tests");
const tempDir = jetpack.cwd("temp"); const tempDir = jetpack.cwd("temp");
const entryFilePath = tempDir.path("e2e_entry.js"); const entryFilePath = tempDir.path("testsInit.js");
const entryFileContent = e2eDir const testsImports = testsDir
.find({ matching: "*.test.js" }) .find({ matching: "*.test.js" })
.reduce((fileContent, path) => { .reduce((fileContent, path) => {
const normalizedPath = path.replace(/\\/g, "/"); const normalizedPath = path.replace(/\\/g, "/");
return `${fileContent}import "../tests/${normalizedPath}";\n`; return `${fileContent}require("../tests/${normalizedPath}");\n`;
}, ""); }, "");
let entryFileContent = testsDir.read('init.js')
entryFileContent = entryFileContent.replace('//TESTS', testsImports)
jetpack.write(entryFilePath, entryFileContent); jetpack.write(entryFilePath, entryFileContent);
module.exports = env => { module.exports = env => {
return merge(base(env), { return merge(base(env), {
entry: entryFilePath, entry: entryFilePath,
output: { output: {
filename: "e2e.js", filename: "tests.js",
path: tempDir.path() path: tempDir.path()
} }
}); });

View File

@ -1,29 +0,0 @@
const merge = require("webpack-merge");
const jetpack = require("fs-jetpack");
const base = require("./webpack.base.config");
// Test files are scattered through the whole project. Here we're searching
// for them and generating entry file for webpack.
const srcDir = jetpack.cwd("src");
const tempDir = jetpack.cwd("temp");
const entryFilePath = tempDir.path("specs_entry.js");
const entryFileContent = srcDir
.find({ matching: "*.spec.js" })
.reduce((fileContent, path) => {
const normalizedPath = path.replace(/\\/g, "/");
return `${fileContent}import "../src/${normalizedPath}";\n`;
}, "");
jetpack.write(entryFilePath, entryFileContent);
module.exports = env => {
return merge(base(env), {
entry: entryFilePath,
output: {
filename: "specs.js",
path: tempDir.path()
}
});
};

View File

@ -102,8 +102,8 @@
}, },
"scripts": { "scripts": {
"postinstall": "electron-builder install-app-deps", "postinstall": "electron-builder install-app-deps",
"pretest": "webpack --config=build/webpack.app.config.js --env=test --display=none && webpack --config=build/webpack.e2e.config.js --env=test --display=none", "pretest": "webpack --config=build/webpack.app.config.js --env=test --display=none && webpack --config=build/webpack.tests.config.js --env=test --display=none",
"test": "mocha temp/e2e.js --require @babel/core/lib --require source-map-support/register", "test": "mocha temp/tests.js --require @babel/core/lib --require source-map-support/register",
"start": "node build/start.js", "start": "node build/start.js",
"prebuild": "webpack --config=build/webpack.app.config.js --env=production", "prebuild": "webpack --config=build/webpack.app.config.js --env=production",
"build": "electron-builder", "build": "electron-builder",

View File

@ -1,7 +1,7 @@
import electron from "electron"; import electron from "electron";
import { Application } from "spectron"; import { Application } from "spectron";
const beforeEach = function() { const startApplication = function() {
this.timeout(30000); this.timeout(30000);
this.app = new Application({ this.app = new Application({
path: electron, path: electron,
@ -13,7 +13,7 @@ const beforeEach = function() {
return this.app.start(); return this.app.start();
}; };
const afterEach = function() { const stopApplication = function() {
this.timeout(30000); this.timeout(30000);
if (this.app && this.app.isRunning()) { if (this.app && this.app.isRunning()) {
return this.app.stop(); return this.app.stop();
@ -21,7 +21,7 @@ const afterEach = function() {
return undefined; return undefined;
}; };
export default { export {
beforeEach, startApplication,
afterEach stopApplication
}; };

View File

@ -1,12 +0,0 @@
import { expect } from "chai";
import testUtils from "./utils";
describe("application launch", () => {
before(testUtils.beforeEach);
after(testUtils.afterEach);
it("index page loaded", async function() {
const { app } = this
await app.client.waitForExist('#index-window')
});
});

View File

@ -2,20 +2,10 @@ const expect = (is) => {
if(!is) if(!is)
throw new Error('expected not done'); throw new Error('expected not done');
} }
import testUtils from "./utils";
const {pool} = require('../src/background/mysql') const {pool} = require('../src/background/mysql')
const forBigTable = require('../src/background/forBigTable') const forBigTable = require('../src/background/forBigTable')
describe("big table for check", () => { describe("big table for check", () => {
before(testUtils.beforeEach);
after(testUtils.afterEach);
it("runned", async function() {
const { app } = this
await app.client.waitForExist('#index-window')
});
let sphinx; let sphinx;
it("init", function() { it("init", function() {

13
tests/init.js Normal file
View File

@ -0,0 +1,13 @@
import {startApplication, stopApplication} from "../tests/application";
describe("application", () => {
before(startApplication);
after(stopApplication);
it("check start", async function() {
const { app } = this
await app.client.waitForExist('#index-window')
});
//TESTS
});

View File

@ -1,18 +1,9 @@
import { expect } from "chai"; import { expect } from "chai";
import testUtils from "./utils";
const mysql = require('mysql') const mysql = require('mysql')
const config = require('../src/background/config') const config = require('../src/background/config')
describe("sphinx", () => { describe("sphinx", () => {
before(testUtils.beforeEach);
after(testUtils.afterEach);
it("runned", async function() {
const { app } = this
await app.client.waitForExist('#index-window')
});
let sphinx; let sphinx;
it("init", function() { it("init", function() {