From eb75d01710deda0a775d9d2360418f881bf5a9dc Mon Sep 17 00:00:00 2001 From: "mike.rode" Date: Sun, 24 Feb 2019 12:59:26 -0600 Subject: [PATCH] Move all DB dependencies to DB folder. --- .sequelizerc | 6 ++- coverage/index.html | 36 +++++++-------- coverage/recommend/config/index.html | 2 +- coverage/recommend/config/index.js.html | 2 +- coverage/recommend/config/plex.js.html | 2 +- coverage/recommend/config/test.js.html | 2 +- coverage/recommend/index.html | 2 +- coverage/recommend/index.js.html | 2 +- .../recommend/server/controllers/index.html | 2 +- .../controllers/plex.controller.js.html | 2 +- coverage/recommend/server/index.html | 2 +- coverage/recommend/server/index.js.html | 4 +- coverage/recommend/server/models/index.html | 6 +-- .../recommend/server/models/index.js.html | 2 +- .../server/models/plexLibrary.js.html | 2 +- .../server/models/plexSection.js.html | 6 +-- coverage/recommend/server/models/user.js.html | 2 +- coverage/recommend/server/routes/index.html | 2 +- .../server/routes/plex.route.js.html | 2 +- .../server/services/plex/auth.js.html | 2 +- .../server/services/plex/helpers.js.html | 2 +- .../server/services/plex/importData.js.html | 4 +- .../recommend/server/services/plex/index.html | 2 +- .../server/services/plex/index.js.html | 2 +- .../server/services/plex/plexApi.js.html | 2 +- {config => server/db/config}/config.json | 0 .../migrations}/20190224043920-create-user.js | 0 .../20190224045315-create-plex-library.js | 0 .../20190224045418-create-plex-section.js | 0 server/db/models/index.js | 46 +++++++++++++++++++ server/{ => db}/models/plexSection.js | 0 server/{ => db}/models/plexlibrary.js | 0 server/{ => db}/models/user.js | 0 .../db/seeders}/20190224044137-demo-user.js | 0 server/index.js | 2 +- server/models/index.js | 42 ----------------- server/services/plex/importData.js | 2 +- test/mocks/plexApi/getUsers.xml | 21 --------- test/nocks.js | 17 +++++++ test/server/services/plex/importData.test.js | 2 +- test/truncate.js | 2 +- 41 files changed, 118 insertions(+), 116 deletions(-) rename {config => server/db/config}/config.json (100%) rename {migrations => server/db/migrations}/20190224043920-create-user.js (100%) rename {migrations => server/db/migrations}/20190224045315-create-plex-library.js (100%) rename {migrations => server/db/migrations}/20190224045418-create-plex-section.js (100%) create mode 100644 server/db/models/index.js rename server/{ => db}/models/plexSection.js (100%) rename server/{ => db}/models/plexlibrary.js (100%) rename server/{ => db}/models/user.js (100%) rename {seeders => server/db/seeders}/20190224044137-demo-user.js (100%) delete mode 100644 server/models/index.js delete mode 100644 test/mocks/plexApi/getUsers.xml create mode 100644 test/nocks.js diff --git a/.sequelizerc b/.sequelizerc index 432333e..02c4e41 100644 --- a/.sequelizerc +++ b/.sequelizerc @@ -1,6 +1,8 @@ var path = require('path') module.exports = { - 'models-path': path.resolve('server', 'models'), - + config: path.resolve('server', 'db', 'config', 'config.json'), + 'models-path': path.resolve('server', 'db', 'models'), + 'seeders-path': path.resolve('server', 'db', 'seeders'), + 'migrations-path': path.resolve('server', 'db', 'migrations') } \ No newline at end of file diff --git a/coverage/index.html b/coverage/index.html index 7490b1f..59b31bb 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -20,24 +20,24 @@
- 87.62% + 87.63% Statements - 177/202 + 170/194
- 68.97% + 73.91% Branches - 20/29 + 17/23
- 83.02% + 83.33% Functions - 44/53 + 45/54
- 87.56% + 87.5% Lines - 176/201 + 168/192

@@ -114,16 +114,16 @@ - recommend/server/models -

- 97.22% - 35/36 - 66.67% - 6/9 + recommend/server/db/models +
100% - 9/9 - 97.22% - 35/36 + 28/28 + 100% + 3/3 + 100% + 10/10 + 100% + 27/27 @@ -158,7 +158,7 @@ diff --git a/coverage/recommend/config/index.html b/coverage/recommend/config/index.html index 721914a..ae2ccf8 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 8929010..61545ce 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 26fa303..89703ba 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 a60830f..165ded6 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 8a975df..7db100b 100644 --- a/coverage/recommend/index.html +++ b/coverage/recommend/index.html @@ -80,7 +80,7 @@ diff --git a/coverage/recommend/index.js.html b/coverage/recommend/index.js.html index 42ae9eb..525fd31 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 b0c3068..62339e7 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 b141a5d..959bd4e 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 91b2509..c6a2ea3 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 342d405..311ca82 100644 --- a/coverage/recommend/server/index.js.html +++ b/coverage/recommend/server/index.js.html @@ -132,7 +132,7 @@    
import express from 'express';
 import {json, urlencoded} from 'body-parser';
-import {sequelize} from './models';
+import {sequelize} from './db/models';
 import plex from './routes/plex.route';
  
 export default () => {
@@ -178,7 +178,7 @@ export default () => {
 
 
 
 
diff --git a/coverage/recommend/server/models/index.html b/coverage/recommend/server/models/index.html
index 520f96b..116812f 100644
--- a/coverage/recommend/server/models/index.html
+++ b/coverage/recommend/server/models/index.html
@@ -75,7 +75,7 @@
 	
 
 
-	plexlibrary.js
+	plexSection.js
 	
100% 5/5 @@ -88,7 +88,7 @@ - plexsection.js + plexlibrary.js
100% 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 469a851..41b25e3 100644 --- a/coverage/recommend/server/models/index.js.html +++ b/coverage/recommend/server/models/index.js.html @@ -178,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 098a1bd..b5a6c33 100644 --- a/coverage/recommend/server/models/plexLibrary.js.html +++ b/coverage/recommend/server/models/plexLibrary.js.html @@ -118,7 +118,7 @@ diff --git a/coverage/recommend/server/models/plexSection.js.html b/coverage/recommend/server/models/plexSection.js.html index 9efbf17..84a9860 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,7 +16,7 @@

- All files / recommend/server/models plexsection.js + All files / recommend/server/models plexSection.js

@@ -97,7 +97,7 @@
diff --git a/coverage/recommend/server/models/user.js.html b/coverage/recommend/server/models/user.js.html index 20b1808..20fd35c 100644 --- a/coverage/recommend/server/models/user.js.html +++ b/coverage/recommend/server/models/user.js.html @@ -100,7 +100,7 @@
diff --git a/coverage/recommend/server/routes/index.html b/coverage/recommend/server/routes/index.html index 94a5d5e..ffe94ab 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 135843d..b0d9cb5 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 b4dbc1c..14543f9 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 45b3e3d..70f2c9d 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 f343d8d..a7edc60 100644 --- a/coverage/recommend/server/services/plex/importData.js.html +++ b/coverage/recommend/server/services/plex/importData.js.html @@ -237,7 +237,7 @@      
import plexApi from './plexApi';
-import models from '../../models';
+import models from '../../db/models';
  
 const importSections = async () => {
   const sections = await plexApi.getSections();
@@ -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 49d9e8a..51d2d71 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 06f5666..1b15078 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 d861bc9..584adf7 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/config/config.json b/server/db/config/config.json
similarity index 100%
rename from config/config.json
rename to server/db/config/config.json
diff --git a/migrations/20190224043920-create-user.js b/server/db/migrations/20190224043920-create-user.js
similarity index 100%
rename from migrations/20190224043920-create-user.js
rename to server/db/migrations/20190224043920-create-user.js
diff --git a/migrations/20190224045315-create-plex-library.js b/server/db/migrations/20190224045315-create-plex-library.js
similarity index 100%
rename from migrations/20190224045315-create-plex-library.js
rename to server/db/migrations/20190224045315-create-plex-library.js
diff --git a/migrations/20190224045418-create-plex-section.js b/server/db/migrations/20190224045418-create-plex-section.js
similarity index 100%
rename from migrations/20190224045418-create-plex-section.js
rename to server/db/migrations/20190224045418-create-plex-section.js
diff --git a/server/db/models/index.js b/server/db/models/index.js
new file mode 100644
index 0000000..b976b09
--- /dev/null
+++ b/server/db/models/index.js
@@ -0,0 +1,46 @@
+import fs from 'fs';
+import path from 'path';
+import Sequelize from 'sequelize';
+import configs from '../config/config';
+
+const basename = path.basename(__filename);
+// istanbul ignore next
+const env = process.env.NODE_ENV || 'development';
+const config = configs[env];
+const capitalize = string => string[0].toUpperCase() + string.slice(1);
+
+const sequelize = new Sequelize(
+  config.database,
+  config.username,
+  config.password,
+  {
+    ...config,
+    operatorsAliases: false,
+    logging: false,
+  },
+);
+
+const db = fs
+  .readdirSync(__dirname)
+  .filter(
+    file =>
+      file.indexOf('.') !== 0 && file !== basename && file.slice(-3) === '.js',
+  )
+  .reduce(
+    (acc, file) => {
+      const model = sequelize.import(path.join(__dirname, file));
+      acc[capitalize(model.name)] = model;
+      return acc;
+    },
+    {sequelize, Sequelize},
+  );
+
+Object.keys(db).forEach(modelName => {
+  // istanbul ignore next
+  if (db[modelName].associate) {
+    db[modelName].associate(db);
+  }
+});
+
+// Syntax required to destructure models off of exported db
+module.exports = db;
diff --git a/server/models/plexSection.js b/server/db/models/plexSection.js
similarity index 100%
rename from server/models/plexSection.js
rename to server/db/models/plexSection.js
diff --git a/server/models/plexlibrary.js b/server/db/models/plexlibrary.js
similarity index 100%
rename from server/models/plexlibrary.js
rename to server/db/models/plexlibrary.js
diff --git a/server/models/user.js b/server/db/models/user.js
similarity index 100%
rename from server/models/user.js
rename to server/db/models/user.js
diff --git a/seeders/20190224044137-demo-user.js b/server/db/seeders/20190224044137-demo-user.js
similarity index 100%
rename from seeders/20190224044137-demo-user.js
rename to server/db/seeders/20190224044137-demo-user.js
diff --git a/server/index.js b/server/index.js
index 032c2f9..0f39a99 100644
--- a/server/index.js
+++ b/server/index.js
@@ -1,6 +1,6 @@
 import express from 'express';
 import {json, urlencoded} from 'body-parser';
-import {sequelize} from './models';
+import {sequelize} from './db/models';
 import plex from './routes/plex.route';
 
 export default () => {
diff --git a/server/models/index.js b/server/models/index.js
deleted file mode 100644
index 5634cc9..0000000
--- a/server/models/index.js
+++ /dev/null
@@ -1,42 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-const Sequelize = require('sequelize');
-
-const basename = path.basename(__filename);
-const env = process.env.NODE_ENV || 'development';
-const config = require(`${__dirname}/../../config/config.json`)[env];
-const db = {};
-
-let sequelize;
-if (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,
-  );
-}
-
-fs.readdirSync(__dirname)
-  .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(modelName => {
-  if (db[modelName].associate) {
-    db[modelName].associate(db);
-  }
-});
-
-db.sequelize = sequelize;
-db.Sequelize = Sequelize;
-
-module.exports = db;
diff --git a/server/services/plex/importData.js b/server/services/plex/importData.js
index 89ef71d..0da7da9 100644
--- a/server/services/plex/importData.js
+++ b/server/services/plex/importData.js
@@ -1,5 +1,5 @@
 import plexApi from './plexApi';
-import models from '../../models';
+import models from '../../db/models';
 
 const importSections = async () => {
   const sections = await plexApi.getSections();
diff --git a/test/mocks/plexApi/getUsers.xml b/test/mocks/plexApi/getUsers.xml
deleted file mode 100644
index 802ba3c..0000000
--- a/test/mocks/plexApi/getUsers.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-
\ No newline at end of file
diff --git a/test/nocks.js b/test/nocks.js
new file mode 100644
index 0000000..61f9042
--- /dev/null
+++ b/test/nocks.js
@@ -0,0 +1,17 @@
+import nock from 'nock';
+import responses from './server/services/plex/mocks/plexResponses';
+
+const plexSections = () => nock('https://plex.mjrflix.com')
+  .get('/library/sections?X-Plex-Token=testPlexApiToken')
+  .reply(200, responses.sections, {
+    'Content-Type': 'text/json',
+  });
+
+const plexLibrary = () => nock('https://plex.mjrflix.com')
+  .persist()
+  .get(url => url.includes('/library/sections/'))
+  .reply(200, responses.getLibraryDataBySectionRaw, {
+    'Content-Type': 'text/json',
+  });
+
+export default { plexSections, plexLibrary };
diff --git a/test/server/services/plex/importData.test.js b/test/server/services/plex/importData.test.js
index 683cada..a5712e2 100644
--- a/test/server/services/plex/importData.test.js
+++ b/test/server/services/plex/importData.test.js
@@ -2,7 +2,7 @@ import chai from 'chai';
 import nock from 'nock';
 import app from '../../../../index';
 import responses from './mocks/plexResponses';
-import { PlexSection, User, PlexLibrary } from '../../../../server/models';
+import { PlexSection, User, PlexLibrary } from '../../../../server/db/models';
 import truncate from '../../../truncate';
 
 // before(() => truncate('PlexSection'));
diff --git a/test/truncate.js b/test/truncate.js
index 3386734..b91b339 100644
--- a/test/truncate.js
+++ b/test/truncate.js
@@ -1,4 +1,4 @@
-import models from '../server/models';
+import models from '../server/db/models';
 
 const truncateTable = modelName => models[modelName].destroy({
   where: {},