diff --git a/coverage/index.html b/coverage/index.html
index 1067d9d..3c2a754 100644
--- a/coverage/index.html
+++ b/coverage/index.html
@@ -20,24 +20,24 @@
- 77.55%
+ 78.54%
Statements
- 152/196
+ 161/205
- 72%
+ 68.97%
Branches
- 18/25
+ 20/29
- 66%
+ 67.92%
Functions
- 33/50
+ 36/53
- 77.44%
+ 78.43%
Lines
- 151/195
+ 160/204
@@ -65,13 +65,13 @@
recommend |
|
100% |
- 5/5 |
+ 3/3 |
100% |
0/0 |
100% |
0/0 |
100% |
- 5/5 |
+ 3/3 |
@@ -115,15 +115,15 @@
| recommend/server/models |
- |
- 95.83% |
- 23/24 |
- 80% |
- 4/5 |
+ |
+ 97.14% |
+ 34/35 |
+ 66.67% |
+ 6/9 |
100% |
- 6/6 |
- 95.83% |
- 23/24 |
+ 9/9 |
+ 97.14% |
+ 34/35 |
@@ -158,7 +158,7 @@
diff --git a/coverage/recommend/config/index.html b/coverage/recommend/config/index.html
index 33fe1a2..290c97f 100644
--- a/coverage/recommend/config/index.html
+++ b/coverage/recommend/config/index.html
@@ -106,7 +106,7 @@
diff --git a/coverage/recommend/config/index.js.html b/coverage/recommend/config/index.js.html
index 445b3e4..375680c 100644
--- a/coverage/recommend/config/index.js.html
+++ b/coverage/recommend/config/index.js.html
@@ -94,7 +94,7 @@ export default {server: _.merge(defaultConfig, envConfig), plex: plexConfig};
diff --git a/coverage/recommend/config/plex.js.html b/coverage/recommend/config/plex.js.html
index d700f10..bf0429f 100644
--- a/coverage/recommend/config/plex.js.html
+++ b/coverage/recommend/config/plex.js.html
@@ -73,7 +73,7 @@ export default plexConfig;
diff --git a/coverage/recommend/config/test.js.html b/coverage/recommend/config/test.js.html
index c11d770..3bd4119 100644
--- a/coverage/recommend/config/test.js.html
+++ b/coverage/recommend/config/test.js.html
@@ -70,7 +70,7 @@ export default testConfig;
diff --git a/coverage/recommend/index.html b/coverage/recommend/index.html
index 40515af..3ba6c5c 100644
--- a/coverage/recommend/index.html
+++ b/coverage/recommend/index.html
@@ -22,7 +22,7 @@
100%
Statements
- 5/5
+ 3/3
100%
@@ -37,7 +37,7 @@
100%
Lines
- 5/5
+ 3/3
@@ -62,19 +62,6 @@
- | .sequelizerc |
- |
- 100% |
- 2/2 |
- 100% |
- 0/0 |
- 100% |
- 0/0 |
- 100% |
- 2/2 |
-
-
-
| index.js |
|
100% |
@@ -93,7 +80,7 @@
diff --git a/coverage/recommend/index.js.html b/coverage/recommend/index.js.html
index 00b4d6b..158fd23 100644
--- a/coverage/recommend/index.js.html
+++ b/coverage/recommend/index.js.html
@@ -76,7 +76,7 @@ export default server.create(config);
diff --git a/coverage/recommend/server/controllers/index.html b/coverage/recommend/server/controllers/index.html
index 32d6103..198a5b8 100644
--- a/coverage/recommend/server/controllers/index.html
+++ b/coverage/recommend/server/controllers/index.html
@@ -80,7 +80,7 @@
diff --git a/coverage/recommend/server/controllers/plex.controller.js.html b/coverage/recommend/server/controllers/plex.controller.js.html
index 05e797a..217beb1 100644
--- a/coverage/recommend/server/controllers/plex.controller.js.html
+++ b/coverage/recommend/server/controllers/plex.controller.js.html
@@ -109,7 +109,7 @@ export default router;
diff --git a/coverage/recommend/server/index.html b/coverage/recommend/server/index.html
index 3781fdf..a42c679 100644
--- a/coverage/recommend/server/index.html
+++ b/coverage/recommend/server/index.html
@@ -80,7 +80,7 @@
diff --git a/coverage/recommend/server/index.js.html b/coverage/recommend/server/index.js.html
index 0a9b8ed..20a7aa6 100644
--- a/coverage/recommend/server/index.js.html
+++ b/coverage/recommend/server/index.js.html
@@ -178,7 +178,7 @@ export default () => {
diff --git a/coverage/recommend/server/models/index.html b/coverage/recommend/server/models/index.html
index 95e781f..1c17b6a 100644
--- a/coverage/recommend/server/models/index.html
+++ b/coverage/recommend/server/models/index.html
@@ -20,24 +20,24 @@
- 95.83%
+ 97.14%
Statements
- 23/24
+ 34/35
- 80%
+ 66.67%
Branches
- 4/5
+ 6/9
100%
Functions
- 6/6
+ 9/9
- 95.83%
+ 97.14%
Lines
- 23/24
+ 34/35
@@ -63,54 +63,54 @@
| index.js |
- |
- 93.33% |
- 14/15 |
- 80% |
- 4/5 |
+ |
+ 95% |
+ 19/20 |
+ 66.67% |
+ 6/9 |
100% |
3/3 |
- 93.33% |
- 14/15 |
+ 95% |
+ 19/20 |
- | plexLibrary.js |
+ plexlibrary.js |
|
100% |
- 3/3 |
+ 4/4 |
100% |
0/0 |
100% |
- 1/1 |
+ 2/2 |
100% |
- 3/3 |
+ 4/4 |
- | plexSection.js |
+ plexsection.js |
|
100% |
- 3/3 |
+ 6/6 |
100% |
0/0 |
100% |
- 1/1 |
+ 2/2 |
100% |
- 3/3 |
+ 6/6 |
| user.js |
|
100% |
- 3/3 |
+ 5/5 |
100% |
0/0 |
100% |
- 1/1 |
+ 2/2 |
100% |
- 3/3 |
+ 5/5 |
@@ -119,7 +119,7 @@
diff --git a/coverage/recommend/server/models/index.js.html b/coverage/recommend/server/models/index.js.html
index 5bbe1df..1c6a6f3 100644
--- a/coverage/recommend/server/models/index.js.html
+++ b/coverage/recommend/server/models/index.js.html
@@ -20,14 +20,14 @@
- 93.33%
+ 95%
Statements
- 14/15
+ 19/20
- 80%
+ 66.67%
Branches
- 4/5
+ 6/9
100%
@@ -35,9 +35,9 @@
3/3
- 93.33%
+ 95%
Lines
- 14/15
+ 19/20
@@ -81,74 +81,95 @@
33
34
35
-36
-
-
-
+36
+37
+38
+39
+40
+41
+42
+43 | 1x
+1x
1x
-
-
-
-
-
-
-
-
-
1x
1x
1x
-4x
1x
-3x
-3x
-3x
+
1x
-5x
1x
+
+
+
+
+1x
+
+4x
+
+
+
+
+3x
+3x
+
+
+1x
+3x
+3x
+
+
+
+1x
1x
1x
- | import Sequelize from 'sequelize';
-import fs from 'fs';
-import path from 'path';
+ | const fs = require('fs');
+const path = require('path');
+const Sequelize = require('sequelize');
-const sequelize = new Sequelize(
- process.env.DATABASE,
- process.env.DATABASE_USER,
- process.env.DATABASE_PASSWORD,
- {
- dialect: 'postgres',
- host: 'localhost',
- logging: false,
- },
-);
+const basename = path.basename(__filename);
+const env = process.env.NODE_ENV || 'development';
+const config = require(`${__dirname}/../../config/config.json`)[env];
+const db = {};
+
+let sequelize;
+Iif (config.use_env_variable) {
+ sequelize = new Sequelize(process.env[config.use_env_variable], config);
+} else {
+ sequelize = new Sequelize(
+ config.database,
+ config.username,
+ config.password,
+ config,
+ );
+}
-const basename = path.basename(module.filename);
-const db = {Sequelize, sequelize};
-const onlyModels = file =>
- file.indexOf('.') !== 0 && file !== basename && file.slice(-3) === '.js';
-const importModel = file => {
- const modelPath = path.join(__dirname, file);
- const model = sequelize.import(modelPath);
- db[model.name] = model;
-};
-const associate = modelName => {
- Iif (typeof db[modelName].associate === 'function')
- db[modelName].associate(db);
-};
fs.readdirSync(__dirname)
- .filter(onlyModels)
- .forEach(importModel);
+ .filter(file => {
+ return (
+ file.indexOf('.') !== 0 && file !== basename && file.slice(-3) === '.js'
+ );
+ })
+ .forEach(file => {
+ const model = sequelize.import(path.join(__dirname, file));
+ db[model.name] = model;
+ });
-Object.keys(db).forEach(associate);
+Object.keys(db).forEach(modelName => {
+ Eif (db[modelName].associate) {
+ db[modelName].associate(db);
+ }
+});
+
+db.sequelize = sequelize;
+db.Sequelize = Sequelize;
module.exports = db;
|
@@ -157,7 +178,7 @@ module.exports = db;
diff --git a/coverage/recommend/server/models/plexLibrary.js.html b/coverage/recommend/server/models/plexLibrary.js.html
index ed21461..f9c5dcc 100644
--- a/coverage/recommend/server/models/plexLibrary.js.html
+++ b/coverage/recommend/server/models/plexLibrary.js.html
@@ -1,7 +1,7 @@
- Code coverage report for recommend/server/models/plexLibrary.js
+ Code coverage report for recommend/server/models/plexlibrary.js
@@ -16,13 +16,13 @@
100%
Statements
- 3/3
+ 4/4
100%
@@ -32,12 +32,12 @@
100%
Functions
- 1/1
+ 2/2
100%
Lines
- 3/3
+ 4/4
@@ -66,7 +66,8 @@
18
19
20
-21
1x
+21
+22 | 1x
1x
@@ -85,34 +86,36 @@
1x
+1x
- | const model = (sequelize, DataTypes) => {
- const PlexLibrary = sequelize.define('plex_library', {
- title: {
+ | module.exports = (sequelize, DataTypes) => {
+ const PlexLibrary = sequelize.define(
+ 'plexlibrary',
+ {
type: DataTypes.STRING,
- unique: true,
+ views: DataTypes.INTEGER,
+ rating_key: DataTypes.INTEGER,
+ metadata_path: DataTypes.STRING,
+ summary: DataTypes.STRING,
+ rating: DataTypes.FLOAT,
+ year: DataTypes.INTEGER,
+ genre: DataTypes.STRING,
},
- type: DataTypes.STRING,
- views: DataTypes.INTEGER,
- rating_key: DataTypes.INTEGER,
- metadata_path: DataTypes.STRING,
- summary: DataTypes.TEXT,
- rating: DataTypes.FLOAT,
- year: DataTypes.INTEGER,
- genre: DataTypes.STRING,
- });
-
+ {},
+ );
+ // eslint-disable-next-line no-unused-vars
+ PlexLibrary.associate = function(models) {
+ // associations can be defined here
+ };
return PlexLibrary;
};
-
-export default model;
|
diff --git a/coverage/recommend/server/models/plexSection.js.html b/coverage/recommend/server/models/plexSection.js.html
index fb31c1b..ca9d4d9 100644
--- a/coverage/recommend/server/models/plexSection.js.html
+++ b/coverage/recommend/server/models/plexSection.js.html
@@ -1,7 +1,7 @@
-
Code coverage report for recommend/server/models/plexSection.js
+
Code coverage report for recommend/server/models/plexsection.js
@@ -16,13 +16,13 @@
100%
Statements
- 3/3
+ 6/6
100%
@@ -32,12 +32,12 @@
100%
Functions
- 1/1
+ 2/2
100%
Lines
- 3/3
+ 6/6
@@ -57,35 +57,50 @@
9
10
11
-12
1x
-2x
+12
+13
+14
+15
+16
+17 | 1x
+1x
-2x
- | const model = (sequelize, DataTypes) => {
- const PlexSection = sequelize.define('plex_section', {
- title: DataTypes.STRING,
- type: DataTypes.STRING,
- key: DataTypes.INTEGER,
- });
-
+1x
+1x
+1x
+
+1x
+
+ | module.exports = (sequelize, DataTypes) => {
+ const PlexSection = sequelize.define(
+ 'plexsection',
+ {
+ title: DataTypes.STRING,
+ type: DataTypes.STRING,
+ key: DataTypes.INTEGER,
+ },
+ {},
+ );
+ PlexSection.associate = function(models) {
+ console.log(models);
+ PlexSection.belongsTo(models.user);
+ };
return PlexSection;
};
-
-export default model;
|
diff --git a/coverage/recommend/server/models/user.js.html b/coverage/recommend/server/models/user.js.html
index 7bfc5a9..9d40b87 100644
--- a/coverage/recommend/server/models/user.js.html
+++ b/coverage/recommend/server/models/user.js.html
@@ -22,7 +22,7 @@
100%
Statements
- 3/3
+ 5/5
100%
@@ -32,12 +32,12 @@
100%
Functions
- 1/1
+ 2/2
100%
Lines
- 3/3
+ 5/5
@@ -57,35 +57,47 @@
9
10
11
-12
1x
+12
+13
+14
+15
+16 | 1x
1x
+
+
+
+1x
1x
+1x
-
- | const model = (sequelize, DataTypes) => {
- const User = sequelize.define('user', {
- username: {
- type: DataTypes.STRING,
+ | module.exports = (sequelize, DataTypes) => {
+ const User = sequelize.define(
+ 'user',
+ {
+ firstName: DataTypes.STRING,
+ lastName: DataTypes.STRING,
+ email: DataTypes.STRING,
},
- });
-
+ {},
+ );
+ User.associate = function(models) {
+ User.hasMany(models.plexsection);
+ };
return User;
};
-
-export default model;
|
diff --git a/coverage/recommend/server/routes/index.html b/coverage/recommend/server/routes/index.html
index 028a09c..713ac5e 100644
--- a/coverage/recommend/server/routes/index.html
+++ b/coverage/recommend/server/routes/index.html
@@ -80,7 +80,7 @@
diff --git a/coverage/recommend/server/routes/plex.route.js.html b/coverage/recommend/server/routes/plex.route.js.html
index bbb4e63..52ffab6 100644
--- a/coverage/recommend/server/routes/plex.route.js.html
+++ b/coverage/recommend/server/routes/plex.route.js.html
@@ -79,7 +79,7 @@ export default router;
diff --git a/coverage/recommend/server/services/plex/auth.js.html b/coverage/recommend/server/services/plex/auth.js.html
index 5777ae3..f3c2acd 100644
--- a/coverage/recommend/server/services/plex/auth.js.html
+++ b/coverage/recommend/server/services/plex/auth.js.html
@@ -130,7 +130,7 @@ export default fetchToken;
diff --git a/coverage/recommend/server/services/plex/helpers.js.html b/coverage/recommend/server/services/plex/helpers.js.html
index 6be6037..4373446 100644
--- a/coverage/recommend/server/services/plex/helpers.js.html
+++ b/coverage/recommend/server/services/plex/helpers.js.html
@@ -208,7 +208,7 @@ export default {formatResponse, buildUrl, request};
diff --git a/coverage/recommend/server/services/plex/importData.js.html b/coverage/recommend/server/services/plex/importData.js.html
index 058c98a..93f8941 100644
--- a/coverage/recommend/server/services/plex/importData.js.html
+++ b/coverage/recommend/server/services/plex/importData.js.html
@@ -337,7 +337,7 @@ export default {importSections, importLibraries, importMostWatched};
diff --git a/coverage/recommend/server/services/plex/index.html b/coverage/recommend/server/services/plex/index.html
index 0851789..5259e92 100644
--- a/coverage/recommend/server/services/plex/index.html
+++ b/coverage/recommend/server/services/plex/index.html
@@ -132,7 +132,7 @@
diff --git a/coverage/recommend/server/services/plex/index.js.html b/coverage/recommend/server/services/plex/index.js.html
index 8589662..98efe99 100644
--- a/coverage/recommend/server/services/plex/index.js.html
+++ b/coverage/recommend/server/services/plex/index.js.html
@@ -244,7 +244,7 @@ export default {
diff --git a/coverage/recommend/server/services/plex/plexApi.js.html b/coverage/recommend/server/services/plex/plexApi.js.html
index 73d4cc5..552090f 100644
--- a/coverage/recommend/server/services/plex/plexApi.js.html
+++ b/coverage/recommend/server/services/plex/plexApi.js.html
@@ -322,7 +322,7 @@ export default {
diff --git a/migrations/20190224043920-create-user.js b/migrations/20190224043920-create-user.js
index e84af70..80c67d3 100644
--- a/migrations/20190224043920-create-user.js
+++ b/migrations/20190224043920-create-user.js
@@ -1,6 +1,6 @@
module.exports = {
up(queryInterface, Sequelize) {
- return queryInterface.createTable('users', {
+ return queryInterface.createTable('Users', {
id: {
allowNull: false,
autoIncrement: true,
@@ -28,6 +28,6 @@ module.exports = {
},
// eslint-disable-next-line no-unused-vars
down: (queryInterface, Sequelize) => {
- return queryInterface.dropTable('users');
+ return queryInterface.dropTable('Users');
},
};
diff --git a/migrations/20190224045315-create-plex-library.js b/migrations/20190224045315-create-plex-library.js
index 4d8393e..656dd25 100644
--- a/migrations/20190224045315-create-plex-library.js
+++ b/migrations/20190224045315-create-plex-library.js
@@ -1,12 +1,15 @@
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.createTable('plexlibraries', {
+ return queryInterface.createTable('PlexLibraries', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
+ title: {
+ type: Sequelize.STRING,
+ },
type: {
type: Sequelize.STRING,
},
@@ -43,6 +46,6 @@ module.exports = {
},
// eslint-disable-next-line no-unused-vars
down: (queryInterface, Sequelize) => {
- return queryInterface.dropTable('plexlibraries');
+ return queryInterface.dropTable('PlexLibraries');
},
};
diff --git a/migrations/20190224045418-create-plex-section.js b/migrations/20190224045418-create-plex-section.js
index 15272cd..e5d7961 100644
--- a/migrations/20190224045418-create-plex-section.js
+++ b/migrations/20190224045418-create-plex-section.js
@@ -1,6 +1,6 @@
module.exports = {
up: (queryInterface, Sequelize) => {
- return queryInterface.createTable('plexsections', {
+ return queryInterface.createTable('PlexSections', {
id: {
allowNull: false,
autoIncrement: true,
@@ -27,7 +27,7 @@ module.exports = {
userId: {
type: Sequelize.INTEGER,
references: {
- model: 'users',
+ model: 'Users',
key: 'id',
},
},
@@ -35,6 +35,6 @@ module.exports = {
},
// eslint-disable-next-line no-unused-vars
down: (queryInterface, Sequelize) => {
- return queryInterface.dropTable('plexsections');
+ return queryInterface.dropTable('PlexSections');
},
};
diff --git a/package-lock.json b/package-lock.json
index a538d6e..5dd698e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2782,6 +2782,12 @@
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
+ "faker": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/faker/-/faker-4.1.0.tgz",
+ "integrity": "sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8=",
+ "dev": true
+ },
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
diff --git a/package.json b/package.json
index e86ae19..82964de 100644
--- a/package.json
+++ b/package.json
@@ -63,6 +63,7 @@
"eslint-plugin-import": "^2.16.0",
"eslint-plugin-prefer-arrow": "^1.1.4",
"eslint-plugin-prettier": "3.0.1",
+ "faker": "^4.1.0",
"husky": "1.3.1",
"i": "^0.3.6",
"lint-staged": "8.1.3",
diff --git a/server/models/plexLibrary.js b/server/models/plexLibrary.js
index 6122428..fd02644 100644
--- a/server/models/plexLibrary.js
+++ b/server/models/plexLibrary.js
@@ -1,7 +1,8 @@
module.exports = (sequelize, DataTypes) => {
const PlexLibrary = sequelize.define(
- 'plexlibrary',
+ 'PlexLibrary',
{
+ title: DataTypes.STRING,
type: DataTypes.STRING,
views: DataTypes.INTEGER,
rating_key: DataTypes.INTEGER,
diff --git a/server/models/plexSection.js b/server/models/plexSection.js
index 50a1b6f..a5bf0f5 100644
--- a/server/models/plexSection.js
+++ b/server/models/plexSection.js
@@ -1,6 +1,6 @@
module.exports = (sequelize, DataTypes) => {
const PlexSection = sequelize.define(
- 'plexsection',
+ 'PlexSection',
{
title: DataTypes.STRING,
type: DataTypes.STRING,
@@ -9,8 +9,7 @@ module.exports = (sequelize, DataTypes) => {
{},
);
PlexSection.associate = function(models) {
- console.log(models);
- PlexSection.belongsTo(models.user);
+ PlexSection.belongsTo(models.User);
};
return PlexSection;
};
diff --git a/server/models/user.js b/server/models/user.js
index e290193..b7efa17 100644
--- a/server/models/user.js
+++ b/server/models/user.js
@@ -1,6 +1,6 @@
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define(
- 'user',
+ 'User',
{
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
@@ -9,7 +9,7 @@ module.exports = (sequelize, DataTypes) => {
{},
);
User.associate = function(models) {
- User.hasMany(models.plexsection);
+ User.hasMany(models.PlexSection);
};
return User;
};
diff --git a/server/services/plex/importData.js b/server/services/plex/importData.js
index da760a1..d0076db 100644
--- a/server/services/plex/importData.js
+++ b/server/services/plex/importData.js
@@ -1,8 +1,7 @@
-import plexApiClient from './plexApi';
+import plexApi from './plexApi';
import models from '../../models';
const importSections = async () => {
- const plexApi = plexApiClient();
const sections = await plexApi.getSections();
createSections(sections);
return sections;
@@ -20,7 +19,6 @@ const createSections = sections => {
};
const importLibraries = async () => {
- const plexApi = plexApiClient();
const sections = await plexApi.getSections();
sections.forEach(async section => {
await importLibrary(section.key);
@@ -28,7 +26,6 @@ const importLibraries = async () => {
};
const importMostWatched = async req => {
- const plexApi = plexApiClient();
const mostWatched = await plexApi.getMostWatched(req);
mostWatched.forEach(async libraryData => {
await updateLibrary([libraryData]);
@@ -36,7 +33,6 @@ const importMostWatched = async req => {
};
const importLibrary = async sectionId => {
- const plexApi = plexApiClient();
const libraryData = await plexApi.getLibraryDataBySection({
sectionId,
});
diff --git a/test/factories/index.js b/test/factories/index.js
new file mode 100644
index 0000000..5010a60
--- /dev/null
+++ b/test/factories/index.js
@@ -0,0 +1,8 @@
+import { forEach } from 'lodash';
+import requireDirectory from 'require-directory';
+
+const factories = requireDirectory(module, './');
+
+forEach(factories, (value, key) => {
+ factories[key] = value.default;
+});
diff --git a/test/factories/user.js b/test/factories/user.js
new file mode 100644
index 0000000..95e312d
--- /dev/null
+++ b/test/factories/user.js
@@ -0,0 +1,32 @@
+import faker from 'faker';
+
+import models from '../../server/models';
+
+/**
+ * Generate an object which contains attributes needed
+ * to successfully create a user instance.
+ *
+ * @param {Object} props Properties to use for the user.
+ *
+ * @return {Object} An object to build the user from.
+ */
+const data = async (props = {}) => {
+ const defaultProps = {
+ email: faker.internet.email(),
+ first_name: faker.name.firstName(),
+ last_name: faker.name.lastName(),
+ createdAt: faker.date.soon(1),
+ updatedAt: faker.date.soon(1),
+ };
+
+ return Object.assign({}, defaultProps, props);
+};
+
+/**
+ * Generates a user instance from the properties provided.
+ *
+ * @param {Object} props Properties to use for the user.
+ *
+ * @return {Object} A user instance
+ */
+export default async (props = {}) => models.User.create(await data(props));
diff --git a/test/server/models/plexSection.test.js b/test/server/models/plexSection.test.js
index 3624f52..7d8ceeb 100644
--- a/test/server/models/plexSection.test.js
+++ b/test/server/models/plexSection.test.js
@@ -1,18 +1,26 @@
-import plexSection from '../../../server/models/plexSection';
+import { assert } from 'chai';
+import factories from '../../factories';
+import truncate from '../../truncate';
-const {
- sequelize,
- dataTypes,
- checkModelName,
- checkPropertyExists,
-} = require('sequelize-test-helpers');
+import models from '../../../server/models';
-describe('server/models/plexSection', () => {
- const Model = plexSection(sequelize, dataTypes);
- const instance = new Model();
+describe('User model', () => {
+ let user;
- checkModelName(Model)('plex_section');
- context('properties', () => {
- ['title', 'type', 'key', 'userId'].forEach(checkPropertyExists(instance));
+ beforeEach(async () => {
+ await truncate();
+
+ console.log('mike=========', factories);
+ user = await factories.user();
+ });
+
+ it('should generate a user from the factory', async () => {
+ assert.isOk(user.id);
+ });
+
+ it('should truncate the user table with each test', async () => {
+ const count = await models.User.count();
+
+ assert.equal(count, 1);
});
});
diff --git a/test/truncate.js b/test/truncate.js
new file mode 100644
index 0000000..3386734
--- /dev/null
+++ b/test/truncate.js
@@ -0,0 +1,19 @@
+import models from '../server/models';
+
+const truncateTable = modelName => models[modelName].destroy({
+ where: {},
+ force: true,
+});
+
+export default async function truncate(model) {
+ if (model) {
+ return truncateTable(model);
+ }
+
+ return Promise.all(
+ Object.keys(models).map((key) => {
+ if (['sequelize', 'Sequelize'].includes(key)) return null;
+ return truncateTable(key);
+ }),
+ );
+}