From c93800aeab02bf19aea89a8222c8bc02da286c54 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Fri, 12 Feb 2016 21:19:02 -0500 Subject: [PATCH 01/93] db file stuff --- package.json | 2 ++ src/db.js | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/package.json b/package.json index daaf393..af9e161 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,10 @@ "homepage": "https://github.com/reactivepixel/Gravity#readme", "dependencies": { "body-parser": "1.15.0", + "dotenv": "^2.0.0", "express": "4.13.4", "faker": "3.0.1", + "mysql": "^2.10.2", "request": "2.69.0", "sequelize": "3.19.2" } diff --git a/src/db.js b/src/db.js index e69de29..94dcb52 100644 --- a/src/db.js +++ b/src/db.js @@ -0,0 +1,17 @@ +module.exports = function() { + const express = require('express'); + const dotenv = require('dotenv').load(); + const Sqlize = require('sequelize'); + const mysql = require('mysql'); + + const sqlize = new Sqlize(process.env.DB_NAME, process.env.DB_USER, + process.env.DB_PASS, { + host: 'localhost', + dialect: 'mysql', + port: process.env.DB_PORT, + pool: { max: 5, min: 0, idle: 10000 } + }); + + sqlize.sync(); + console.log("I think it works?"); +}; From e366ae0571d7086d64d14a338def328acc320d0c Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Fri, 12 Feb 2016 21:21:57 -0500 Subject: [PATCH 02/93] Database stuff --- server/db.js | 17 +++++++++++++++++ src/db.js | 17 ----------------- 2 files changed, 17 insertions(+), 17 deletions(-) delete mode 100644 src/db.js diff --git a/server/db.js b/server/db.js index e69de29..94dcb52 100644 --- a/server/db.js +++ b/server/db.js @@ -0,0 +1,17 @@ +module.exports = function() { + const express = require('express'); + const dotenv = require('dotenv').load(); + const Sqlize = require('sequelize'); + const mysql = require('mysql'); + + const sqlize = new Sqlize(process.env.DB_NAME, process.env.DB_USER, + process.env.DB_PASS, { + host: 'localhost', + dialect: 'mysql', + port: process.env.DB_PORT, + pool: { max: 5, min: 0, idle: 10000 } + }); + + sqlize.sync(); + console.log("I think it works?"); +}; diff --git a/src/db.js b/src/db.js deleted file mode 100644 index 94dcb52..0000000 --- a/src/db.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = function() { - const express = require('express'); - const dotenv = require('dotenv').load(); - const Sqlize = require('sequelize'); - const mysql = require('mysql'); - - const sqlize = new Sqlize(process.env.DB_NAME, process.env.DB_USER, - process.env.DB_PASS, { - host: 'localhost', - dialect: 'mysql', - port: process.env.DB_PORT, - pool: { max: 5, min: 0, idle: 10000 } - }); - - sqlize.sync(); - console.log("I think it works?"); -}; From 43e3a9baa5544f37b39a13715fd9df183a921b54 Mon Sep 17 00:00:00 2001 From: Chapman Date: Fri, 12 Feb 2016 21:27:35 -0500 Subject: [PATCH 03/93] Add Unit Test Example --- package.json | 9 +++++++-- readme.md | 4 ++++ routes/index.js | 24 +++++++++++++----------- src/server.js | 8 +++++++- src/timestamp.js | 8 ++++++-- test/__order.js | 39 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 76 insertions(+), 16 deletions(-) create mode 100644 test/__order.js diff --git a/package.json b/package.json index f15bb24..bc405e8 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "server.js", "scripts": { "test": "echo \"Tests not setup yet\" && exit 0", - "start": "node server.js" + "start": "node server.js", + "postinstall": "npm i -g mocha nodemon" }, "repository": { "type": "git", @@ -21,6 +22,10 @@ "body-parser": "1.15.0", "express": "4.13.4", "faker": "3.0.1", - "request": "2.69.0" + "request": "2.69.0", + "supertest": "1.2.0" + }, + "devDependencies": { + "mocha": "2.4.5" } } diff --git a/readme.md b/readme.md index 8e5d3fb..236f565 100644 --- a/readme.md +++ b/readme.md @@ -2,6 +2,10 @@ Business backend logic for Sol +## Local Dev Installation + +... Add instructions here ... + ## API Documentation ### Order diff --git a/routes/index.js b/routes/index.js index 0111b6a..fc13367 100644 --- a/routes/index.js +++ b/routes/index.js @@ -4,24 +4,26 @@ module.exports = function (express) { // Config const router = express.Router(); - // Unaltered data - const data = {order:{sku: ['a5296ab9-9eee-7ba0-0a79-b801594f2c91'],quantity: 1,recipients: {name: 'John Doe',address: {street: '3300 University Blvd',city: 'Winter Park',state: 'FL',zip: '32792'},phone: '555-555-5555',email: 'jdoe@gmail.com'}}}; // Include uuid generator and timestamp generator const uuid_generator = require('../src/uuid-generator.js'); - const timestamp = require('../src/timestamp.js'); + const timestamp = require('../src/timestamp.js')(); - // Add uuid and timestamp to json data - data.order.uuid = uuid_generator.uuid(); - data.order.timestamp = timestamp.toTimestamp(); - - // Simulate multiple items on same order - data.order.sku.push("b5296ab9-9bbb-5ba0-0a79-a801594f2c91"); // Display altered data - router.get('/', function(req,res){ - res.json(data); + router.put('/order', function(req,res){ + + + // Unaltered data + var data = req.body; + + // Add uuid and timestamp to json data + // data.uuid = uuid_generator.uuid(); + // data.timestamp = timestamp.toTimestamp(); + + + res.json({healthy: true}); }); return router; }; diff --git a/src/server.js b/src/server.js index dcecb52..fa0bbcf 100644 --- a/src/server.js +++ b/src/server.js @@ -3,15 +3,21 @@ // Config const express = require('express'); const body_parser = require('body-parser'); + const fs = require('fs'); const app = express(); const port = process.env.PORT || 3000; +// Body Parser +app.use(body_parser.json()); + // Routes app.use('/', require('../routes/index.js')(express)); app.use('/order', require('../routes/order.js')(express)); // Start server -app.listen(port, function() { +var server = app.listen(port, function() { console.log("Listening on "+port+"..."); }); + +module.exports = server; diff --git a/src/timestamp.js b/src/timestamp.js index 107a6b3..a35d207 100644 --- a/src/timestamp.js +++ b/src/timestamp.js @@ -1,7 +1,7 @@ -module.exports = { +module.exports = function() { // Created a function to get the date - function toTimestamp(strDate) { + function _toTimestamp(strDate) { const now = new Date(); const date = [now.getMonth() + 1, now.getDate(), now.getFullYear()]; const time = [now.getHours(), now.getMinutes(), now.getSeconds()]; @@ -15,4 +15,8 @@ module.exports = { } return date.join("/") + " " + time.join(":") + " " + suffix; } + + return { + toTimestamp: _toTimestamp + } } diff --git a/test/__order.js b/test/__order.js new file mode 100644 index 0000000..2497b34 --- /dev/null +++ b/test/__order.js @@ -0,0 +1,39 @@ +const request = require('supertest'); + +// Manually configure Test Routes, they will be mapped to individual tests +// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +const known_routes = [ + {title: 'Basic Order Test', route: '/order', status_code: 200, res: {healthy: true}}, + // {title: 'Status Check', route: '/api/v1/status', status_code: 200, res: {healthy: true}} +]; + +describe('Loading Express', function () { + var server; + + // Before / After each test create / destroy the express server to fully simulate unique requests. + // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + beforeEach(function (){ + server = require('../src/server.js'); + }); + afterEach(function (){ + server.close(); + }); + + for(var route_index in known_routes){ + it('[' + known_routes[route_index].status_code + '] ' + known_routes[route_index].route + ' ' + known_routes[route_index].title , function testHealth(done){ + request(server) + .put(known_routes[route_index].route) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(known_routes[route_index].status_code, known_routes[route_index].res, done) + }); + } + + // Force a bad route + // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + it('404 everything bad routes', function testHealth(done){ + request(server) + .get('/not/a/real/route') + .expect(404, done); + }); +}); From 32e511f6d9cb7394f4016dcfe0a1eada01b34e31 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Fri, 12 Feb 2016 21:47:51 -0500 Subject: [PATCH 04/93] Added License & Contribute files --- CONTRIBUTE.md | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE.md | 8 +++++ 2 files changed, 107 insertions(+) create mode 100644 CONTRIBUTE.md create mode 100644 LICENSE.md diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md new file mode 100644 index 0000000..b1a081e --- /dev/null +++ b/CONTRIBUTE.md @@ -0,0 +1,99 @@ +/* CONTRIBUTE */ + +This is the contribute.md of our project. Great to have you here. Here are a few ways you can help make this project better! + +# Contribute.md + +## Team members + +This section introduces the core team members. + +James Dickerson +Misha Devine +Keown Creese +Chris Fortin +Aldo Gonzalez +Jacob Nigh +Tyler Richard +Brad Beltowski +Chris Chapman + +## Learn & listen + +This section includes ways to get started with your open source project. Include links to documentation and to different communication channels: + +* Mailing list: +* IRC channel: +* Blog: +* Anything else: + +## Adding new features + +This section includes advice on how to build new features for the project & what kind of process it includes. + +* This is how we like people to add new features: +* Here are some specifics on the coding style we prefer: +* This is how you send your pull request: +* You should include the following tests: +* These are the updates we hope you make to the changelog: + +Don’t get discouraged! We estimate that the response time from the +maintainers is around: + +# Bug triage + +This sections explains how bug triaging is done for your project. Help beginners by including examples to good bug reports and providing them questions they should look to answer. + +* You can help report bugs by filing them here: +* You can look through the existing bugs here: + +* You can help us diagnose and fix existing bugs by asking and providing answers for the following: + + * Is the bug reproducible as explained? + * Is it reproducible in other environments (for instance, on different browsers or devices)? + * Are the steps to reproduce the bug clear? If not, can you describe how you might reproduce it? + * What tags should the bug have? + * Is this bug something you have run into? Would you appreciate it being looked into faster? + +* You can close fixed bugs by testing old tickets to see if they are still happening. +* You can update our changelog here: +* You can remove duplicate bug reports by: + + +# Beta testing + +This section explains if your project needs beta testing. Explain why early releases require heavy testing and how they can help with specially across browsers and on different hardware. + +* For our project you can find the roadmap and features that require +testing from here: + +# Translations + +This section includes any instructions or translation needs your project has. + +* You can help us translate our project here: + +# Documentation + +This section includes any help you need with the documentation and where it can be found. Code needs explanation, and sometimes those who know the code well have trouble explaining it to someone just getting into it. + +* Help us with documentation here + +# Community +This section includes ideas on how non-developers can help with the project. Here's a few examples: + +* You can help us answer questions our users have here: +* You can help build and design our website here: +* You can help write blog posts about the project by: +* You can help with newsletters and internal communications by: + +* Create an example of the project in real world by building something or +showing what others have built. +* Write about other people’s projects based on this project. Show how +it’s used in daily life. Take screenshots and make videos! + + +# Your first bugfix +This section should help a person get started with their very first bug fix and thinking through the problem. + +* If you have further questions, contact: diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..4705f62 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright (c) 2016 Gravity + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 516e3458e2329503e8715e67424c4075951e36d6 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Fri, 12 Feb 2016 21:49:21 -0500 Subject: [PATCH 05/93] listed team members --- CONTRIBUTE.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md index b1a081e..9c54c53 100644 --- a/CONTRIBUTE.md +++ b/CONTRIBUTE.md @@ -8,15 +8,15 @@ This is the contribute.md of our project. Great to have you here. Here are a few This section introduces the core team members. -James Dickerson -Misha Devine -Keown Creese -Chris Fortin -Aldo Gonzalez -Jacob Nigh -Tyler Richard -Brad Beltowski -Chris Chapman +* James Dickerson +* Misha Devine +* Keown Creese +* Chris Fortin +* Aldo Gonzalez +* Jacob Nigh +* Tyler Richard +* Brad Beltowski +* Chris Chapman ## Learn & listen From 87c35e8b5984fce9a23066c3be219162d3389760 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Fri, 12 Feb 2016 21:52:37 -0500 Subject: [PATCH 06/93] fixed request and response objects in readme --- readme.md | 80 ++++++++++++++++++++++++++----------------------------- 1 file changed, 38 insertions(+), 42 deletions(-) diff --git a/readme.md b/readme.md index 8e5d3fb..855b500 100644 --- a/readme.md +++ b/readme.md @@ -15,26 +15,24 @@ Business backend logic for Sol ```javascript { - order: { - units: [ - { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', - quantity: 1}, - { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', - quantity: 1} - ], - recipients: { - name: 'John Doe', - address:{ - street: '3300 University Blvd', - city: 'Winter Park', - state: 'FL', - zip: '32792' - }, - phone: '555-555-5555', - email: 'jdoe@gmail.com' - } + units: [ + { + sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + quantity: 1}, + { + sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + quantity: 1} + ], + recipients: { + name: 'John Doe', + address:{ + street: '3300 University Blvd', + city: 'Winter Park', + state: 'FL', + zip: '32792' + }, + phone: '555-555-5555', + email: 'jdoe@gmail.com' } } ``` @@ -43,29 +41,27 @@ Business backend logic for Sol ```javascript { - order: { - units: [ - { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', - quantity: 1}, - { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', - quantity: 1} - ], - recipients: { - name: 'John Doe', - address:{ - street: '3300 University Blvd', - city: 'Winter Park', - state: 'FL', - zip: '32792' - }, - phone: '555-555-5555', - email: 'jdoe@gmail.com' + units: [ + { + sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + quantity: 1}, + { + sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + quantity: 1} + ], + recipients: { + name: 'John Doe', + address:{ + street: '3300 University Blvd', + city: 'Winter Park', + state: 'FL', + zip: '32792' }, - uuid: 'generated uuid', - timestamp: '2/12/2016 2:10:25 AM' - } + phone: '555-555-5555', + email: 'jdoe@gmail.com' + }, + uuid: 'generated uuid', + timestamp: '2/12/2016 2:10:25 AM' } ``` From e221ee92bb322a89e269995baf26ce49ef8d354a Mon Sep 17 00:00:00 2001 From: therealaldo Date: Fri, 12 Feb 2016 21:57:58 -0500 Subject: [PATCH 07/93] fixed readme --- readme.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/readme.md b/readme.md index 855b500..6757d81 100644 --- a/readme.md +++ b/readme.md @@ -67,6 +67,9 @@ Business backend logic for Sol ## Contributing +See [Contribute.md](https://github.com/reactivepixel/Gravity/blob/order_bot/CONTRIBUTE.md) + for more information on how to contribute + 1. Fork it! 2. Create your feature branch: `git checkout -b my-new-feature` 3. Commit your changes: `git commit -am 'Add some feature'` From 48cff273d991663364df7ddd059218a89f950f9a Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Fri, 12 Feb 2016 22:01:44 -0500 Subject: [PATCH 08/93] added model folder --- models/order.js | 0 server/db.js | 11 +++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 models/order.js diff --git a/models/order.js b/models/order.js new file mode 100644 index 0000000..e69de29 diff --git a/server/db.js b/server/db.js index 94dcb52..01aacd2 100644 --- a/server/db.js +++ b/server/db.js @@ -1,10 +1,12 @@ module.exports = function() { - const express = require('express'); + + //Requring dependencies. const dotenv = require('dotenv').load(); - const Sqlize = require('sequelize'); + const Sequelize = require('sequelize'); const mysql = require('mysql'); - const sqlize = new Sqlize(process.env.DB_NAME, process.env.DB_USER, + //Initizling sequelize. + const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, { host: 'localhost', dialect: 'mysql', @@ -13,5 +15,6 @@ module.exports = function() { }); sqlize.sync(); - console.log("I think it works?"); + + }; From 80479aad7134b43eb597c8e05140ccbb4b830271 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Fri, 12 Feb 2016 22:21:22 -0500 Subject: [PATCH 09/93] Setup sequelize connection. --- models/order.js | 5 +++++ package.json | 4 ++-- server/db.js | 8 +++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/models/order.js b/models/order.js index e69de29..334a0ce 100644 --- a/models/order.js +++ b/models/order.js @@ -0,0 +1,5 @@ +const db = require('../server/db.js')(); +const Sequelize = require('sequelize'); +const sequelize = db.connection; + +console.log('hey', sequelize); diff --git a/package.json b/package.json index af9e161..b3fb221 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,10 @@ "homepage": "https://github.com/reactivepixel/Gravity#readme", "dependencies": { "body-parser": "1.15.0", - "dotenv": "^2.0.0", + "dotenv": "2.0.0", "express": "4.13.4", "faker": "3.0.1", - "mysql": "^2.10.2", + "mysql": "2.10.2", "request": "2.69.0", "sequelize": "3.19.2" } diff --git a/server/db.js b/server/db.js index 01aacd2..0bf644c 100644 --- a/server/db.js +++ b/server/db.js @@ -6,15 +6,13 @@ module.exports = function() { const mysql = require('mysql'); //Initizling sequelize. - const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, - process.env.DB_PASS, { + const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, { host: 'localhost', dialect: 'mysql', port: process.env.DB_PORT, pool: { max: 5, min: 0, idle: 10000 } }); - sqlize.sync(); - - + sequelize.sync(); + return { connection: sequelize }; }; From 93e09351b2f4285578a75d94ffbb0507bb1e5932 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Fri, 12 Feb 2016 22:49:23 -0500 Subject: [PATCH 10/93] Added database installation to readme. --- readme.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/readme.md b/readme.md index 6757d81..439e0cd 100644 --- a/readme.md +++ b/readme.md @@ -2,6 +2,54 @@ Business backend logic for Sol +## Setting up + +Clone the git repository to your machine using ssh. +``` +$ git clone git@github.com:reactivepixel/Gravity.git +$ npm install //Installs the package.json file. +``` + +## Database Installation + +### Installing mySQL & adding .env file + +To check to see if you have mySQL installed on your machine. +``` +$ mysql --verison +``` + +If mySQL is not installed. Install it with [Homebrew](http://brew.sh/). +``` +$ brew install mysql +``` + +Start mySQL server. +``` +$ mysql.server start //Starting mySQL server. +$ mysql -u root //Logging in as root. + +//Once logged into mySQL +mysql> create database gravity; +``` + +Create an .env file in your root directory. +``` +$ touch .env + +//Add this to the .env file +DB_HOST=localhost +DB_NAME=gravity +DB_USER={local user} //Default root unless otherwise specified. +DB_PASS={local password} //Standard install is set to blank. +DB_PORT={local port running mysql} //Standard port is 3306. +``` + +If mySQL does not work try: +``` +$ mysql.server restart +``` + ## API Documentation ### Order From 7359ab4e9ae1db0f4cf673344de31df3ef90e2a2 Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 13 Feb 2016 00:19:48 -0500 Subject: [PATCH 11/93] Created models and tables for database --- models/inventory.js | 14 ++++++++++++++ models/itemOrders.js | 17 +++++++++++++++++ models/order.js | 5 ----- models/orders.js | 35 +++++++++++++++++++++++++++++++++++ models/units.js | 17 +++++++++++++++++ 5 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 models/inventory.js create mode 100644 models/itemOrders.js delete mode 100644 models/order.js create mode 100644 models/orders.js create mode 100644 models/units.js diff --git a/models/inventory.js b/models/inventory.js new file mode 100644 index 0000000..23b003b --- /dev/null +++ b/models/inventory.js @@ -0,0 +1,14 @@ +const db = require('../server/db.js')(); +const Sequelize = require('sequelize'); +const sequelize = db.connection; + +const inventory = sequelize.define('inventory', { + sku: { + type: Sequelize.STRING + }, + location: { + type: Sequelize.STRING + } +}); + +sequelize.sync(); \ No newline at end of file diff --git a/models/itemOrders.js b/models/itemOrders.js new file mode 100644 index 0000000..724d91b --- /dev/null +++ b/models/itemOrders.js @@ -0,0 +1,17 @@ +const db = require('../server/db.js')(); +const Sequelize = require('sequelize'); +const sequelize = db.connection; + +const itemOrders = sequelize.define('itemOrders', { + sku: { + type: Sequelize.STRING + }, + orderId: { + type: Sequelize.STRING + }, + quantity: { + type: Sequelize.STRING + } +}); + + sequelize.sync(); \ No newline at end of file diff --git a/models/order.js b/models/order.js deleted file mode 100644 index 334a0ce..0000000 --- a/models/order.js +++ /dev/null @@ -1,5 +0,0 @@ -const db = require('../server/db.js')(); -const Sequelize = require('sequelize'); -const sequelize = db.connection; - -console.log('hey', sequelize); diff --git a/models/orders.js b/models/orders.js new file mode 100644 index 0000000..869a6c5 --- /dev/null +++ b/models/orders.js @@ -0,0 +1,35 @@ +const db = require('../server/db.js')(); +const Sequelize = require('sequelize'); +const sequelize = db.connection; + +const orders = sequelize.define('orders', { + orderId: { + type: Sequelize.STRING + }, + fullName: { + type: Sequelize.STRING + }, + streetAddress: { + type: Sequelize.STRING + }, + city: { + type: Sequelize.STRING + }, + state: { + type: Sequelize.STRING + }, + zip: { + type: Sequelize.STRING + }, + phone: { + type: Sequelize.STRING + }, + email: { + type: Sequelize.STRING + }, + timeStamp: { + type: Sequelize.STRING + } +}); + +sequelize.sync(); \ No newline at end of file diff --git a/models/units.js b/models/units.js new file mode 100644 index 0000000..5e628b5 --- /dev/null +++ b/models/units.js @@ -0,0 +1,17 @@ +const db = require('../server/db.js')(); +const Sequelize = require('sequelize'); +const sequelize = db.connection; + +const units = sequelize.define('units', { + sku: { + type: Sequelize.STRING + }, + name: { + type: Sequelize.STRING + }, + description: { + type: Sequelize.STRING + } +}); + + sequelize.sync(); \ No newline at end of file From 32c6ca11fc688de958ca03c833ea4a74f260ba1f Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sun, 14 Feb 2016 18:33:52 -0500 Subject: [PATCH 12/93] trying to fix onflicts --- readme.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 27a5d96..671835e 100644 --- a/readme.md +++ b/readme.md @@ -2,11 +2,10 @@ Business backend logic for Sol -<<<<<<< HEAD ## Local Dev Installation ... Add instructions here ... -======= + ## Setting up Clone the git repository to your machine using ssh. From deb666969651598cf3f814300962a929f28cd83b Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sun, 14 Feb 2016 18:36:10 -0500 Subject: [PATCH 13/93] fixed readme --- readme.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/readme.md b/readme.md index 671835e..439e0cd 100644 --- a/readme.md +++ b/readme.md @@ -2,10 +2,6 @@ Business backend logic for Sol -## Local Dev Installation - -... Add instructions here ... - ## Setting up Clone the git repository to your machine using ssh. @@ -53,7 +49,6 @@ If mySQL does not work try: ``` $ mysql.server restart ``` ->>>>>>> 72345462f557cbec2e58aaf967146e6cc2864f7e ## API Documentation From ed79a1ebde63d3271a3237820c9c81db3c4bb2df Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 15 Feb 2016 21:14:51 -0500 Subject: [PATCH 14/93] added use strict to all necessary files --- models/inventory.js | 3 ++- models/itemOrders.js | 3 ++- models/orders.js | 3 ++- models/units.js | 3 ++- routes/home.js | 1 + routes/order.js | 1 + server/db.js | 1 + server/timestamp.js | 1 + server/uuid-generator.js | 1 + 9 files changed, 13 insertions(+), 4 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index 23b003b..b22a1d0 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -1,3 +1,4 @@ +'use strict'; const db = require('../server/db.js')(); const Sequelize = require('sequelize'); const sequelize = db.connection; @@ -11,4 +12,4 @@ const inventory = sequelize.define('inventory', { } }); -sequelize.sync(); \ No newline at end of file +sequelize.sync(); diff --git a/models/itemOrders.js b/models/itemOrders.js index 724d91b..a8b73a4 100644 --- a/models/itemOrders.js +++ b/models/itemOrders.js @@ -1,3 +1,4 @@ +'use strict'; const db = require('../server/db.js')(); const Sequelize = require('sequelize'); const sequelize = db.connection; @@ -14,4 +15,4 @@ const itemOrders = sequelize.define('itemOrders', { } }); - sequelize.sync(); \ No newline at end of file + sequelize.sync(); diff --git a/models/orders.js b/models/orders.js index 869a6c5..aa2d5ce 100644 --- a/models/orders.js +++ b/models/orders.js @@ -1,3 +1,4 @@ +'use strict'; const db = require('../server/db.js')(); const Sequelize = require('sequelize'); const sequelize = db.connection; @@ -32,4 +33,4 @@ const orders = sequelize.define('orders', { } }); -sequelize.sync(); \ No newline at end of file +sequelize.sync(); diff --git a/models/units.js b/models/units.js index 5e628b5..9dc98b7 100644 --- a/models/units.js +++ b/models/units.js @@ -1,3 +1,4 @@ +'use strict'; const db = require('../server/db.js')(); const Sequelize = require('sequelize'); const sequelize = db.connection; @@ -14,4 +15,4 @@ const units = sequelize.define('units', { } }); - sequelize.sync(); \ No newline at end of file + sequelize.sync(); diff --git a/routes/home.js b/routes/home.js index 891fdfe..4776f87 100644 --- a/routes/home.js +++ b/routes/home.js @@ -1,3 +1,4 @@ +'use strict'; module.exports = function (express) { // Config diff --git a/routes/order.js b/routes/order.js index 9c4e04e..b8cc0ca 100644 --- a/routes/order.js +++ b/routes/order.js @@ -1,3 +1,4 @@ +'use strict'; module.exports = function (express) { // Config diff --git a/server/db.js b/server/db.js index 0bf644c..8ac0d04 100644 --- a/server/db.js +++ b/server/db.js @@ -1,3 +1,4 @@ +'use strict'; module.exports = function() { //Requring dependencies. diff --git a/server/timestamp.js b/server/timestamp.js index 2d29711..545ae28 100644 --- a/server/timestamp.js +++ b/server/timestamp.js @@ -1,3 +1,4 @@ +'use strict'; module.exports = { // Created a function to get the date diff --git a/server/uuid-generator.js b/server/uuid-generator.js index 8758602..3724081 100644 --- a/server/uuid-generator.js +++ b/server/uuid-generator.js @@ -1,3 +1,4 @@ +'use strict'; module.exports = { // Create a function to generate a new UUID number From 77df028b7b83d888b8da2494d6f7d0de44c77871 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 15 Feb 2016 21:16:57 -0500 Subject: [PATCH 15/93] remove --- CONTRIBUTE.md | 80 --------------------------------------------------- 1 file changed, 80 deletions(-) diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md index 9c54c53..a20ac6d 100644 --- a/CONTRIBUTE.md +++ b/CONTRIBUTE.md @@ -17,83 +17,3 @@ This section introduces the core team members. * Tyler Richard * Brad Beltowski * Chris Chapman - -## Learn & listen - -This section includes ways to get started with your open source project. Include links to documentation and to different communication channels: - -* Mailing list: -* IRC channel: -* Blog: -* Anything else: - -## Adding new features - -This section includes advice on how to build new features for the project & what kind of process it includes. - -* This is how we like people to add new features: -* Here are some specifics on the coding style we prefer: -* This is how you send your pull request: -* You should include the following tests: -* These are the updates we hope you make to the changelog: - -Don’t get discouraged! We estimate that the response time from the -maintainers is around: - -# Bug triage - -This sections explains how bug triaging is done for your project. Help beginners by including examples to good bug reports and providing them questions they should look to answer. - -* You can help report bugs by filing them here: -* You can look through the existing bugs here: - -* You can help us diagnose and fix existing bugs by asking and providing answers for the following: - - * Is the bug reproducible as explained? - * Is it reproducible in other environments (for instance, on different browsers or devices)? - * Are the steps to reproduce the bug clear? If not, can you describe how you might reproduce it? - * What tags should the bug have? - * Is this bug something you have run into? Would you appreciate it being looked into faster? - -* You can close fixed bugs by testing old tickets to see if they are still happening. -* You can update our changelog here: -* You can remove duplicate bug reports by: - - -# Beta testing - -This section explains if your project needs beta testing. Explain why early releases require heavy testing and how they can help with specially across browsers and on different hardware. - -* For our project you can find the roadmap and features that require -testing from here: - -# Translations - -This section includes any instructions or translation needs your project has. - -* You can help us translate our project here: - -# Documentation - -This section includes any help you need with the documentation and where it can be found. Code needs explanation, and sometimes those who know the code well have trouble explaining it to someone just getting into it. - -* Help us with documentation here - -# Community -This section includes ideas on how non-developers can help with the project. Here's a few examples: - -* You can help us answer questions our users have here: -* You can help build and design our website here: -* You can help write blog posts about the project by: -* You can help with newsletters and internal communications by: - -* Create an example of the project in real world by building something or -showing what others have built. -* Write about other people’s projects based on this project. Show how -it’s used in daily life. Take screenshots and make videos! - - -# Your first bugfix -This section should help a person get started with their very first bug fix and thinking through the problem. - -* If you have further questions, contact: From 2d0eb1bab08450903ff3e633d7fdc2134c0134b3 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 15 Feb 2016 21:20:38 -0500 Subject: [PATCH 16/93] added dotenv to devDependencies --- package.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b3fb221..3fef9cb 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "server.js", "scripts": { "test": "echo \"Tests not setup yet\" && exit 0", - "start": "node server.js" + "start": "node server.js", + "postinstall": "npm i -g mocha nodemon" }, "repository": { "type": "git", @@ -19,11 +20,15 @@ "homepage": "https://github.com/reactivepixel/Gravity#readme", "dependencies": { "body-parser": "1.15.0", - "dotenv": "2.0.0", "express": "4.13.4", "faker": "3.0.1", "mysql": "2.10.2", "request": "2.69.0", "sequelize": "3.19.2" + }, + "devDependencies": { + "mocha": "2.4.5", + "supertest": "1.2.0", + "dotenv": "2.0.0" } } From 258702cf96959983eb7eafe96dcb15429c29b3dc Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 15 Feb 2016 22:10:45 -0500 Subject: [PATCH 17/93] added faker to dev dependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 3fef9cb..29ce495 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "dependencies": { "body-parser": "1.15.0", "express": "4.13.4", - "faker": "3.0.1", "mysql": "2.10.2", "request": "2.69.0", "sequelize": "3.19.2" @@ -29,6 +28,7 @@ "devDependencies": { "mocha": "2.4.5", "supertest": "1.2.0", - "dotenv": "2.0.0" + "dotenv": "2.0.0", + "faker": "3.0.1" } } From 207cdb49895d8b3f9b0d9b43fe738bb0108fa22c Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 15 Feb 2016 23:00:51 -0500 Subject: [PATCH 18/93] Added procfile for starting heroku --- Procfile | 1 + 1 file changed, 1 insertion(+) create mode 100644 Procfile diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..255a64e --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: node server/server.js From 7170069d5daa3223799d0005ca93cf6c07a16e0b Mon Sep 17 00:00:00 2001 From: Trichh Date: Mon, 15 Feb 2016 23:15:08 -0500 Subject: [PATCH 19/93] moved create table functions to db.js so you only have to run 1 file to create all the tables --- models/inventory.js | 20 ++++------- models/itemOrders.js | 23 ++++--------- models/orders.js | 41 ++++------------------- models/units.js | 23 ++++--------- server/db.js | 80 ++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 102 insertions(+), 85 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index b22a1d0..c5147ec 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -1,15 +1,7 @@ 'use strict'; -const db = require('../server/db.js')(); -const Sequelize = require('sequelize'); -const sequelize = db.connection; - -const inventory = sequelize.define('inventory', { - sku: { - type: Sequelize.STRING - }, - location: { - type: Sequelize.STRING - } -}); - -sequelize.sync(); +module.exports = function() { + const db = require('../server/db.js')(); + const Sequelize = require('sequelize'); + const sequelize = db.connection; + const inventory = db.inventory; +}(); \ No newline at end of file diff --git a/models/itemOrders.js b/models/itemOrders.js index a8b73a4..f96bc21 100644 --- a/models/itemOrders.js +++ b/models/itemOrders.js @@ -1,18 +1,7 @@ 'use strict'; -const db = require('../server/db.js')(); -const Sequelize = require('sequelize'); -const sequelize = db.connection; - -const itemOrders = sequelize.define('itemOrders', { - sku: { - type: Sequelize.STRING - }, - orderId: { - type: Sequelize.STRING - }, - quantity: { - type: Sequelize.STRING - } -}); - - sequelize.sync(); +module.exports = function() { + const db = require('../server/db.js')(); + const Sequelize = require('sequelize'); + const sequelize = db.connection; + const orderedItems = db.orderedItems; +} \ No newline at end of file diff --git a/models/orders.js b/models/orders.js index aa2d5ce..7545463 100644 --- a/models/orders.js +++ b/models/orders.js @@ -1,36 +1,7 @@ 'use strict'; -const db = require('../server/db.js')(); -const Sequelize = require('sequelize'); -const sequelize = db.connection; - -const orders = sequelize.define('orders', { - orderId: { - type: Sequelize.STRING - }, - fullName: { - type: Sequelize.STRING - }, - streetAddress: { - type: Sequelize.STRING - }, - city: { - type: Sequelize.STRING - }, - state: { - type: Sequelize.STRING - }, - zip: { - type: Sequelize.STRING - }, - phone: { - type: Sequelize.STRING - }, - email: { - type: Sequelize.STRING - }, - timeStamp: { - type: Sequelize.STRING - } -}); - -sequelize.sync(); +module.exports = function() { + const db = require('../server/db.js')(); + const Sequelize = require('sequelize'); + const sequelize = db.connection; + const orders = db.orders; +} \ No newline at end of file diff --git a/models/units.js b/models/units.js index 9dc98b7..87123f0 100644 --- a/models/units.js +++ b/models/units.js @@ -1,18 +1,7 @@ 'use strict'; -const db = require('../server/db.js')(); -const Sequelize = require('sequelize'); -const sequelize = db.connection; - -const units = sequelize.define('units', { - sku: { - type: Sequelize.STRING - }, - name: { - type: Sequelize.STRING - }, - description: { - type: Sequelize.STRING - } -}); - - sequelize.sync(); +module.exports = function() { + const db = require('../server/db.js')(); + const Sequelize = require('sequelize'); + const sequelize = db.connection; + const units = db.units; +} \ No newline at end of file diff --git a/server/db.js b/server/db.js index 8ac0d04..399935b 100644 --- a/server/db.js +++ b/server/db.js @@ -14,6 +14,82 @@ module.exports = function() { pool: { max: 5, min: 0, idle: 10000 } }); + //Creating inventory table + const inventory = sequelize.define('inventory', { + sku: { + type: Sequelize.STRING + }, + location: { + type: Sequelize.STRING + } + }); + + //Creting itemOrders table + const orderedItems = sequelize.define('orderedItems', { + sku: { + type: Sequelize.STRING + }, + orderId: { + type: Sequelize.STRING + }, + quantity: { + type: Sequelize.STRING + } + }); + + //Creating orders table + const orders = sequelize.define('orders', { + orderId: { + type: Sequelize.STRING + }, + fullName: { + type: Sequelize.STRING + }, + streetAddress: { + type: Sequelize.STRING + }, + city: { + type: Sequelize.STRING + }, + state: { + type: Sequelize.STRING + }, + zip: { + type: Sequelize.STRING + }, + phone: { + type: Sequelize.STRING + }, + email: { + type: Sequelize.STRING + }, + timeStamp: { + type: Sequelize.STRING + } + }); + + //Creating units table + const units = sequelize.define('units', { + sku: { + type: Sequelize.STRING + }, + name: { + type: Sequelize.STRING + }, + description: { + type: Sequelize.STRING + } + }); + + //Syncs newly created tables and data inside the tables sequelize.sync(); - return { connection: sequelize }; -}; + + //returns data to be called in the models + return { + connection: sequelize, + inventory: inventory, + orderedItems: orderedItems, + orders: orders, + units: units + }; +}(); \ No newline at end of file From 4a22b4d48c434d12a3e06c96529f6711d4670fbe Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 15 Feb 2016 23:17:39 -0500 Subject: [PATCH 20/93] changed package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 29ce495..7ce6818 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "server.js", "scripts": { "test": "echo \"Tests not setup yet\" && exit 0", - "start": "node server.js", + "start": "node server/server.js", "postinstall": "npm i -g mocha nodemon" }, "repository": { From 3331767e9feb3862b3c14d53c8eb96caf918ca24 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 15 Feb 2016 23:32:16 -0500 Subject: [PATCH 21/93] Cleaning up code fixing typos and inconsistencies changed itemsOrdered to orderedItems edited comments to be more descriptive --- models/inventory.js | 4 +++- models/{itemOrders.js => orderedItems.js} | 4 +++- models/orders.js | 4 +++- models/units.js | 4 +++- readme.md | 14 ++++++------- server/db.js | 24 +++++++++++------------ server/server.js | 2 +- 7 files changed, 32 insertions(+), 24 deletions(-) rename models/{itemOrders.js => orderedItems.js} (74%) diff --git a/models/inventory.js b/models/inventory.js index c5147ec..a5f0e50 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -3,5 +3,7 @@ module.exports = function() { const db = require('../server/db.js')(); const Sequelize = require('sequelize'); const sequelize = db.connection; + + // Defining inventory based on the table schema from the db.js const inventory = db.inventory; -}(); \ No newline at end of file +}(); diff --git a/models/itemOrders.js b/models/orderedItems.js similarity index 74% rename from models/itemOrders.js rename to models/orderedItems.js index f96bc21..b6919b1 100644 --- a/models/itemOrders.js +++ b/models/orderedItems.js @@ -3,5 +3,7 @@ module.exports = function() { const db = require('../server/db.js')(); const Sequelize = require('sequelize'); const sequelize = db.connection; + + // Defining orderedItems based on the table schema from the db.js const orderedItems = db.orderedItems; -} \ No newline at end of file +} diff --git a/models/orders.js b/models/orders.js index 7545463..3a3af94 100644 --- a/models/orders.js +++ b/models/orders.js @@ -3,5 +3,7 @@ module.exports = function() { const db = require('../server/db.js')(); const Sequelize = require('sequelize'); const sequelize = db.connection; + + // Defining orders based on the table schema from the db.js const orders = db.orders; -} \ No newline at end of file +} diff --git a/models/units.js b/models/units.js index 87123f0..7b12e12 100644 --- a/models/units.js +++ b/models/units.js @@ -3,5 +3,7 @@ module.exports = function() { const db = require('../server/db.js')(); const Sequelize = require('sequelize'); const sequelize = db.connection; + + // Defining units based on the table schema from the db.js const units = db.units; -} \ No newline at end of file +} diff --git a/readme.md b/readme.md index 439e0cd..0d513be 100644 --- a/readme.md +++ b/readme.md @@ -12,24 +12,24 @@ $ npm install //Installs the package.json file. ## Database Installation -### Installing mySQL & adding .env file +### Installing MySQL & adding .env file -To check to see if you have mySQL installed on your machine. +To check to see if you have MySQL installed on your machine. ``` $ mysql --verison ``` -If mySQL is not installed. Install it with [Homebrew](http://brew.sh/). +If MySQL is not installed. Install it with [Homebrew](http://brew.sh/). ``` $ brew install mysql ``` -Start mySQL server. +Start MySQL server. ``` -$ mysql.server start //Starting mySQL server. +$ mysql.server start //Starting MySQL server. $ mysql -u root //Logging in as root. -//Once logged into mySQL +//Once logged into MySQL mysql> create database gravity; ``` @@ -45,7 +45,7 @@ DB_PASS={local password} //Standard install is set to blank. DB_PORT={local port running mysql} //Standard port is 3306. ``` -If mySQL does not work try: +If MySQL does not work try: ``` $ mysql.server restart ``` diff --git a/server/db.js b/server/db.js index 399935b..5882bd1 100644 --- a/server/db.js +++ b/server/db.js @@ -1,12 +1,12 @@ 'use strict'; module.exports = function() { - //Requring dependencies. + // Requiring dependencies. const dotenv = require('dotenv').load(); const Sequelize = require('sequelize'); const mysql = require('mysql'); - //Initizling sequelize. + // Initializing sequelize const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, { host: 'localhost', dialect: 'mysql', @@ -14,7 +14,7 @@ module.exports = function() { pool: { max: 5, min: 0, idle: 10000 } }); - //Creating inventory table + // Creating inventory table schema const inventory = sequelize.define('inventory', { sku: { type: Sequelize.STRING @@ -23,8 +23,8 @@ module.exports = function() { type: Sequelize.STRING } }); - - //Creting itemOrders table + + // Creating orderedItems table schema const orderedItems = sequelize.define('orderedItems', { sku: { type: Sequelize.STRING @@ -37,7 +37,7 @@ module.exports = function() { } }); - //Creating orders table + // Creating orders table schema const orders = sequelize.define('orders', { orderId: { type: Sequelize.STRING @@ -68,7 +68,7 @@ module.exports = function() { } }); - //Creating units table + // Creating units table schema const units = sequelize.define('units', { sku: { type: Sequelize.STRING @@ -81,15 +81,15 @@ module.exports = function() { } }); - //Syncs newly created tables and data inside the tables + // Syncs newly created tables and data inside the tables sequelize.sync(); - - //returns data to be called in the models - return { + + // Returns data to be called in the models + return { connection: sequelize, inventory: inventory, orderedItems: orderedItems, orders: orders, units: units }; -}(); \ No newline at end of file +}(); diff --git a/server/server.js b/server/server.js index 14c690a..7952d91 100644 --- a/server/server.js +++ b/server/server.js @@ -6,7 +6,7 @@ const body_parser = require('body-parser'); const app = express(); const port = process.env.PORT || 3000; -// Adding body parser +// Adding body parser to parse json automatically app.use(body_parser.json()); // Routes From c0f3988e5b18782d956892dba19f91ae7ab59519 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Tue, 16 Feb 2016 00:00:30 -0500 Subject: [PATCH 22/93] fixed small errors --- models/inventory.js | 10 +++++----- models/orderedItems.js | 6 +++--- models/orders.js | 2 +- models/units.js | 2 +- package.json | 2 +- server/db.js | 10 +++++++--- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index a5f0e50..ccc14db 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -1,9 +1,9 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js')(); - const Sequelize = require('sequelize'); - const sequelize = db.connection; + const db = require('../server/db.js')(); + const Sequelize = require('sequelize'); + const sequelize = db.connection; - // Defining inventory based on the table schema from the db.js - const inventory = db.inventory; + // Defining inventory based on the table schema from the db.js + let inventory = db.inventory; }(); diff --git a/models/orderedItems.js b/models/orderedItems.js index b6919b1..feae192 100644 --- a/models/orderedItems.js +++ b/models/orderedItems.js @@ -1,9 +1,9 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js')(); + const db = require('../server/db.js')(); const Sequelize = require('sequelize'); const sequelize = db.connection; - // Defining orderedItems based on the table schema from the db.js - const orderedItems = db.orderedItems; + // Defining orderedItems based on the table schema from the db.js + let orderedItems = db.orderedItems; } diff --git a/models/orders.js b/models/orders.js index 3a3af94..c9587f3 100644 --- a/models/orders.js +++ b/models/orders.js @@ -5,5 +5,5 @@ module.exports = function() { const sequelize = db.connection; // Defining orders based on the table schema from the db.js - const orders = db.orders; + let orders = db.orders; } diff --git a/models/units.js b/models/units.js index 7b12e12..51cf891 100644 --- a/models/units.js +++ b/models/units.js @@ -5,5 +5,5 @@ module.exports = function() { const sequelize = db.connection; // Defining units based on the table schema from the db.js - const units = db.units; + let units = db.units; } diff --git a/package.json b/package.json index 7ce6818..9836121 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "url": "git+https://github.com/reactivepixel/Gravity.git" }, "author": "", - "license": "ISC", + "license": "MIT", "bugs": { "url": "https://github.com/reactivepixel/Gravity/issues" }, diff --git a/server/db.js b/server/db.js index 5882bd1..670cb4b 100644 --- a/server/db.js +++ b/server/db.js @@ -11,7 +11,11 @@ module.exports = function() { host: 'localhost', dialect: 'mysql', port: process.env.DB_PORT, - pool: { max: 5, min: 0, idle: 10000 } + pool: { + max: 5, + min: 0, + idle: 10000 + } }); // Creating inventory table schema @@ -81,10 +85,10 @@ module.exports = function() { } }); - // Syncs newly created tables and data inside the tables + // Syncs newly created tables and data inside the tables sequelize.sync(); - // Returns data to be called in the models + // Returns data to be called in the models return { connection: sequelize, inventory: inventory, From 7f9f5571fb7093db6011060eeecb6f2a5ff8650c Mon Sep 17 00:00:00 2001 From: therealaldo Date: Tue, 16 Feb 2016 00:03:04 -0500 Subject: [PATCH 23/93] fixing errors from pull request --- models/{orderedItems.js => ordered-items.js} | 0 server/db.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename models/{orderedItems.js => ordered-items.js} (100%) diff --git a/models/orderedItems.js b/models/ordered-items.js similarity index 100% rename from models/orderedItems.js rename to models/ordered-items.js diff --git a/server/db.js b/server/db.js index 670cb4b..71f2bf1 100644 --- a/server/db.js +++ b/server/db.js @@ -8,7 +8,7 @@ module.exports = function() { // Initializing sequelize const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, { - host: 'localhost', + host: process.env.DB_HOST, dialect: 'mysql', port: process.env.DB_PORT, pool: { From 12458d16166cfcef62bfd51191fcaa0d223da4f8 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Tue, 16 Feb 2016 00:04:29 -0500 Subject: [PATCH 24/93] fixed errors from pull request --- server/server.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/server/server.js b/server/server.js index a570c9a..71c7156 100644 --- a/server/server.js +++ b/server/server.js @@ -7,10 +7,7 @@ const body_parser = require('body-parser'); const app = express(); const port = process.env.PORT || 3000; -<<<<<<< HEAD -======= // Adding body parser to parse json automatically ->>>>>>> 3331767e9feb3862b3c14d53c8eb96caf918ca24 app.use(body_parser.json()); // Routes From 46060b9581deb06ea6220ef034818c029afcc9a0 Mon Sep 17 00:00:00 2001 From: Keown Creese Date: Tue, 16 Feb 2016 00:36:15 -0500 Subject: [PATCH 25/93] Created an unit test to test if the uuid and the timestamp to is matching the json data --- routes/order.js | 7 ++++-- test/__order.js | 62 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 58 insertions(+), 11 deletions(-) diff --git a/routes/order.js b/routes/order.js index 7e38b9c..212bb96 100644 --- a/routes/order.js +++ b/routes/order.js @@ -14,12 +14,15 @@ module.exports = function (express) { }) .put(function(req, res, body) { - const data = req.body; + var data = req.body; + + + // adding generated UUID and timestamp to the json data data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); // ending the response and console logging the response data - res.send({healthy: true}); + res.send(data); }); return router; diff --git a/test/__order.js b/test/__order.js index 2bebcd0..ec8663a 100644 --- a/test/__order.js +++ b/test/__order.js @@ -1,10 +1,12 @@ const request = require('supertest'); +const dataToInsert = {lala: 'dsgaes42q3',lolo: '2'}; +const array1 = []; // Manually configure Test Routes, they will be mapped to individual tests // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -const known_routes = [ - {title: 'Basic Order Test', route: '/order', status_code: 200, res: {healthy: true}}, - // {title: 'Status Check', route: '/api/v1/status', status_code: 200, res: {healthy: true}} + +const uuidTest = [ + {title: 'Order Json Test', route: '/order', status_code: 200, req: dataToInsert} ]; describe('Loading Express', function () { @@ -19,15 +21,57 @@ describe('Loading Express', function () { server.close(); }); - for(var route_index in known_routes){ - it('[' + known_routes[route_index].status_code + '] ' + known_routes[route_index].route + ' ' + known_routes[route_index].title , function testHealth(done){ + it('/should check to see if an uuid is been added', function testHealth(done){ request(server) - .put(known_routes[route_index].route) + .put(uuidTest[0].route, uuidTest[0].req) .set('Accept', 'application/json') .expect('Content-Type', /json/) - .expect(known_routes[route_index].status_code, known_routes[route_index].res, done) - }); - } + .expect(function (res) { + + console.log(res.body); + + var matchedKeys = []; + for(matchKey in uuidTest[0].req){ + matchedKeys.push(matchKey); + } + + var matchCount = 0; + for(resKey in res.body){ + if(matchedKeys.indexOf(resKey) < 0) { + // Un Matched Key + } else { + // Key is matched + matchCount++; + } + } + + if(matchCount !== matchedKeys.length){ + throw new Error('Incorrect total of matches made'); + } + + // matchedKeys + + + + }) + .expect(uuidTest[0].status_code, done) + }); + + //Write a test the check if the json data is been posted + // it('should send post params', function testHealth(done) { + // request(server) + // .post(known_routes[route_index].route) + // .send(known_routes[route_index].route) + // .expect(known_routes[route_index].status_code, known_routes[route_index].res) + // .expect('Content-Type', /json/) + // .end(function(err,res) { + // + // if (err) done(err); + // res.body.should.have.property(known_routes[route_index].route) + // done(); + // }) + // + // }) // Force a bad route // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= From cd22f3c7ebaffc7f8d9dac7815db0c7860fff0ef Mon Sep 17 00:00:00 2001 From: Trichh Date: Tue, 16 Feb 2016 03:20:18 -0500 Subject: [PATCH 26/93] Getting rid of errors in models --- models/inventory.js | 4 ++-- models/ordered-items.js | 4 ++-- models/orders.js | 4 ++-- models/units.js | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index ccc14db..1778c23 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -1,9 +1,9 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js')(); + const db = require('../server/db.js'); const Sequelize = require('sequelize'); const sequelize = db.connection; // Defining inventory based on the table schema from the db.js let inventory = db.inventory; -}(); +}(); \ No newline at end of file diff --git a/models/ordered-items.js b/models/ordered-items.js index feae192..1b72758 100644 --- a/models/ordered-items.js +++ b/models/ordered-items.js @@ -1,9 +1,9 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js')(); + const db = require('../server/db.js'); const Sequelize = require('sequelize'); const sequelize = db.connection; // Defining orderedItems based on the table schema from the db.js let orderedItems = db.orderedItems; -} +}(); \ No newline at end of file diff --git a/models/orders.js b/models/orders.js index c9587f3..73cb1ba 100644 --- a/models/orders.js +++ b/models/orders.js @@ -1,9 +1,9 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js')(); + const db = require('../server/db.js'); const Sequelize = require('sequelize'); const sequelize = db.connection; // Defining orders based on the table schema from the db.js let orders = db.orders; -} +}(); \ No newline at end of file diff --git a/models/units.js b/models/units.js index 51cf891..616fcc7 100644 --- a/models/units.js +++ b/models/units.js @@ -1,9 +1,9 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js')(); + const db = require('../server/db.js'); const Sequelize = require('sequelize'); const sequelize = db.connection; // Defining units based on the table schema from the db.js let units = db.units; -} +}(); \ No newline at end of file From 33a0e03ecc19bcbecf940d4641feabee7857a586 Mon Sep 17 00:00:00 2001 From: Trichh Date: Tue, 16 Feb 2016 03:30:25 -0500 Subject: [PATCH 27/93] inserts items into database --- models/ordered-items.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/models/ordered-items.js b/models/ordered-items.js index 1b72758..646cb72 100644 --- a/models/ordered-items.js +++ b/models/ordered-items.js @@ -6,4 +6,11 @@ module.exports = function() { // Defining orderedItems based on the table schema from the db.js let orderedItems = db.orderedItems; + + // Inserts items into the database + orderedItems.build({ + sku: 'j098341jacjk0', + orderId: '1', + quantity: '4' + }).save() }(); \ No newline at end of file From 27b89b8307fcee419448289d1a3ac4cdc80241b5 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Thu, 18 Feb 2016 14:13:52 -0500 Subject: [PATCH 28/93] first attempt at order/create --- routes/order.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/routes/order.js b/routes/order.js index b8cc0ca..01cdf3b 100644 --- a/routes/order.js +++ b/routes/order.js @@ -3,6 +3,7 @@ module.exports = function (express) { // Config const router = express.Router(); + const order = require('../models/orders.js'); // Include uuid generator and timestamp generator const uuid_generator = require('../server/uuid-generator.js'); @@ -20,7 +21,24 @@ module.exports = function (express) { data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); // ending the response and console logging the response data - console.log(data); + // console.log(data); + order.create({ + orderId: data.uuid, + fullName: data.recipients.name, + streetAddress: data.recipients.address.street, + city: data.recipients.address.city, + state: data.recipients.address.state, + zip: data.recipients.address.zip, + phone: data.recipients.phone, + email: data.recipients.email, + timeStamp: data.timeStamp + }, function(data) { + console.log('An order has been created.'); + }, function(error) { + console.log('You\'ve encountered an error.'); + } + }); + }); return router; From 48c1ae08418555e76b357758c2f6a7a22a935deb Mon Sep 17 00:00:00 2001 From: therealaldo Date: Thu, 18 Feb 2016 14:44:49 -0500 Subject: [PATCH 29/93] creating order and orderedItem this makes sense at first glance but it hasn't been tested so this could break completely and not even be the right way to do this --- routes/order.js | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/routes/order.js b/routes/order.js index 01cdf3b..1c267cb 100644 --- a/routes/order.js +++ b/routes/order.js @@ -4,6 +4,7 @@ module.exports = function (express) { // Config const router = express.Router(); const order = require('../models/orders.js'); + const orderedItem = require('../models/ordered-items.js'); // Include uuid generator and timestamp generator const uuid_generator = require('../server/uuid-generator.js'); @@ -22,6 +23,8 @@ module.exports = function (express) { data.timestamp = timestamp.makeTimestamp(); // ending the response and console logging the response data // console.log(data); + + // Creating the order in the database based on the request order.create({ orderId: data.uuid, fullName: data.recipients.name, @@ -32,13 +35,38 @@ module.exports = function (express) { phone: data.recipients.phone, email: data.recipients.email, timeStamp: data.timeStamp - }, function(data) { - console.log('An order has been created.'); - }, function(error) { - console.log('You\'ve encountered an error.'); - } + }, + // Success function + function(data) { + console.log('An order has been created.'); + }, + + // Error function + function(error) { + console.log('You\'ve encountered an error.'); + } + }); + + // Creating the ordered items based on how many objects are inside of the units array + for (let i = 0; i < data.units.length; i++) { + orderedItem.create({ + sku: data.units[i].sku, + orderId: data.uuid, + quantity: data.units[i].quantity + } + }, + // Success function + function(data) { + console.log('An orderedItem has been created.'); + }, + + // Error function + function(error) { + console.log('You\'ve encountered an error.'); + } }); + }); return router; From e9ce9af7754edc3d7b76efddf81dfbecfb7d4d72 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Fri, 19 Feb 2016 00:38:16 -0500 Subject: [PATCH 30/93] changed request hits to 1 --- order_bot/request.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/order_bot/request.js b/order_bot/request.js index 4f81058..c1a165d 100644 --- a/order_bot/request.js +++ b/order_bot/request.js @@ -3,7 +3,7 @@ const request = require('request'); const faker = require('faker'); // Hits variable controls how many times the request loop will autoamtically run -let hits = 900; +let hits = 1; // Automated request loop let i; From e2d09fede85e038bb705d47611aa90d8040e0e4e Mon Sep 17 00:00:00 2001 From: Trichh Date: Fri, 19 Feb 2016 02:04:07 -0500 Subject: [PATCH 31/93] Adding data to the database dynamically --- order_bot/request.js | 2 +- routes/order.js | 31 ++++++++++++++++--------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/order_bot/request.js b/order_bot/request.js index 4f81058..c1a165d 100644 --- a/order_bot/request.js +++ b/order_bot/request.js @@ -3,7 +3,7 @@ const request = require('request'); const faker = require('faker'); // Hits variable controls how many times the request loop will autoamtically run -let hits = 900; +let hits = 1; // Automated request loop let i; diff --git a/routes/order.js b/routes/order.js index 1c267cb..e0ffe0e 100644 --- a/routes/order.js +++ b/routes/order.js @@ -3,8 +3,10 @@ module.exports = function (express) { // Config const router = express.Router(); - const order = require('../models/orders.js'); - const orderedItem = require('../models/ordered-items.js'); + const Sequelize = require('sequelize'); + const db = require('../server/db.js'); + let orderedItems = db.orderedItems; + let orders = db.orders; // Include uuid generator and timestamp generator const uuid_generator = require('../server/uuid-generator.js'); @@ -25,7 +27,7 @@ module.exports = function (express) { // console.log(data); // Creating the order in the database based on the request - order.create({ + orders.build({ orderId: data.uuid, fullName: data.recipients.name, streetAddress: data.recipients.address.street, @@ -44,17 +46,16 @@ module.exports = function (express) { // Error function function(error) { console.log('You\'ve encountered an error.'); - } - }); + }).save(); + // Creating the ordered items based on how many objects are inside of the units array - for (let i = 0; i < data.units.length; i++) { - orderedItem.create({ + for (let i = 1; i < data.units.length; i++) { + orderedItems.build({ sku: data.units[i].sku, orderId: data.uuid, quantity: data.units[i].quantity - } - }, + }, // Success function function(data) { console.log('An orderedItem has been created.'); @@ -63,11 +64,11 @@ module.exports = function (express) { // Error function function(error) { console.log('You\'ve encountered an error.'); - } + }).save() + }; + + }); - - - }); - + return router; -}; +}; \ No newline at end of file From 8ffa0d90894175462f1a5d8a7e6be96ac15dfa58 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Fri, 19 Feb 2016 17:36:11 -0500 Subject: [PATCH 32/93] created unit test file --- test/__createdata.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/__createdata.js diff --git a/test/__createdata.js b/test/__createdata.js new file mode 100644 index 0000000..e69de29 From e20e81b8dd8fdfe90909316d59ea464c29fa590e Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Sun, 21 Feb 2016 20:30:35 -0500 Subject: [PATCH 33/93] started unit testing db --- routes/order.js | 12 ++++++------ test/__dbconnection.js | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 test/__dbconnection.js diff --git a/routes/order.js b/routes/order.js index e0ffe0e..dcb47bf 100644 --- a/routes/order.js +++ b/routes/order.js @@ -36,7 +36,7 @@ module.exports = function (express) { zip: data.recipients.address.zip, phone: data.recipients.phone, email: data.recipients.email, - timeStamp: data.timeStamp + timeStamp: data.timestamp }, // Success function function(data) { @@ -47,7 +47,7 @@ module.exports = function (express) { function(error) { console.log('You\'ve encountered an error.'); }).save(); - + // Creating the ordered items based on how many objects are inside of the units array for (let i = 1; i < data.units.length; i++) { @@ -66,9 +66,9 @@ module.exports = function (express) { console.log('You\'ve encountered an error.'); }).save() }; - - + + }); - + return router; -}; \ No newline at end of file +}; diff --git a/test/__dbconnection.js b/test/__dbconnection.js new file mode 100644 index 0000000..6e5fa95 --- /dev/null +++ b/test/__dbconnection.js @@ -0,0 +1,2 @@ +var orders = require('../models/orders.js'); +describe From f58ced7921e5d3e93f3892543baf316ae8dc81cc Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Sun, 21 Feb 2016 20:55:13 -0500 Subject: [PATCH 34/93] add chai --- package.json | 8 +++++--- test/__dbconnection.js | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9836121..ebcf0b3 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,11 @@ "sequelize": "3.19.2" }, "devDependencies": { - "mocha": "2.4.5", - "supertest": "1.2.0", + "chai": "^3.5.0", + "chai-http": "^2.0.1", "dotenv": "2.0.0", - "faker": "3.0.1" + "faker": "3.0.1", + "mocha": "2.4.5", + "supertest": "1.2.0" } } diff --git a/test/__dbconnection.js b/test/__dbconnection.js index 6e5fa95..e151335 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -1,2 +1,6 @@ -var orders = require('../models/orders.js'); -describe +const chai = require('chai'); +const chaiHttp = require('chai-http'); +const orders = require('../models/orders.js'); +const should = chai.should(); + +chai.use(chaiHttp); From 239cda5e188c255c39c8db16d502701fabc32c58 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Mon, 22 Feb 2016 19:11:33 -0500 Subject: [PATCH 35/93] Unit testing yay --- models/ordered-items.js | 10 ++------- package.json | 2 -- routes/order.js | 6 +++--- test/__dbconnection.js | 47 ++++++++++++++++++++++++++++++++++++----- 4 files changed, 47 insertions(+), 18 deletions(-) diff --git a/models/ordered-items.js b/models/ordered-items.js index 646cb72..1a2466b 100644 --- a/models/ordered-items.js +++ b/models/ordered-items.js @@ -6,11 +6,5 @@ module.exports = function() { // Defining orderedItems based on the table schema from the db.js let orderedItems = db.orderedItems; - - // Inserts items into the database - orderedItems.build({ - sku: 'j098341jacjk0', - orderId: '1', - quantity: '4' - }).save() -}(); \ No newline at end of file + +}(); diff --git a/package.json b/package.json index ebcf0b3..7f024e3 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,6 @@ "sequelize": "3.19.2" }, "devDependencies": { - "chai": "^3.5.0", - "chai-http": "^2.0.1", "dotenv": "2.0.0", "faker": "3.0.1", "mocha": "2.4.5", diff --git a/routes/order.js b/routes/order.js index dcb47bf..2d7d2ce 100644 --- a/routes/order.js +++ b/routes/order.js @@ -50,11 +50,11 @@ module.exports = function (express) { // Creating the ordered items based on how many objects are inside of the units array - for (let i = 1; i < data.units.length; i++) { + for (let i = 1; i <= data.units.length; i++) { orderedItems.build({ - sku: data.units[i].sku, + sku: data.units.sku, orderId: data.uuid, - quantity: data.units[i].quantity + quantity: data.units.quantity }, // Success function function(data) { diff --git a/test/__dbconnection.js b/test/__dbconnection.js index e151335..cdb028b 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -1,6 +1,43 @@ -const chai = require('chai'); -const chaiHttp = require('chai-http'); -const orders = require('../models/orders.js'); -const should = chai.should(); +'use-strict' +const supertest = require('supertest'); -chai.use(chaiHttp); +const server = supertest.agent('http://localhost:3000'); + +describe('test', function() { + it('/should send data over request', function(done) { + server + .put('/order') + .send({ + units: [ + { + sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + quantity: '2'}, + { + sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', + quantity: '3'} + ], + recipients: { + name: 'Sally', + address: { + street: '3300 University Blvd', + city: 'Winter Park', + state: 'FL', + zip: '32792' + }, + phone: '123-456-7890', + email: 'test@testemail.com' + } + }) + .expect('Content-Type', /json/) + .expect(function(err, res) { + if(!res.body.data.recipients.name.should.equal('Sally')){ + throw new Error('This is supposed to error') + } + res.body.err.should.equal(false) + res.body.data.recipients.name.should.equal('Sally') + res.body.data.units.sku.should.equal('test') + + }) + .end(done()); + }); +}); From 0c3d40cc056800e2f1dea281419ea196a5050542 Mon Sep 17 00:00:00 2001 From: Keown Creese Date: Mon, 22 Feb 2016 19:16:10 -0500 Subject: [PATCH 36/93] Combine the new test into the default test --- routes/order.js | 2 +- test/__order.js | 52 ++++++++++++++++++++++--------------------------- 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/routes/order.js b/routes/order.js index 212bb96..de5e8d1 100644 --- a/routes/order.js +++ b/routes/order.js @@ -16,12 +16,12 @@ module.exports = function (express) { .put(function(req, res, body) { var data = req.body; - // adding generated UUID and timestamp to the json data data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); // ending the response and console logging the response data + data.healthy = true; res.send(data); }); diff --git a/test/__order.js b/test/__order.js index ec8663a..58c325c 100644 --- a/test/__order.js +++ b/test/__order.js @@ -1,12 +1,11 @@ const request = require('supertest'); -const dataToInsert = {lala: 'dsgaes42q3',lolo: '2'}; -const array1 = []; +const dataToInsert = {uuid: 'j42bc2ed9899a490fa44dbb2f756542e5',timestamp: 'Mon Feb 22 2016 13:14:26 GMT-0500 (EST)', healthy: true}; // Manually configure Test Routes, they will be mapped to individual tests // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -const uuidTest = [ - {title: 'Order Json Test', route: '/order', status_code: 200, req: dataToInsert} +const known_routes = [ + {title: 'Basic Order Test', route: '/order', status_code: 200, res: {healthy: true },req: dataToInsert}, + // {title: 'Status Check', route: '/api/v1/status', status_code: 200, res: {healthy: true}} ]; describe('Loading Express', function () { @@ -21,23 +20,25 @@ describe('Loading Express', function () { server.close(); }); - it('/should check to see if an uuid is been added', function testHealth(done){ + for(var route_index in known_routes){ + it('[' + known_routes[route_index].status_code + '] ' + known_routes[route_index].route + ' ' + + known_routes[route_index].title , function testHealth(done){ request(server) - .put(uuidTest[0].route, uuidTest[0].req) + .put(known_routes[route_index].route) .set('Accept', 'application/json') .expect('Content-Type', /json/) - .expect(function (res) { + .expect(function(res){ console.log(res.body); var matchedKeys = []; - for(matchKey in uuidTest[0].req){ + for(matchKey in known_routes[route_index].req){ matchedKeys.push(matchKey); } var matchCount = 0; for(resKey in res.body){ - if(matchedKeys.indexOf(resKey) < 0) { + if((matchedKeys.indexOf(resKey) < 0)) { // Un Matched Key } else { // Key is matched @@ -49,29 +50,22 @@ describe('Loading Express', function () { throw new Error('Incorrect total of matches made'); } - // matchedKeys - + if(known_routes[route_index].req === known_routes[route_index].res){ + throw new Error('key is not match'); + } + if(!res.body.uuid){ + throw new Error('uuid is not been returned/added'); + } + if(!res.body.timestamp){ + throw new Error('timestamp is not been returned/added'); + } }) - .expect(uuidTest[0].status_code, done) - }); + .expect(known_routes[route_index].status_code, done) + }); + } - //Write a test the check if the json data is been posted - // it('should send post params', function testHealth(done) { - // request(server) - // .post(known_routes[route_index].route) - // .send(known_routes[route_index].route) - // .expect(known_routes[route_index].status_code, known_routes[route_index].res) - // .expect('Content-Type', /json/) - // .end(function(err,res) { - // - // if (err) done(err); - // res.body.should.have.property(known_routes[route_index].route) - // done(); - // }) - // - // }) // Force a bad route // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= From e69f06cb5ed485e7159081edd72f5cb2da912602 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 22 Feb 2016 21:36:07 -0500 Subject: [PATCH 37/93] committing changes --- routes/order.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/routes/order.js b/routes/order.js index e0ffe0e..dcb47bf 100644 --- a/routes/order.js +++ b/routes/order.js @@ -36,7 +36,7 @@ module.exports = function (express) { zip: data.recipients.address.zip, phone: data.recipients.phone, email: data.recipients.email, - timeStamp: data.timeStamp + timeStamp: data.timestamp }, // Success function function(data) { @@ -47,7 +47,7 @@ module.exports = function (express) { function(error) { console.log('You\'ve encountered an error.'); }).save(); - + // Creating the ordered items based on how many objects are inside of the units array for (let i = 1; i < data.units.length; i++) { @@ -66,9 +66,9 @@ module.exports = function (express) { console.log('You\'ve encountered an error.'); }).save() }; - - + + }); - + return router; -}; \ No newline at end of file +}; From 806609aa53b347cffe431f1c305edb517f305906 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 22 Feb 2016 21:37:44 -0500 Subject: [PATCH 38/93] deleted file --- test/__createdata.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/__createdata.js diff --git a/test/__createdata.js b/test/__createdata.js deleted file mode 100644 index e69de29..0000000 From e26faab3d52d1cca9e57f20b0cba146b4253b905 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Mon, 22 Feb 2016 22:15:04 -0500 Subject: [PATCH 39/93] changed recipients to recipient --- order_bot/request.js | 2 +- routes/order.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/order_bot/request.js b/order_bot/request.js index c1a165d..c68e29f 100644 --- a/order_bot/request.js +++ b/order_bot/request.js @@ -21,7 +21,7 @@ for(i = 0; i < hits; i++) { sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', quantity: faker.random.number()} ], - recipients: { + recipient: { name: faker.name.findName(), address: { street: faker.address.streetAddress(), diff --git a/routes/order.js b/routes/order.js index 2d7d2ce..f778cf7 100644 --- a/routes/order.js +++ b/routes/order.js @@ -29,13 +29,13 @@ module.exports = function (express) { // Creating the order in the database based on the request orders.build({ orderId: data.uuid, - fullName: data.recipients.name, - streetAddress: data.recipients.address.street, - city: data.recipients.address.city, - state: data.recipients.address.state, - zip: data.recipients.address.zip, - phone: data.recipients.phone, - email: data.recipients.email, + fullName: data.recipient.name, + streetAddress: data.recipient.address.street, + city: data.recipient.address.city, + state: data.recipient.address.state, + zip: data.recipient.address.zip, + phone: data.recipient.phone, + email: data.recipient.email, timeStamp: data.timestamp }, // Success function From 16b23832493842887a6f8cc2ef1a05b868aac310 Mon Sep 17 00:00:00 2001 From: jamesalexanderdickerson Date: Mon, 22 Feb 2016 22:19:49 -0500 Subject: [PATCH 40/93] change test environment port to 1234 so that you can run the server and the unit test at the same time. --- package.json | 2 +- test/__order.js | 5 ++-- test/__order.old | 77 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 test/__order.old diff --git a/package.json b/package.json index 2ef887c..c06a795 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,6 @@ }, "devDependencies": { "mocha": "2.4.5", - "supertest": "1.2.0" + "supertest": "^1.2.0" } } diff --git a/test/__order.js b/test/__order.js index 58c325c..88f6d1b 100644 --- a/test/__order.js +++ b/test/__order.js @@ -1,10 +1,11 @@ +process.env.PORT = 1234; const request = require('supertest'); -const dataToInsert = {uuid: 'j42bc2ed9899a490fa44dbb2f756542e5',timestamp: 'Mon Feb 22 2016 13:14:26 GMT-0500 (EST)', healthy: true}; +const dataToInsert = {uuid: 'j42bc2ed9899a490fa44dbb2f756542e5', timestamp: 'Mon Feb 22 2016 13:14:26 GMT-0500 (EST)'}; // Manually configure Test Routes, they will be mapped to individual tests // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= const known_routes = [ - {title: 'Basic Order Test', route: '/order', status_code: 200, res: {healthy: true },req: dataToInsert}, + {title: 'Basic Order Test', route: '/order', status_code: 200, res: {healthy: true }, req: dataToInsert}, // {title: 'Status Check', route: '/api/v1/status', status_code: 200, res: {healthy: true}} ]; diff --git a/test/__order.old b/test/__order.old new file mode 100644 index 0000000..58c325c --- /dev/null +++ b/test/__order.old @@ -0,0 +1,77 @@ +const request = require('supertest'); +const dataToInsert = {uuid: 'j42bc2ed9899a490fa44dbb2f756542e5',timestamp: 'Mon Feb 22 2016 13:14:26 GMT-0500 (EST)', healthy: true}; + +// Manually configure Test Routes, they will be mapped to individual tests +// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +const known_routes = [ + {title: 'Basic Order Test', route: '/order', status_code: 200, res: {healthy: true },req: dataToInsert}, + // {title: 'Status Check', route: '/api/v1/status', status_code: 200, res: {healthy: true}} +]; + +describe('Loading Express', function () { + var server; + + // Before / After each test create / destroy the express server to fully simulate unique requests. + // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + beforeEach(function (){ + server = require('../server/server.js'); + }); + afterEach(function (){ + server.close(); + }); + + for(var route_index in known_routes){ + it('[' + known_routes[route_index].status_code + '] ' + known_routes[route_index].route + ' ' + + known_routes[route_index].title , function testHealth(done){ + request(server) + .put(known_routes[route_index].route) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res){ + + console.log(res.body); + + var matchedKeys = []; + for(matchKey in known_routes[route_index].req){ + matchedKeys.push(matchKey); + } + + var matchCount = 0; + for(resKey in res.body){ + if((matchedKeys.indexOf(resKey) < 0)) { + // Un Matched Key + } else { + // Key is matched + matchCount++; + } + } + + if(matchCount !== matchedKeys.length){ + throw new Error('Incorrect total of matches made'); + } + + if(known_routes[route_index].req === known_routes[route_index].res){ + throw new Error('key is not match'); + } + + if(!res.body.uuid){ + throw new Error('uuid is not been returned/added'); + } + + if(!res.body.timestamp){ + throw new Error('timestamp is not been returned/added'); + } + }) + .expect(known_routes[route_index].status_code, done) + }); + } + + + // Force a bad route + // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + it('404 everything bad routes', function testHealth(done){ + request(server) + .get('/not/a/real/route') + .expect(404, done); + }); +}); From c708a0874cc571343983f14135c47b317a1915d7 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Tue, 23 Feb 2016 17:36:40 -0500 Subject: [PATCH 41/93] trying to push unittest --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9836121..f0ce60a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "scripts": { "test": "echo \"Tests not setup yet\" && exit 0", "start": "node server/server.js", - "postinstall": "npm i -g mocha nodemon" + "postinstall": "npm i + -g mocha nodemon" }, "repository": { "type": "git", From 254133d1dc9e778dc52117574c20bbeed80b0cff Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Wed, 24 Feb 2016 03:32:53 -0500 Subject: [PATCH 42/93] OH NO, SOMETHING BROKE --- models/inventory.js | 7 ++- models/orders.js | 8 ++- order_bot/request.js | 2 +- routes/order.js | 130 +++++++++++++++++++++++++++-------------- server/db.js | 1 + server/server.js | 4 +- test/__dbconnection.js | 82 ++++++++++++++------------ 7 files changed, 145 insertions(+), 89 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index 1778c23..b2df874 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -5,5 +5,8 @@ module.exports = function() { const sequelize = db.connection; // Defining inventory based on the table schema from the db.js - let inventory = db.inventory; -}(); \ No newline at end of file + let inventory = db.inventory.create({ + + }) + }); +}(); diff --git a/models/orders.js b/models/orders.js index 73cb1ba..2b03ecd 100644 --- a/models/orders.js +++ b/models/orders.js @@ -5,5 +5,9 @@ module.exports = function() { const sequelize = db.connection; // Defining orders based on the table schema from the db.js - let orders = db.orders; -}(); \ No newline at end of file + function _create(data, err, success) { + let payload = data; + db.order.create(payload).then(success).catch(err) + } + +}(); diff --git a/order_bot/request.js b/order_bot/request.js index c1a165d..c68e29f 100644 --- a/order_bot/request.js +++ b/order_bot/request.js @@ -21,7 +21,7 @@ for(i = 0; i < hits; i++) { sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', quantity: faker.random.number()} ], - recipients: { + recipient: { name: faker.name.findName(), address: { street: faker.address.streetAddress(), diff --git a/routes/order.js b/routes/order.js index 2d7d2ce..0bbb881 100644 --- a/routes/order.js +++ b/routes/order.js @@ -18,57 +18,97 @@ module.exports = function (express) { res.send('Making PUT request to /order'); }) - .put(function(req, res, body) { - const data = req.body; - // adding generated UUID and timestamp to the json data - data.uuid = uuid_generator.generateUUID(); - data.timestamp = timestamp.makeTimestamp(); - // ending the response and console logging the response data - // console.log(data); + // .put(function(req, res) { + // var data = req.body; + // // adding generated UUID and timestamp to the json data + // data.uuid = uuid_generator.generateUUID(); + // data.timestamp = timestamp.makeTimestamp(); + // // ending the response and console logging the response data + // + // // Creating the order in the database based on the request + // orders.build({ + // orderId: data.uuid, + // fullName: data.recipient.name, + // streetAddress: data.recipient.address.street, + // city: data.recipient.address.city, + // state: data.recipient.address.state, + // zip: data.recipient.address.zip, + // phone: data.recipient.phone, + // email: data.recipient.email, + // timeStamp: data.timestamp + // }, + // + // // Success function + // function(data) { + // console.log('An order has been created.'); + // res.json(data); + // }, + // + // // Error function + // function(error) { + // console.log('You\'ve encountered an error.'); + // res.json(error); + // }).save(); + // + // + // // Creating the ordered items based on how many objects are inside of the units array + // for (let i = 1; i <= data.units.length; i++) { + // orderedItems.build({ + // sku: data.units.sku, + // orderId: data.uuid, + // quantity: data.units.quantity + // }, + // // Success function + // function(data) { + // console.log('An orderedItem has been created.'); + // }, + // + // // Error function + // function(error) { + // console.log('You\'ve encountered an error.'); + // }).save() + // }; + // + // + // }); - // Creating the order in the database based on the request - orders.build({ - orderId: data.uuid, - fullName: data.recipients.name, - streetAddress: data.recipients.address.street, - city: data.recipients.address.city, - state: data.recipients.address.state, - zip: data.recipients.address.zip, - phone: data.recipients.phone, - email: data.recipients.email, - timeStamp: data.timestamp - }, - // Success function - function(data) { - console.log('An order has been created.'); - }, - - // Error function - function(error) { - console.log('You\'ve encountered an error.'); - }).save(); - // Creating the ordered items based on how many objects are inside of the units array - for (let i = 1; i <= data.units.length; i++) { - orderedItems.build({ - sku: data.units.sku, - orderId: data.uuid, - quantity: data.units.quantity - }, - // Success function - function(data) { - console.log('An orderedItem has been created.'); - }, - // Error function - function(error) { - console.log('You\'ve encountered an error.'); - }).save() - }; + .put(function(req, res) { + orders.create({ + orderId: data.uuid, + fullName: data.recipient.name, + streetAddress: data.recipient.address.street, + city: data.recipient.address.city, + state: data.recipient.address.state, + zip: data.recipient.address.zip, + phone: data.recipient.phone, + email: data.recipient.email, + timeStamp: data.timestamp + }) + .on('success', function(data) { + for (let i = 1; i <= data.units.length; i++) { + orderedItems.create({ + sku: data.units[i].sku, + orderId: data.uuid, + quantity: data.units[i].quantity + })} + .on('success', function(data) { + res.json(data); + }) + .catch(function() { + res.json({ + success: false, + desc: 'Order was created but orderedItems creation failed' + statusCode: 500 + }) + }) + }) - }); + }) + }); return router; }; diff --git a/server/db.js b/server/db.js index 71f2bf1..8cfc6f0 100644 --- a/server/db.js +++ b/server/db.js @@ -10,6 +10,7 @@ module.exports = function() { const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, { host: process.env.DB_HOST, dialect: 'mysql', + logging: process.env.DEBUG, port: process.env.DB_PORT, pool: { max: 5, diff --git a/server/server.js b/server/server.js index 7952d91..b0c7ce9 100644 --- a/server/server.js +++ b/server/server.js @@ -14,6 +14,8 @@ app.use('/', require('../routes/home.js')(express)); app.use('/order', require('../routes/order.js')(express)); // Start server -app.listen(port, function() { +const server = app.listen(port, function() { console.log("Listening on " + port + "..."); }); + +module.exports = server; diff --git a/test/__dbconnection.js b/test/__dbconnection.js index cdb028b..6c318b0 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -1,43 +1,49 @@ -'use-strict' -const supertest = require('supertest'); +const request = require('supertest'); +const faker = require('faker'); -const server = supertest.agent('http://localhost:3000'); +describe('Order routes', function() { + var server; + var testOrderData = { + units: [ + { + sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + quantity: faker.random.number()}, + { + sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', + quantity: faker.random.number()} + ], + recipients: { + name: faker.name.findName(), + address: { + street: faker.address.streetAddress(), + city: faker.address.city(), + state: faker.address.stateAbbr(), + zip: faker.address.zipCode() + }, + phone: faker.phone.phoneNumberFormat(), + email: faker.internet.email() + } + }; -describe('test', function() { - it('/should send data over request', function(done) { - server - .put('/order') - .send({ - units: [ - { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', - quantity: '2'}, - { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', - quantity: '3'} - ], - recipients: { - name: 'Sally', - address: { - street: '3300 University Blvd', - city: 'Winter Park', - state: 'FL', - zip: '32792' - }, - phone: '123-456-7890', - email: 'test@testemail.com' - } - }) - .expect('Content-Type', /json/) - .expect(function(err, res) { - if(!res.body.data.recipients.name.should.equal('Sally')){ - throw new Error('This is supposed to error') - } - res.body.err.should.equal(false) - res.body.data.recipients.name.should.equal('Sally') - res.body.data.units.sku.should.equal('test') + var orderData; - }) - .end(done()); + beforeEach(function() { + server = require('../server/server.js'); + }); + + afterEach(function() { + server.close(); + }); + + it('Order create one', function(done) { + request(server) + .put('/order') + .send(testOrderData) + .expect('Content-Type', /json/) + .expect(function(res) { + if(res.body.recipients.name !== testOrderData.recipients.name) throw new Error('Order data did not create properly: Recipients name doesnt match!'); + orderData = res.body; + }) + .expect(200, done) }); }); From 8e99acc9ce23fc80105a6d27d5a4cdd455ae44db Mon Sep 17 00:00:00 2001 From: therealaldo Date: Wed, 24 Feb 2016 04:53:34 -0500 Subject: [PATCH 43/93] Corrected Models and PUT Route Added crud functionality to table models modified put route to give success and error messages better handling of the data transfer --- models/ordered-items.js | 56 +++++++++++++- models/orders.js | 57 +++++++++++++- routes/order.js | 165 +++++++++------------------------------- 3 files changed, 142 insertions(+), 136 deletions(-) diff --git a/models/ordered-items.js b/models/ordered-items.js index 1a2466b..4c68e08 100644 --- a/models/ordered-items.js +++ b/models/ordered-items.js @@ -4,7 +4,57 @@ module.exports = function() { const Sequelize = require('sequelize'); const sequelize = db.connection; - // Defining orderedItems based on the table schema from the db.js - let orderedItems = db.orderedItems; - + function _create(data, err, success) { + let payload = data; + + db.orderedItems.create({ + for(let i = 1; i <= payload.units.length; i++) { + sku: payload.units[i].sku, + orderId: payload.uuid, + quantity: payload.units[i].quantity + } + }) + .then(success) + .catch(err); + } + + function _update(data, err, success) { + let payload = data; + db.orderedItems.find({where: {orderId: payload.uuid}}) + .then(function(matchedOrder) { + matchedOrder.updateAttributes(data) + .then(success) + .catch(err); + }) + .catch(err); + } + + function _find(data, err, success) { + let payload = data; + db.orderedItems.find({where: {orderId: payload.uuid}}) + .then(success) + .catch(err); + } + + function _findAll(err, success) { + db.orderedItems.findAll() + .then(success) + .catch(err); + } + + function _destroy(data, err, success) { + let payload = data; + db.orderedItems.destroy({where: {orderId: payload.uuid}, force: {data.force}}) + .then(success) + .catch(err); + } + + return { + create: _create, + update: _update, + find: _find, + findAll: _findAll, + destroy: _destroy + } + }(); diff --git a/models/orders.js b/models/orders.js index 2b03ecd..f1e4747 100644 --- a/models/orders.js +++ b/models/orders.js @@ -4,10 +4,61 @@ module.exports = function() { const Sequelize = require('sequelize'); const sequelize = db.connection; - // Defining orders based on the table schema from the db.js function _create(data, err, success) { let payload = data; - db.order.create(payload).then(success).catch(err) + + db.order.create({ + orderId: payload.uuid; + fullName: payload.recipient.name, + streetAddress: payload.recipient.address.street, + city: payload.recipient.address.city, + state: payload.recipient.address.state, + zip: payload.recipient.address.zip, + phone: payload.recipient.phone, + email: payload.recipient.email, + timeStamp: payload.timestamp + }) + .then(success) + .catch(err); + } + + function _update(data, err, success) { + let payload = data; + db.order.find({where: {orderId: payload.uuid}}) + .then(function(matchedOrder) { + matchedOrder.updateAttributes(data) + .then(success) + .catch(err); + }) + .catch(err); } - + + function _find(data, err, success) { + let payload = data; + db.order.find({where: {orderId: payload.uuid}}) + .then(success) + .catch(err); + } + + function _findAll(err, success) { + db.order.findAll() + .then(success) + .catch(err); + } + + function _destroy(data, err, success) { + let payload = data; + db.order.destroy({where: {orderId: payload.uuid}, force: data.force}) + .then(success) + .catch(err); + } + + return { + create: _create, + update: _update, + find: _find, + findAll: _findAll, + destroy: _destroy + } + }(); diff --git a/routes/order.js b/routes/order.js index 7213dfe..5ed9120 100644 --- a/routes/order.js +++ b/routes/order.js @@ -1,135 +1,40 @@ 'use strict'; -module.exports = function (express) { - - // Config - const router = express.Router(); - const Sequelize = require('sequelize'); - const db = require('../server/db.js'); - let orderedItems = db.orderedItems; - let orders = db.orders; - - // Include uuid generator and timestamp generator - const uuid_generator = require('../server/uuid-generator.js'); - const timestamp = require('../server/timestamp.js'); - - // Display - router.route('/') - .get(function(req, res) { - res.send('Making PUT request to /order'); - }) - - // .put(function(req, res) { - // var data = req.body; - // // adding generated UUID and timestamp to the json data - // data.uuid = uuid_generator.generateUUID(); - // data.timestamp = timestamp.makeTimestamp(); - // // ending the response and console logging the response data - // - // // Creating the order in the database based on the request - // orders.build({ - // orderId: data.uuid, - // fullName: data.recipient.name, - // streetAddress: data.recipient.address.street, - // city: data.recipient.address.city, - // state: data.recipient.address.state, - // zip: data.recipient.address.zip, - // phone: data.recipient.phone, - // email: data.recipient.email, - // timeStamp: data.timestamp - // }, - // - // // Success function - // function(data) { - // console.log('An order has been created.'); - // res.json(data); - // }, - // - // // Error function - // function(error) { - // console.log('You\'ve encountered an error.'); - // res.json(error); - // }).save(); - // - // - // // Creating the ordered items based on how many objects are inside of the units array - // for (let i = 1; i <= data.units.length; i++) { - // orderedItems.build({ - // sku: data.units.sku, - // orderId: data.uuid, - // quantity: data.units.quantity - // }, - // // Success function - // function(data) { - // console.log('An orderedItem has been created.'); - // }, - // - // // Error function - // function(error) { - // console.log('You\'ve encountered an error.'); - // }).save() - // }; - // - // - // }); - - // Creating the order in the database based on the request - orders.build({ - orderId: data.uuid, - fullName: data.recipient.name, - streetAddress: data.recipient.address.street, - city: data.recipient.address.city, - state: data.recipient.address.state, - zip: data.recipient.address.zip, - phone: data.recipient.phone, - email: data.recipient.email, - timeStamp: data.timestamp - }, - // Success function - function(data) { - console.log('An order has been created.'); - }, - - // Error function - function(error) { - console.log('You\'ve encountered an error.'); - }).save(); - - - - .put(function(req, res) { - orders.create({ - orderId: data.uuid, - fullName: data.recipient.name, - streetAddress: data.recipient.address.street, - city: data.recipient.address.city, - state: data.recipient.address.state, - zip: data.recipient.address.zip, - phone: data.recipient.phone, - email: data.recipient.email, - timeStamp: data.timestamp - }) - .on('success', function(data) { - for (let i = 1; i <= data.units.length; i++) { - orderedItems.create({ - sku: data.units[i].sku, - orderId: data.uuid, - quantity: data.units[i].quantity - })} - .on('success', function(data) { - res.json(data); - }) - .catch(function() { - res.json({ - success: false, - desc: 'Order was created but orderedItems creation failed' - statusCode: 500 - }) - }) - +module.exports = function(express) { + +// Config +const router = express.Router(); +const Sequelize = require('sequelize'); +const db = require('../server/db.js'); +let orderedItems = db.orderedItems; +let orders = db.orders; + +// Include uuid generator and timestamp generator +const uuid_generator = require('../server/uuid-generator.js'); +const timestamp = require('../server/timestamp.js'); + +// Display +router.route('/') + .get(function(req, res) { + res.send('Making PUT request to /order'); + }) + + .put(function(req, res) { + let data = req.body; + + data.uuid = uuid_generator.generateUUID(); + data.timestamp = timestamp.makeTimestamp(); + + orders.create(data, function(err) { + res.status(500).json(err); + }, function(data) { + orderedItems.create(data, function(err) { + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); }) + }) + }); - }) - }); +return router; - return router; }; From b83bfe7e8cdc55c27d19b35dd11b586fb9c7e8b9 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Wed, 24 Feb 2016 04:56:01 -0500 Subject: [PATCH 44/93] fixed syntax --- models/inventory.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index b2df874..b146d7b 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -6,7 +6,6 @@ module.exports = function() { // Defining inventory based on the table schema from the db.js let inventory = db.inventory.create({ - - }) + }); }(); From 45121811887675daa9fa9b831996a78640fb62f6 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Wed, 24 Feb 2016 06:36:44 -0500 Subject: [PATCH 45/93] working on new routes --- models/ordered-items.js | 16 ++++++++-------- models/orders.js | 14 +++++++------- routes/order.js | 36 +++++++++++++++++++++++++----------- server/db.js | 23 +++++++++++------------ 4 files changed, 51 insertions(+), 38 deletions(-) diff --git a/models/ordered-items.js b/models/ordered-items.js index 4c68e08..d784c5e 100644 --- a/models/ordered-items.js +++ b/models/ordered-items.js @@ -1,21 +1,21 @@ 'use strict'; module.exports = function() { const db = require('../server/db.js'); - const Sequelize = require('sequelize'); + // const Sequelize = require('sequelize'); const sequelize = db.connection; function _create(data, err, success) { let payload = data; - db.orderedItems.create({ - for(let i = 1; i <= payload.units.length; i++) { + for(let i = 0; i < payload.units.length; i++) { + db.orderedItems.create({ sku: payload.units[i].sku, orderId: payload.uuid, quantity: payload.units[i].quantity - } - }) - .then(success) - .catch(err); + }) + .then(success) + .catch(err); + } } function _update(data, err, success) { @@ -44,7 +44,7 @@ module.exports = function() { function _destroy(data, err, success) { let payload = data; - db.orderedItems.destroy({where: {orderId: payload.uuid}, force: {data.force}}) + db.orderedItems.destroy({where: {orderId: payload.uuid}}) .then(success) .catch(err); } diff --git a/models/orders.js b/models/orders.js index f1e4747..1f0538c 100644 --- a/models/orders.js +++ b/models/orders.js @@ -1,14 +1,14 @@ 'use strict'; module.exports = function() { const db = require('../server/db.js'); - const Sequelize = require('sequelize'); + // const Sequelize = require('sequelize'); const sequelize = db.connection; function _create(data, err, success) { let payload = data; - db.order.create({ - orderId: payload.uuid; + db.orders.create({ + orderId: payload.uuid, fullName: payload.recipient.name, streetAddress: payload.recipient.address.street, city: payload.recipient.address.city, @@ -24,7 +24,7 @@ module.exports = function() { function _update(data, err, success) { let payload = data; - db.order.find({where: {orderId: payload.uuid}}) + db.orders.find({where: {orderId: payload.uuid}}) .then(function(matchedOrder) { matchedOrder.updateAttributes(data) .then(success) @@ -35,20 +35,20 @@ module.exports = function() { function _find(data, err, success) { let payload = data; - db.order.find({where: {orderId: payload.uuid}}) + db.orders.find({where: {orderId: payload.uuid}}) .then(success) .catch(err); } function _findAll(err, success) { - db.order.findAll() + db.orders.findAll() .then(success) .catch(err); } function _destroy(data, err, success) { let payload = data; - db.order.destroy({where: {orderId: payload.uuid}, force: data.force}) + db.order.destroy({where: {orderId: payload.uuid}}) .then(success) .catch(err); } diff --git a/routes/order.js b/routes/order.js index 5ed9120..0c94040 100644 --- a/routes/order.js +++ b/routes/order.js @@ -3,10 +3,10 @@ module.exports = function(express) { // Config const router = express.Router(); -const Sequelize = require('sequelize'); -const db = require('../server/db.js'); -let orderedItems = db.orderedItems; -let orders = db.orders; +// const Sequelize = require('sequelize'); +// const db = require('../server/db.js'); +let orderedItems = require('../models/ordered-items.js'); +let orders = require('../models/orders.js'); // Include uuid generator and timestamp generator const uuid_generator = require('../server/uuid-generator.js'); @@ -20,19 +20,33 @@ router.route('/') .put(function(req, res) { let data = req.body; + let statusCode; + let error; data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); orders.create(data, function(err) { - res.status(500).json(err); + let statusCode = 500; + let error = err; }, function(data) { - orderedItems.create(data, function(err) { - res.status(500).json(err); - }, function(data) { - res.status(200).json(data); - }) - }) + let statusCode = 200; + }); + + orderedItems.create(data, function(err) { + let statusCode = 500; + let error = err; + }, function(data) { + let statusCode = 200; + }); + + if(statusCode == 200) { + res.status(statusCode).json(data); + } + if(statusCode == 500) { + res.status(statusCode).json(error); + } + }); return router; diff --git a/server/db.js b/server/db.js index 8cfc6f0..1b39819 100644 --- a/server/db.js +++ b/server/db.js @@ -7,10 +7,9 @@ module.exports = function() { const mysql = require('mysql'); // Initializing sequelize - const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, { + const _sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, { host: process.env.DB_HOST, dialect: 'mysql', - logging: process.env.DEBUG, port: process.env.DB_PORT, pool: { max: 5, @@ -20,7 +19,7 @@ module.exports = function() { }); // Creating inventory table schema - const inventory = sequelize.define('inventory', { + const _inventory = _sequelize.define('inventory', { sku: { type: Sequelize.STRING }, @@ -30,7 +29,7 @@ module.exports = function() { }); // Creating orderedItems table schema - const orderedItems = sequelize.define('orderedItems', { + const _orderedItems = _sequelize.define('orderedItems', { sku: { type: Sequelize.STRING }, @@ -43,7 +42,7 @@ module.exports = function() { }); // Creating orders table schema - const orders = sequelize.define('orders', { + const _orders = _sequelize.define('orders', { orderId: { type: Sequelize.STRING }, @@ -74,7 +73,7 @@ module.exports = function() { }); // Creating units table schema - const units = sequelize.define('units', { + const _units = _sequelize.define('units', { sku: { type: Sequelize.STRING }, @@ -87,14 +86,14 @@ module.exports = function() { }); // Syncs newly created tables and data inside the tables - sequelize.sync(); + _sequelize.sync(); // Returns data to be called in the models return { - connection: sequelize, - inventory: inventory, - orderedItems: orderedItems, - orders: orders, - units: units + connection: _sequelize, + inventory: _inventory, + orderedItems: _orderedItems, + orders: _orders, + units: _units }; }(); From 6951bc43ff334db76aa869b987b76a9be8fd23da Mon Sep 17 00:00:00 2001 From: therealaldo Date: Wed, 24 Feb 2016 08:41:30 -0500 Subject: [PATCH 46/93] order route is working with new models route could be optimized using transactions/migrations/foreign keys --- readme.md | 2 +- routes/order.js | 27 +++++++++++++-------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/readme.md b/readme.md index 0d513be..480825b 100644 --- a/readme.md +++ b/readme.md @@ -16,7 +16,7 @@ $ npm install //Installs the package.json file. To check to see if you have MySQL installed on your machine. ``` -$ mysql --verison +$ mysql --version ``` If MySQL is not installed. Install it with [Homebrew](http://brew.sh/). diff --git a/routes/order.js b/routes/order.js index 0c94040..84352b0 100644 --- a/routes/order.js +++ b/routes/order.js @@ -20,31 +20,30 @@ router.route('/') .put(function(req, res) { let data = req.body; - let statusCode; + let successMsg; let error; data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); + let serverMessage; + orders.create(data, function(err) { - let statusCode = 500; - let error = err; - }, function(data) { - let statusCode = 200; + error = 'Encountered an error while creating Order.'; + }, function(order) { + successMsg = 'Order was successfully created.'; }); orderedItems.create(data, function(err) { - let statusCode = 500; - let error = err; - }, function(data) { - let statusCode = 200; + error = 'Encountered an error while creating Ordered It.'; + }, function(order) { + successMsg = 'Ordered Item was successfully created.'; }); - if(statusCode == 200) { - res.status(statusCode).json(data); - } - if(statusCode == 500) { - res.status(statusCode).json(error); + if(error) { + res.status(500).json(error); + } else{ + res.status(200).json(data); } }); From 9c4414039bc76b1412b20f21850314c9b5596711 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Wed, 24 Feb 2016 08:42:50 -0500 Subject: [PATCH 47/93] removed unnecessary let variable --- routes/order.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/routes/order.js b/routes/order.js index 84352b0..0c62f7e 100644 --- a/routes/order.js +++ b/routes/order.js @@ -26,8 +26,6 @@ router.route('/') data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); - let serverMessage; - orders.create(data, function(err) { error = 'Encountered an error while creating Order.'; }, function(order) { From 70a44acb0f32dfe15d0477ab1e39a2c8090421f5 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Wed, 24 Feb 2016 17:29:11 -0500 Subject: [PATCH 48/93] Create unit testing works --- models/orders.js | 1 + test/__dbconnection.js | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/models/orders.js b/models/orders.js index 1f0538c..c3f0ed4 100644 --- a/models/orders.js +++ b/models/orders.js @@ -6,6 +6,7 @@ module.exports = function() { function _create(data, err, success) { let payload = data; + // console.log(payload); db.orders.create({ orderId: payload.uuid, diff --git a/test/__dbconnection.js b/test/__dbconnection.js index 6c318b0..31e74cf 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -12,7 +12,7 @@ describe('Order routes', function() { sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', quantity: faker.random.number()} ], - recipients: { + recipient: { name: faker.name.findName(), address: { street: faker.address.streetAddress(), @@ -27,6 +27,8 @@ describe('Order routes', function() { var orderData; + console.log(testOrderData); + beforeEach(function() { server = require('../server/server.js'); }); @@ -38,10 +40,11 @@ describe('Order routes', function() { it('Order create one', function(done) { request(server) .put('/order') + .set('Accept', 'application/json') .send(testOrderData) .expect('Content-Type', /json/) .expect(function(res) { - if(res.body.recipients.name !== testOrderData.recipients.name) throw new Error('Order data did not create properly: Recipients name doesnt match!'); + if(res.body.recipient.name !== testOrderData.recipient.name) throw new Error('Order data did not create properly: Recipients name doesnt match!'); orderData = res.body; }) .expect(200, done) From 53bcd6441e27edecaa20fcdcdea2b74010181375 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Wed, 24 Feb 2016 19:36:34 -0500 Subject: [PATCH 49/93] changed route and added foreign key --- routes/order.js | 21 ++++++++++++++++++--- server/db.js | 5 ++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/routes/order.js b/routes/order.js index 0c62f7e..4a4f5ad 100644 --- a/routes/order.js +++ b/routes/order.js @@ -26,7 +26,7 @@ router.route('/') data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); - orders.create(data, function(err) { + /*orders.create(data, function(err) { error = 'Encountered an error while creating Order.'; }, function(order) { successMsg = 'Order was successfully created.'; @@ -36,13 +36,28 @@ router.route('/') error = 'Encountered an error while creating Ordered It.'; }, function(order) { successMsg = 'Ordered Item was successfully created.'; + });*/ + + orders.create(data, function(err) { + error = 'Encountered an error while creating Order.'; + res.status(500).json(err); + }, function(order) { + successMsg = 'Order was successfully created.'; + orderedItems.create(order, function(err) { + error = 'Encountered an error while creating Ordered It.'; + res.status(500).json(err); + }, function(completedOrder) { + successMsg = 'Ordered Item was successfully created.'; + res.status(200).json(completedOrder); + }); }); - if(error) { + + /*if(error) { res.status(500).json(error); } else{ res.status(200).json(data); - } + }*/ }); diff --git a/server/db.js b/server/db.js index 1b39819..a01a602 100644 --- a/server/db.js +++ b/server/db.js @@ -33,9 +33,6 @@ module.exports = function() { sku: { type: Sequelize.STRING }, - orderId: { - type: Sequelize.STRING - }, quantity: { type: Sequelize.STRING } @@ -85,6 +82,8 @@ module.exports = function() { } }); + _order.hasMany(_orderedItems, {foreignKey: 'orderId'}); + // Syncs newly created tables and data inside the tables _sequelize.sync(); From 4ec5d15d895cd994ab326f2ef34739460c476953 Mon Sep 17 00:00:00 2001 From: jamesalexanderdickerson Date: Wed, 24 Feb 2016 21:58:11 -0500 Subject: [PATCH 50/93] changed model for orders, orderedItems, and db.js --- models/ordered-items.js | 6 +----- models/orders.js | 12 +----------- order_bot/request.js | 30 ++++++++++++++---------------- routes/order.js | 5 +---- server/db.js | 8 +++++--- test/__dbconnection.js | 26 ++++++++------------------ 6 files changed, 30 insertions(+), 57 deletions(-) diff --git a/models/ordered-items.js b/models/ordered-items.js index c13bd9d..8c48f8f 100644 --- a/models/ordered-items.js +++ b/models/ordered-items.js @@ -7,11 +7,7 @@ module.exports = function() { let payload = data; for(let i = 0; i < payload.units.length; i++) { - db.orderedItems.create({ - sku: payload.units[i].sku, - orderId: payload.uuid, - quantity: payload.units[i].quantity - }) + db.orderedItems.create(data.units[i]) .then(success) .catch(err); } diff --git a/models/orders.js b/models/orders.js index dc35f97..a96dea9 100644 --- a/models/orders.js +++ b/models/orders.js @@ -8,17 +8,7 @@ module.exports = function() { let payload = data; console.log(payload); - db.orders.create({ - orderId: payload.uuid, - fullName: payload.recipient.name, - streetAddress: payload.recipient.address.street, - city: payload.recipient.address.city, - state: payload.recipient.address.state, - zip: payload.recipient.address.zip, - phone: payload.recipient.phone, - email: payload.recipient.email, - timeStamp: payload.timestamp - }) + db.orders.create(data) .then(success) .catch(err); } diff --git a/order_bot/request.js b/order_bot/request.js index c68e29f..3105493 100644 --- a/order_bot/request.js +++ b/order_bot/request.js @@ -13,24 +13,22 @@ for(i = 0; i < hits; i++) { * Faker API documentation at https://github.com/marak/faker.js */ const payload = { - units: [ + "units": [ { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', - quantity: faker.random.number()}, + "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + "quantity": 5}, { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', - quantity: faker.random.number()} - ], - recipient: { - name: faker.name.findName(), - address: { - street: faker.address.streetAddress(), - city: faker.address.city(), - state: faker.address.stateAbbr(), - zip: faker.address.zipCode() - }, - phone: faker.phone.phoneNumberFormat(), - email: faker.internet.email() + "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', + "quantity": 2}, + ], + + "fullName": "James Dickerson", + "streetAddress": "14250 Cheval Mayfaire", + "city": "Orlando", + "state": "FL", + "zip": "32828", + "phone": "305-710-8220", + "email": "jamesalexanderdickerson@gmail.com" } }; diff --git a/routes/order.js b/routes/order.js index 587010a..9f169c6 100644 --- a/routes/order.js +++ b/routes/order.js @@ -41,15 +41,12 @@ router.route('/') });*/ orders.create(data, function(err) { - error = 'Encountered an error while creating Order.'; res.status(500).json(err); }, function(order) { - successMsg = 'Order was successfully created.'; orderedItems.create(order, function(err) { - error = 'Encountered an error while creating Ordered It.'; res.status(500).json(err); }, function(completedOrder) { - successMsg = 'Ordered Item was successfully created.'; + successMsg = 'Orders and Ordered Item was successfully created.'; res.status(200).json(completedOrder); }); }); diff --git a/server/db.js b/server/db.js index a01a602..a94a5c7 100644 --- a/server/db.js +++ b/server/db.js @@ -40,7 +40,7 @@ module.exports = function() { // Creating orders table schema const _orders = _sequelize.define('orders', { - orderId: { + uuid: { type: Sequelize.STRING }, fullName: { @@ -64,7 +64,7 @@ module.exports = function() { email: { type: Sequelize.STRING }, - timeStamp: { + timestamp: { type: Sequelize.STRING } }); @@ -82,7 +82,9 @@ module.exports = function() { } }); - _order.hasMany(_orderedItems, {foreignKey: 'orderId'}); + _orders.hasMany(_orderedItems, {foreignKey: 'uuid'}); + // _units.hasMany(_inventory, {foreignKey: 'sku'}); + // _orderedItems.hasOne(_units, {foreignKey: 'sku'}); // Syncs newly created tables and data inside the tables _sequelize.sync(); diff --git a/test/__dbconnection.js b/test/__dbconnection.js index 3807b6b..0db0899 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -4,24 +4,14 @@ const faker = require('faker'); describe('Order routes', function() { var server; var testOrderData = { - units: [ - { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', - quantity: faker.random.number()}, - { - sku: 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', - quantity: faker.random.number()} - ], - recipient: { - name: faker.name.findName(), - address: { - street: faker.address.streetAddress(), - city: faker.address.city(), - state: faker.address.stateAbbr(), - zip: faker.address.zipCode() - }, - phone: faker.phone.phoneNumberFormat(), - email: faker.internet.email() + units: [], + fullName: faker.name.findName(), + streetAddress: faker.address.streetAddress(), + city: faker.address.city(), + state: faker.address.stateAbbr(), + zip: faker.address.zipCode(), + phone: faker.phone.phoneNumberFormat(), + email: faker.internet.email() } }; From 6709bebe1701562e35d6be7252f77af7a1ba537f Mon Sep 17 00:00:00 2001 From: therealaldo Date: Wed, 24 Feb 2016 23:30:31 -0500 Subject: [PATCH 51/93] fixed models, route need to fix route where you can access the saved data from the database to show it back to the user --- models/ordered-items.js | 1 + models/orders.js | 1 - order_bot/request.js | 1 - routes/order.js | 25 +++++++++++++++---------- server/db.js | 8 ++++---- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/models/ordered-items.js b/models/ordered-items.js index 8c48f8f..98c758b 100644 --- a/models/ordered-items.js +++ b/models/ordered-items.js @@ -7,6 +7,7 @@ module.exports = function() { let payload = data; for(let i = 0; i < payload.units.length; i++) { + data.units[i].uuid = data.uuid; db.orderedItems.create(data.units[i]) .then(success) .catch(err); diff --git a/models/orders.js b/models/orders.js index a96dea9..78c0a0b 100644 --- a/models/orders.js +++ b/models/orders.js @@ -6,7 +6,6 @@ module.exports = function() { function _create(data, err, success) { let payload = data; - console.log(payload); db.orders.create(data) .then(success) diff --git a/order_bot/request.js b/order_bot/request.js index 3105493..74eac64 100644 --- a/order_bot/request.js +++ b/order_bot/request.js @@ -29,7 +29,6 @@ for(i = 0; i < hits; i++) { "zip": "32828", "phone": "305-710-8220", "email": "jamesalexanderdickerson@gmail.com" - } }; /** diff --git a/routes/order.js b/routes/order.js index 9f169c6..3085098 100644 --- a/routes/order.js +++ b/routes/order.js @@ -21,7 +21,7 @@ router.route('/') .put(function(req, res) { let data = req.body; let successMsg; - let error; + let serverError; // console.log(data); @@ -40,23 +40,28 @@ router.route('/') successMsg = 'Ordered Item was successfully created.'; });*/ + var savedData = {}; + orders.create(data, function(err) { - res.status(500).json(err); + serverError = true; }, function(order) { - orderedItems.create(order, function(err) { - res.status(500).json(err); + savedData = order.dataValues; + savedData.units = []; + orderedItems.create(data, function(err) { + serverError = true; }, function(completedOrder) { - successMsg = 'Orders and Ordered Item was successfully created.'; - res.status(200).json(completedOrder); + serverError = false; + savedData.units.push(completedOrder.dataValues); }); }); + console.log(savedData); - /*if(error) { - res.status(500).json(error); + if(serverError) { + res.status(500).json(serverError); } else{ - res.status(200).json(data); - }*/ + res.status(200).json(savedData); + } }); diff --git a/server/db.js b/server/db.js index a94a5c7..764de2e 100644 --- a/server/db.js +++ b/server/db.js @@ -41,7 +41,8 @@ module.exports = function() { // Creating orders table schema const _orders = _sequelize.define('orders', { uuid: { - type: Sequelize.STRING + type: Sequelize.STRING, + primaryKey: true }, fullName: { type: Sequelize.STRING @@ -82,9 +83,8 @@ module.exports = function() { } }); - _orders.hasMany(_orderedItems, {foreignKey: 'uuid'}); - // _units.hasMany(_inventory, {foreignKey: 'sku'}); - // _orderedItems.hasOne(_units, {foreignKey: 'sku'}); + + _orders.hasMany(_orderedItems, {foreignKey: 'uuid'}) // Syncs newly created tables and data inside the tables _sequelize.sync(); From ac88fb507b40b833b5bc2d41fdbd0adb76d1975d Mon Sep 17 00:00:00 2001 From: therealaldo Date: Wed, 24 Feb 2016 23:31:02 -0500 Subject: [PATCH 52/93] removed commetned route --- routes/order.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/routes/order.js b/routes/order.js index 3085098..e905975 100644 --- a/routes/order.js +++ b/routes/order.js @@ -28,18 +28,6 @@ router.route('/') data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); - /*orders.create(data, function(err) { - error = 'Encountered an error while creating Order.'; - }, function(order) { - successMsg = 'Order was successfully created.'; - }); - - orderedItems.create(data, function(err) { - error = 'Encountered an error while creating Ordered It.'; - }, function(order) { - successMsg = 'Ordered Item was successfully created.'; - });*/ - var savedData = {}; orders.create(data, function(err) { From d1f9059c912d5f3b9b2b43d7e7ce90293a45b11a Mon Sep 17 00:00:00 2001 From: Chris Fortin Date: Thu, 25 Feb 2016 00:13:02 -0500 Subject: [PATCH 53/93] changed inventory model and units model --- models/inventory.js | 56 ++++++++++++++++++++++++++++++++++++++---- models/units.js | 60 +++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 106 insertions(+), 10 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index b146d7b..c896390 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -1,11 +1,57 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js'); - const Sequelize = require('sequelize'); + const db = require('../server/db.js')(); + // const Sequelize = require('sequelize'); const sequelize = db.connection; - // Defining inventory based on the table schema from the db.js - let inventory = db.inventory.create({ + function _create(data, err, success) { + let payload = data; + + db.inventory.create({ + sku: payload.sku, + location: payload.location + }) + .then(success) + .catch(err); + } + + function _update(data, err, success) { + let payload = data; + db.inventory.find({where: {sku: payload.sku}}) + .then(function(matchedOrder) { + matchedOrder.updateAttributes(data) + .then(success) + .catch(err) + }) + .catch(err) + } + + function _find(data, err, success) { + let payload = data; + db.inventory.find({where: {sku: payload.sku}}) + .then(success) + .catch(err); + } + + function _findAll(err, success) { + db.inventory.findAll() + .then(success) + .catch(err); + } + + function _destroy(data, err, success) { + let payload = data; + db.inventory.destroy({where: {sku: payload.sku}}) + .then(success) + .catch(err); + } + + return { + create: _create, + update: _update, + find: _find, + findAll: _findAll, + destroy: _destroy + } - }); }(); diff --git a/models/units.js b/models/units.js index 616fcc7..aba9f8b 100644 --- a/models/units.js +++ b/models/units.js @@ -1,9 +1,59 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js'); - const Sequelize = require('sequelize'); + const db = require('../server/db.js')(); + // const Sequelize = require('sequelize'); const sequelize = db.connection; - // Defining units based on the table schema from the db.js - let units = db.units; -}(); \ No newline at end of file + function _create(data, err, success) { + let payload = data; + + db.units.create({ + sku: payload.sku, + name: payload.name, + description: payload.description + }) + .then(success) + .catch(err); + } + + function _update(data, err, success) { + let payload = data; + db.units.find({where: {sku: payload.sku}}) + .then(function(matchedOrder) { + matchedOrder.updateAttributes(data) + .then(success) + .catch(err); + }) + .catch(err); + } + + function _find(data, err, success) { + let payload = data; + db.units.find({where: {sku: payload.sku}}) + .then(success) + .catch(err) + } + + function _findAll(err, success) { + let payload = data; + db.units.findAll() + .then(success) + .catch(err) + } + + function _destroy(data, err, success) { + let payload = data; + db.units.destroy({where: {orderId: payload.sku}}) + .then(success) + .catch(err); + } + + return { + create: _create, + update: _update, + find: _find, + findAll: _findAll, + destroy: _destroy + } + +} From 8df122d224a3f2759a3f4e41ab14172cabc2a757 Mon Sep 17 00:00:00 2001 From: Chris Fortin Date: Thu, 25 Feb 2016 00:15:23 -0500 Subject: [PATCH 54/93] fixed postinstall on package.json file --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 11ddd91..7f024e3 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,7 @@ "scripts": { "test": "echo \"Tests not setup yet\" && exit 0", "start": "node server/server.js", - "postinstall": "npm i - -g mocha nodemon" + "postinstall": "npm i -g mocha nodemon" }, "repository": { "type": "git", From 707bda540a358dc334b3e7cba524a56553ed7b46 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Fri, 26 Feb 2016 18:09:59 -0500 Subject: [PATCH 55/93] My test works? --- order_bot/request.js | 2 +- routes/order.js | 7 ++++-- test/__dbconnection.js | 48 ++++++++++++++++++++++++++---------------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/order_bot/request.js b/order_bot/request.js index 74eac64..3bd4b8c 100644 --- a/order_bot/request.js +++ b/order_bot/request.js @@ -19,7 +19,7 @@ for(i = 0; i < hits; i++) { "quantity": 5}, { "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', - "quantity": 2}, + "quantity": 2} ], "fullName": "James Dickerson", diff --git a/routes/order.js b/routes/order.js index e905975..af2d2cc 100644 --- a/routes/order.js +++ b/routes/order.js @@ -23,27 +23,30 @@ router.route('/') let successMsg; let serverError; - // console.log(data); + console.log("DATA IN =======", data); data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); var savedData = {}; + orders.create(data, function(err) { serverError = true; }, function(order) { savedData = order.dataValues; savedData.units = []; + console.log('THE ORDER.CREATE SUCCESS ==========', order); orderedItems.create(data, function(err) { serverError = true; + }, function(completedOrder) { serverError = false; savedData.units.push(completedOrder.dataValues); }); }); - console.log(savedData); + console.log("DATA OUT =======", savedData); if(serverError) { res.status(500).json(serverError); diff --git a/test/__dbconnection.js b/test/__dbconnection.js index 0db0899..45b4e80 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -1,22 +1,29 @@ const request = require('supertest'); const faker = require('faker'); -describe('Order routes', function() { +describe('Order Routes', function() { var server; var testOrderData = { - units: [], - fullName: faker.name.findName(), - streetAddress: faker.address.streetAddress(), - city: faker.address.city(), - state: faker.address.stateAbbr(), - zip: faker.address.zipCode(), - phone: faker.phone.phoneNumberFormat(), - email: faker.internet.email() - } - }; - var orderData; + "units": [ + { + "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + "quantity": 5}, + { + "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', + "quantity": 2} + ], + "fullName": "James Dickerson", + "streetAddress": "14250 Cheval Mayfaire", + "city": "Orlando", + "state": "FL", + "zip": "32828", + "phone": "305-710-8220", + "email": "jamesalexanderdickerson@gmail.com" + } + + var testOrder; beforeEach(function() { server = require('../server/server.js'); @@ -26,17 +33,22 @@ describe('Order routes', function() { server.close(); }); - it('Order create one', function(done) { + + + //Testing if an order was created. + it('Order Create', function(done) { request(server) .put('/order') .set('Accept', 'application/json') .send(testOrderData) .expect('Content-Type', /json/) .expect(function(res) { - if(res.body.recipient.name !== testOrderData.recipient.name) throw new Error('Order data did not create properly: Recipients name doesnt match!'); - orderData = res.body; - console.log(res.body.recipient.name); + if(res.body.recipient.name !== testOrderData.recipient.name) + throw new Error('Order was not properly created.'); + testOrder = res.body; }) - .expect(200, done) + .expect(200, done); }); -}); + + +}) From d29a6f83328ebda2dd0c243eb3362b201833a92a Mon Sep 17 00:00:00 2001 From: therealaldo Date: Fri, 26 Feb 2016 18:12:35 -0500 Subject: [PATCH 56/93] changed route --- package.json | 3 +-- routes/order.js | 6 +++++- test/__dbconnection.js | 26 +++++++++++++++++--------- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 7f024e3..1066d26 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,7 @@ "main": "server.js", "scripts": { "test": "echo \"Tests not setup yet\" && exit 0", - "start": "node server/server.js", - "postinstall": "npm i -g mocha nodemon" + "start": "node server/server.js" }, "repository": { "type": "git", diff --git a/routes/order.js b/routes/order.js index e905975..d9b17f5 100644 --- a/routes/order.js +++ b/routes/order.js @@ -48,7 +48,11 @@ router.route('/') if(serverError) { res.status(500).json(serverError); } else{ - res.status(200).json(savedData); + savedData = orders.find(data, function(err) { + res.status(500).json(err); + }, function(foundOrder) { + res.status(200).json(foundOrder); + }); } }); diff --git a/test/__dbconnection.js b/test/__dbconnection.js index 0db0899..1d638e1 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -4,15 +4,23 @@ const faker = require('faker'); describe('Order routes', function() { var server; var testOrderData = { - units: [], - fullName: faker.name.findName(), - streetAddress: faker.address.streetAddress(), - city: faker.address.city(), - state: faker.address.stateAbbr(), - zip: faker.address.zipCode(), - phone: faker.phone.phoneNumberFormat(), - email: faker.internet.email() - } + "units": [ + { + "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + "quantity": 5}, + { + "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', + "quantity": 2}, + ], + + "fullName": "James Dickerson", + "streetAddress": "14250 Cheval Mayfaire", + "city": "Orlando", + "state": "FL", + "zip": "32828", + "phone": "305-710-8220", + "email": "jamesalexanderdickerson@gmail.com" + } }; var orderData; From d5d9b2f676402e2c03f629448d898459cffb0399 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Fri, 26 Feb 2016 19:01:03 -0500 Subject: [PATCH 57/93] files from google hangout --- models/orders.js | 2 +- routes/order.js | 13 +++++++------ test/__dbconnection.js | 5 ++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/models/orders.js b/models/orders.js index 78c0a0b..2ef8b5e 100644 --- a/models/orders.js +++ b/models/orders.js @@ -25,7 +25,7 @@ module.exports = function() { function _find(data, err, success) { let payload = data; - db.orders.find({where: {orderId: payload.uuid}}) + db.orders.find({where: {uuid: payload.uuid}}) .then(success) .catch(err); } diff --git a/routes/order.js b/routes/order.js index 77ebd89..c3e155e 100644 --- a/routes/order.js +++ b/routes/order.js @@ -23,8 +23,6 @@ router.route('/') let successMsg; let serverError; - console.log("DATA IN =======", data); - data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); @@ -36,18 +34,20 @@ router.route('/') }, function(order) { savedData = order.dataValues; savedData.units = []; - console.log('THE ORDER.CREATE SUCCESS ==========', order); orderedItems.create(data, function(err) { serverError = true; - }, function(completedOrder) { serverError = false; savedData.units.push(completedOrder.dataValues); + var foundData = orders.find(data, function(err) { + res.status(500).json(err); + }, function(foundOrder) { + res.status(200).json(foundOrder); + }) }); }); - console.log("DATA OUT =======", savedData); - +/* if(serverError) { res.status(500).json(serverError); } else{ @@ -57,6 +57,7 @@ router.route('/') res.status(200).json(foundOrder); }); } +*/ }); diff --git a/test/__dbconnection.js b/test/__dbconnection.js index 45b4e80..9c8b0cd 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -4,7 +4,6 @@ const faker = require('faker'); describe('Order Routes', function() { var server; var testOrderData = { - "units": [ { "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', @@ -13,7 +12,6 @@ describe('Order Routes', function() { "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', "quantity": 2} ], - "fullName": "James Dickerson", "streetAddress": "14250 Cheval Mayfaire", "city": "Orlando", @@ -43,7 +41,8 @@ describe('Order Routes', function() { .send(testOrderData) .expect('Content-Type', /json/) .expect(function(res) { - if(res.body.recipient.name !== testOrderData.recipient.name) + console.log('RESPONSE =========', res); + if(res.body.fullName !== testOrderData.fullName) throw new Error('Order was not properly created.'); testOrder = res.body; }) From 1d78bd1311537cfba19907e28845514965e1b662 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Fri, 26 Feb 2016 22:07:55 -0500 Subject: [PATCH 58/93] trying to fix route --- routes/order.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/routes/order.js b/routes/order.js index c3e155e..5e43557 100644 --- a/routes/order.js +++ b/routes/order.js @@ -30,14 +30,14 @@ router.route('/') orders.create(data, function(err) { - serverError = true; + // serverError = true; }, function(order) { savedData = order.dataValues; savedData.units = []; orderedItems.create(data, function(err) { - serverError = true; + // serverError = true; }, function(completedOrder) { - serverError = false; + // serverError = false; savedData.units.push(completedOrder.dataValues); var foundData = orders.find(data, function(err) { res.status(500).json(err); From ba3a610f5f2ab9f311172281e76e15d8f9be0221 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Fri, 26 Feb 2016 22:12:26 -0500 Subject: [PATCH 59/93] Added findall to orders route --- routes/order.js | 12 +++++++----- test/__dbconnection.js | 31 ++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/routes/order.js b/routes/order.js index c3e155e..1269e95 100644 --- a/routes/order.js +++ b/routes/order.js @@ -3,8 +3,6 @@ module.exports = function(express) { // Config const router = express.Router(); -// const Sequelize = require('sequelize'); -// const db = require('../server/db.js'); let orderedItems = require('../models/ordered-items.js'); let orders = require('../models/orders.js'); @@ -15,12 +13,16 @@ const timestamp = require('../server/timestamp.js'); // Display router.route('/') .get(function(req, res) { - res.send('Making PUT request to /order'); + let data = req.body; + orders.findAll(function(err) { + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); }) .put(function(req, res) { let data = req.body; - let successMsg; let serverError; data.uuid = uuid_generator.generateUUID(); @@ -40,7 +42,7 @@ router.route('/') serverError = false; savedData.units.push(completedOrder.dataValues); var foundData = orders.find(data, function(err) { - res.status(500).json(err); + res.status(500); }, function(foundOrder) { res.status(200).json(foundOrder); }) diff --git a/test/__dbconnection.js b/test/__dbconnection.js index 9c8b0cd..3094eef 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -41,7 +41,6 @@ describe('Order Routes', function() { .send(testOrderData) .expect('Content-Type', /json/) .expect(function(res) { - console.log('RESPONSE =========', res); if(res.body.fullName !== testOrderData.fullName) throw new Error('Order was not properly created.'); testOrder = res.body; @@ -49,5 +48,35 @@ describe('Order Routes', function() { .expect(200, done); }); + it('Order Read One', function(done) { + request(server) + .get('/order') + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(testOrder.uuid != res.body.uuid) throw new Error('The UUID returned does not match.'); + }) + .expect(200, done); + }); + + it('Order Read All', function(done) { + request(server) + .get('/order') + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(res.body.length < 1) throw new Error('There are no entries in the database.'); + }) + .expect(200, done); + }); + it('Order Update', function(done) { + request(server) + .get('/order') + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(testOrder.fullName !== res.body.fullName) throw new Error('') + }) + }) }) From 5beb4398ccd7fd4e8d5756fe313e72c090a27387 Mon Sep 17 00:00:00 2001 From: Chris Fortin Date: Fri, 26 Feb 2016 22:15:53 -0500 Subject: [PATCH 60/93] Fixed models to find where data = payload --- models/inventory.js | 8 +++----- models/ordered-items.js | 7 +++---- models/orders.js | 8 +++----- models/units.js | 8 +++----- 4 files changed, 12 insertions(+), 19 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index c896390..d4e42b7 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -1,12 +1,10 @@ 'use strict'; module.exports = function() { const db = require('../server/db.js')(); - // const Sequelize = require('sequelize'); const sequelize = db.connection; function _create(data, err, success) { let payload = data; - db.inventory.create({ sku: payload.sku, location: payload.location @@ -17,7 +15,7 @@ module.exports = function() { function _update(data, err, success) { let payload = data; - db.inventory.find({where: {sku: payload.sku}}) + db.inventory.find({where: payload}) .then(function(matchedOrder) { matchedOrder.updateAttributes(data) .then(success) @@ -28,7 +26,7 @@ module.exports = function() { function _find(data, err, success) { let payload = data; - db.inventory.find({where: {sku: payload.sku}}) + db.inventory.find({where: payload}) .then(success) .catch(err); } @@ -41,7 +39,7 @@ module.exports = function() { function _destroy(data, err, success) { let payload = data; - db.inventory.destroy({where: {sku: payload.sku}}) + db.inventory.destroy({where: payload}) .then(success) .catch(err); } diff --git a/models/ordered-items.js b/models/ordered-items.js index 98c758b..8169cb6 100644 --- a/models/ordered-items.js +++ b/models/ordered-items.js @@ -5,7 +5,6 @@ module.exports = function() { function _create(data, err, success) { let payload = data; - for(let i = 0; i < payload.units.length; i++) { data.units[i].uuid = data.uuid; db.orderedItems.create(data.units[i]) @@ -16,7 +15,7 @@ module.exports = function() { function _update(data, err, success) { let payload = data; - db.orderedItems.find({where: {orderId: payload.uuid}}) + db.orderedItems.find({where: payload}) .then(function(matchedOrder) { matchedOrder.updateAttributes(data) .then(success) @@ -27,7 +26,7 @@ module.exports = function() { function _find(data, err, success) { let payload = data; - db.orderedItems.find({where: {orderId: payload.uuid}}) + db.orderedItems.find({where: payload}) .then(success) .catch(err); } @@ -40,7 +39,7 @@ module.exports = function() { function _destroy(data, err, success) { let payload = data; - db.orderedItems.destroy({where: {orderId: payload.uuid}}) + db.orderedItems.destroy({where: payload}) .then(success) .catch(err); } diff --git a/models/orders.js b/models/orders.js index 2ef8b5e..3965b4c 100644 --- a/models/orders.js +++ b/models/orders.js @@ -1,12 +1,10 @@ 'use strict'; module.exports = function() { const db = require('../server/db.js'); - // const Sequelize = require('sequelize'); const sequelize = db.connection; function _create(data, err, success) { let payload = data; - db.orders.create(data) .then(success) .catch(err); @@ -14,7 +12,7 @@ module.exports = function() { function _update(data, err, success) { let payload = data; - db.orders.find({where: {orderId: payload.uuid}}) + db.orders.find({where: payload}) .then(function(matchedOrder) { matchedOrder.updateAttributes(data) .then(success) @@ -25,7 +23,7 @@ module.exports = function() { function _find(data, err, success) { let payload = data; - db.orders.find({where: {uuid: payload.uuid}}) + db.orders.find({where: payload}) .then(success) .catch(err); } @@ -38,7 +36,7 @@ module.exports = function() { function _destroy(data, err, success) { let payload = data; - db.order.destroy({where: {orderId: payload.uuid}}) + db.order.destroy({where: payload}) .then(success) .catch(err); } diff --git a/models/units.js b/models/units.js index aba9f8b..fab6a6a 100644 --- a/models/units.js +++ b/models/units.js @@ -1,12 +1,10 @@ 'use strict'; module.exports = function() { const db = require('../server/db.js')(); - // const Sequelize = require('sequelize'); const sequelize = db.connection; function _create(data, err, success) { let payload = data; - db.units.create({ sku: payload.sku, name: payload.name, @@ -18,7 +16,7 @@ module.exports = function() { function _update(data, err, success) { let payload = data; - db.units.find({where: {sku: payload.sku}}) + db.units.find({where: payload}) .then(function(matchedOrder) { matchedOrder.updateAttributes(data) .then(success) @@ -29,7 +27,7 @@ module.exports = function() { function _find(data, err, success) { let payload = data; - db.units.find({where: {sku: payload.sku}}) + db.units.find({where: payload}) .then(success) .catch(err) } @@ -43,7 +41,7 @@ module.exports = function() { function _destroy(data, err, success) { let payload = data; - db.units.destroy({where: {orderId: payload.sku}}) + db.units.destroy({where: payload}) .then(success) .catch(err); } From 95c479f8519769c16ee43e8a9f3f01ecfa3ea673 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Sat, 27 Feb 2016 00:53:04 -0500 Subject: [PATCH 61/93] Unit tested all of order route CRUD --- models/orders.js | 2 +- routes/order.js | 59 +++++++++++++++++++++++++++++++++++++----- test/__dbconnection.js | 23 ++++++++++++---- 3 files changed, 71 insertions(+), 13 deletions(-) diff --git a/models/orders.js b/models/orders.js index 2ef8b5e..f824f20 100644 --- a/models/orders.js +++ b/models/orders.js @@ -38,7 +38,7 @@ module.exports = function() { function _destroy(data, err, success) { let payload = data; - db.order.destroy({where: {orderId: payload.uuid}}) + db.orders.destroy({where: {uuid: payload.uuid}}) .then(success) .catch(err); } diff --git a/routes/order.js b/routes/order.js index c65044e..aa423b4 100644 --- a/routes/order.js +++ b/routes/order.js @@ -12,15 +12,20 @@ const timestamp = require('../server/timestamp.js'); // Display router.route('/') + + //Get request to access all records in database. .get(function(req, res) { let data = req.body; + orders.findAll(function(err) { + //Encoutered an error. res.status(500).json(err); }, function(data) { res.status(200).json(data); }); }) + //Put request to create a record in database. .put(function(req, res) { let data = req.body; let serverError; @@ -30,7 +35,6 @@ router.route('/') var savedData = {}; - orders.create(data, function(err) { // serverError = true; }, function(order) { @@ -42,12 +46,59 @@ router.route('/') // serverError = false; savedData.units.push(completedOrder.dataValues); var foundData = orders.find(data, function(err) { + //Encoutered an error. res.status(500); }, function(foundOrder) { res.status(200).json(foundOrder); }) }); }); + }); + +router.route('/:uuid') + + //Put request to update a record in the database. + .put(function(req, res) { + req.body.uuid = req.params.uuid; + orders.update(req.body, function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); + }) + + //Get request to read one record from the database. + .get(function(req, res) { + req.body.uuid = req.params.uuid; + orders.find(req.body, function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); + }) + + //Delete reuqest to remove one record from database. + .delete(function(req, res) { + req.body.uuid = req.params.uuid; + orders.destroy(req.body, function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json({success: data}); + }) + }) + +return router; + +}; + + + + + + /* if(serverError) { @@ -60,9 +111,3 @@ router.route('/') }); } */ - - }); - -return router; - -}; diff --git a/test/__dbconnection.js b/test/__dbconnection.js index 3094eef..9ca577c 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -50,11 +50,11 @@ describe('Order Routes', function() { it('Order Read One', function(done) { request(server) - .get('/order') + .get('/order/' + testOrder.uuid.toString()) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { - if(testOrder.uuid != res.body.uuid) throw new Error('The UUID returned does not match.'); + if(testOrder.uuid !== res.body.uuid) throw new Error('The UUID returned does not match.'); }) .expect(200, done); }); @@ -72,11 +72,24 @@ describe('Order Routes', function() { it('Order Update', function(done) { request(server) - .get('/order') + .get('/order/' + testOrder.uuid.toString()) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(testOrder.fullName !== res.body.fullName) throw new Error('Did not update record'); + }) + .expect(200, done); + }); + + it('Order Destroy', function(done) { + request(server) + .delete('/order/' + testOrder.uuid.toString()) .set('Accept', 'application/json') + .send({force: true}) .expect('Content-Type', /json/) .expect(function(res) { - if(testOrder.fullName !== res.body.fullName) throw new Error('') + if(!res.body.success) throw new Error ('Destroy failed.') }) - }) + .expect(200, done); + }); }) From a9110651ee8aaa11a8609d8d265bc309c3326388 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Sat, 27 Feb 2016 00:54:28 -0500 Subject: [PATCH 62/93] Unit tested routes CRUD is all tested. --- models/orders.js | 1 - 1 file changed, 1 deletion(-) diff --git a/models/orders.js b/models/orders.js index f824f20..9785e9f 100644 --- a/models/orders.js +++ b/models/orders.js @@ -1,7 +1,6 @@ 'use strict'; module.exports = function() { const db = require('../server/db.js'); - // const Sequelize = require('sequelize'); const sequelize = db.connection; function _create(data, err, success) { From e7019306aad47056b04e506f7daf720087897247 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 06:53:34 -0500 Subject: [PATCH 63/93] added async to packages also commented out the put request to work on enhanced version --- package.json | 1 + routes/order.js | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1066d26..4b9eabb 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "homepage": "https://github.com/reactivepixel/Gravity#readme", "dependencies": { + "async": "1.5.2", "body-parser": "1.15.0", "express": "4.13.4", "mysql": "2.10.2", diff --git a/routes/order.js b/routes/order.js index aa423b4..cad40fb 100644 --- a/routes/order.js +++ b/routes/order.js @@ -35,6 +35,9 @@ router.route('/') var savedData = {}; + orders.create(data) + +/* orders.create(data, function(err) { // serverError = true; }, function(order) { @@ -51,10 +54,10 @@ router.route('/') }, function(foundOrder) { res.status(200).json(foundOrder); }) - }); - }); - }); - + }); // End of orderedItems.create + }); // End of orders.create + }); // End of PUT route +*/ router.route('/:uuid') //Put request to update a record in the database. From ea96f1d8a719cef0c81570a6ea72aa9f7594e94e Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 10:59:55 -0500 Subject: [PATCH 64/93] Completed PUT route using async.waterfall Added async.waterfall method to handle the creation of orders and orderedItems Used .waterfall() to handle the final response with the newly created data from the db added comments explaining thought process and methods used along with reasoning for using them --- models/ordered-items.js | 9 ++- routes/order.js | 123 +++++++++++++++++++++++++--------------- server/db.js | 2 +- 3 files changed, 83 insertions(+), 51 deletions(-) diff --git a/models/ordered-items.js b/models/ordered-items.js index 8169cb6..220e17e 100644 --- a/models/ordered-items.js +++ b/models/ordered-items.js @@ -4,8 +4,7 @@ module.exports = function() { const sequelize = db.connection; function _create(data, err, success) { - let payload = data; - for(let i = 0; i < payload.units.length; i++) { + for(let i = 0; i < data.units.length; i++) { data.units[i].uuid = data.uuid; db.orderedItems.create(data.units[i]) .then(success) @@ -15,7 +14,7 @@ module.exports = function() { function _update(data, err, success) { let payload = data; - db.orderedItems.find({where: payload}) + db.orderedItems.find({where: {uuid: payload.uuid}}) .then(function(matchedOrder) { matchedOrder.updateAttributes(data) .then(success) @@ -26,7 +25,7 @@ module.exports = function() { function _find(data, err, success) { let payload = data; - db.orderedItems.find({where: payload}) + db.orderedItems.findAll({where: {uuid: payload.uuid}}) .then(success) .catch(err); } @@ -39,7 +38,7 @@ module.exports = function() { function _destroy(data, err, success) { let payload = data; - db.orderedItems.destroy({where: payload}) + db.orderedItems.destroy({where: {uuid: payload.uuid}}) .then(success) .catch(err); } diff --git a/routes/order.js b/routes/order.js index cad40fb..19aaf3f 100644 --- a/routes/order.js +++ b/routes/order.js @@ -3,8 +3,10 @@ module.exports = function(express) { // Config const router = express.Router(); +const async = require('async'); let orderedItems = require('../models/ordered-items.js'); let orders = require('../models/orders.js'); +const db = require('../server/db.js'); // Include uuid generator and timestamp generator const uuid_generator = require('../server/uuid-generator.js'); @@ -15,8 +17,6 @@ router.route('/') //Get request to access all records in database. .get(function(req, res) { - let data = req.body; - orders.findAll(function(err) { //Encoutered an error. res.status(500).json(err); @@ -27,37 +27,88 @@ router.route('/') //Put request to create a record in database. .put(function(req, res) { + // payload data is the request body let data = req.body; - let serverError; + // generating uuid and timestamp and adding them to the payload data data.uuid = uuid_generator.generateUUID(); data.timestamp = timestamp.makeTimestamp(); + // declaring variable for the retrieved data from the db var savedData = {}; - - orders.create(data) - -/* - orders.create(data, function(err) { - // serverError = true; - }, function(order) { - savedData = order.dataValues; - savedData.units = []; - orderedItems.create(data, function(err) { - // serverError = true; - }, function(completedOrder) { - // serverError = false; - savedData.units.push(completedOrder.dataValues); - var foundData = orders.find(data, function(err) { - //Encoutered an error. - res.status(500); - }, function(foundOrder) { - res.status(200).json(foundOrder); + savedData.units = []; + + /* + * + * Async.waterfall() Quick Tip: + * + * The functions run in sequential order since some fn() are dependant on other fn() + * + * The .waterfall() method passes the result of the fn() in the callback(null, result) + * There can be more than one result added inside of the callback + * ex: callback(null, result1, result2, result3...); + * + * callback is the argument for every fn() except for the final fn() or if you don't + * need to pass on any data from the previous fn() + * + * The results are only immediately available in the next fn() + * + * TODO: Find a better way to handle the errors in the async.waterfall() + * + */ + async.waterfall([ + function(callback) { + // Create the order passing through the payload data + orders.create(data, function(e) { + res.status(500).json({error: e}); + }, function(createdOrder) { + // pass the createdOrder to the next fn() to be able to access the uuid + callback(null, createdOrder); }) - }); // End of orderedItems.create - }); // End of orders.create - }); // End of PUT route -*/ + }, + function(createdOrder, callback) { + // Find the newly created order passing through the createdOrder from the previous fn() + orders.find(createdOrder, function(e) { + res.status(500).json({error: e}); + }, function(foundOrder) { + // pass the foundOrder to the next fn() to still be able to access the uuid later on + callback(null, foundOrder); + }); + }, + function(foundOrder, callback) { + // Create the orderedItems by passing through the payload data + orderedItems.create(data, function(e) { + res.status(500).json({error: e}); + }, function(createdOrderedItem) { + // pass the foundOrder to the next fn() to construct the final object + callback(null, foundOrder); + }); + }, + function(foundOrder, callback) { + // Find the orderedItems passing through the foundOrder to find the matching orderedItems + orderedItems.find(foundOrder, function(e) { + res.status(500).json({error: e}); + }, function(foundOrderedItem) { + // Construct the final json object for the response + savedData = foundOrder.dataValues; + savedData.units = foundOrderedItem; + // pass the final json object to the final fn() handling the error / response + callback(null, savedData); + }); + } + ], + function(err, savedData) { + // Display the error if there is one, otherwise, show the response data from the db + if(err) { + res.status(500).json({error: err}); + } else{ + res.status(200).json(savedData); + } + }); + + }); + + router.route('/:uuid') //Put request to update a record in the database. @@ -95,22 +146,4 @@ router.route('/:uuid') return router; -}; - - - - - - - -/* - if(serverError) { - res.status(500).json(serverError); - } else{ - savedData = orders.find(data, function(err) { - res.status(500).json(err); - }, function(foundOrder) { - res.status(200).json(foundOrder); - }); - } -*/ +} diff --git a/server/db.js b/server/db.js index 764de2e..8684a4d 100644 --- a/server/db.js +++ b/server/db.js @@ -84,7 +84,7 @@ module.exports = function() { }); - _orders.hasMany(_orderedItems, {foreignKey: 'uuid'}) + _orders.hasMany(_orderedItems, {foreignKey: 'uuid'}); // Syncs newly created tables and data inside the tables _sequelize.sync(); From fa90d4b27918cb9b62c9e4d93b6e18a422997f96 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 11:05:13 -0500 Subject: [PATCH 65/93] Enhanced comments added documentation link for async module --- routes/order.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/routes/order.js b/routes/order.js index 19aaf3f..d57b265 100644 --- a/routes/order.js +++ b/routes/order.js @@ -53,6 +53,8 @@ router.route('/') * * The results are only immediately available in the next fn() * + * More documentation can be found here: https://github.com/caolan/async + * * TODO: Find a better way to handle the errors in the async.waterfall() * */ From 5a3a184c877179fe1580a3155c37304dfe3821df Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 27 Feb 2016 17:46:51 -0500 Subject: [PATCH 66/93] Added inventory route --- routes/inventory.js | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 routes/inventory.js diff --git a/routes/inventory.js b/routes/inventory.js new file mode 100644 index 0000000..b4a9133 --- /dev/null +++ b/routes/inventory.js @@ -0,0 +1,48 @@ +'use strict'; +module.exports = function(express) { + const router = express.Router(); + let inventory = require('../models/inventory.js'); + const db = require('../server/db.js'); + + const timestamp = require('../server/timestamp.js'); + + router.route('/') + + //Get request to access all records in database. + .get(function(req, res) { + inventory.findAll(function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); + }) + + //Put request to create a record in database. + .put(function(req, res) { + // payload data is the request body + let data = req.body; + + // generating timestamp and adding it to the payload data + data.timestamp = timestamp.makeTimestamp(); + + function(callback) { + // Create the inventory passing through the payload data + inventory.create(data, function(e) { + res.status(500).json({error: e}); + }, function(createdInventory) { + // pass the createdOrder to the next fn() to be able to access the uuid + callback(null, createdInventory); + }) + }, + function(createdInventory, callback) { + // Find the newly created inventory passing through the createdInventory from the previous fn() + orders.find(createdInventory, function(e) { + res.status(500).json({error: e}); + }, function(foundInventory) { + // pass the foundInventory to the next fn() to still be able to access the uuid later on + callback(null, foundInventory); + }); + }, + }) +} \ No newline at end of file From 1cb9d190fe670efc6250a61791e5a3f412ac5a1b Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 27 Feb 2016 18:16:49 -0500 Subject: [PATCH 67/93] fixed inventory model and added inventory route in server.js --- models/inventory.js | 2 +- routes/inventory.js | 1 + server/server.js | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/models/inventory.js b/models/inventory.js index d4e42b7..ecc441c 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -1,6 +1,6 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js')(); + const db = require('../server/db.js'); const sequelize = db.connection; function _create(data, err, success) { diff --git a/routes/inventory.js b/routes/inventory.js index b4a9133..72c16bb 100644 --- a/routes/inventory.js +++ b/routes/inventory.js @@ -45,4 +45,5 @@ module.exports = function(express) { }); }, }) + return router; } \ No newline at end of file diff --git a/server/server.js b/server/server.js index 71c7156..0585285 100644 --- a/server/server.js +++ b/server/server.js @@ -13,6 +13,7 @@ app.use(body_parser.json()); // Routes app.use('/', require('../routes/home.js')(express)); app.use('/order', require('../routes/order.js')(express)); +app.use('/inventory', require('../routes/inventory.js')(express)); // Start server var server = app.listen(port, function() { From ee6a364dd9baaac512dfde7590a5af87da9bfd75 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Sat, 27 Feb 2016 18:22:48 -0500 Subject: [PATCH 68/93] added testing file for ordered items --- test/__db-ordered-items.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/__db-ordered-items.js diff --git a/test/__db-ordered-items.js b/test/__db-ordered-items.js new file mode 100644 index 0000000..e69de29 From c9ec2284cfc87271a409860c15b77742697a14f0 Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 27 Feb 2016 19:24:53 -0500 Subject: [PATCH 69/93] fixed syntax error on inventory route --- routes/inventory.js | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/routes/inventory.js b/routes/inventory.js index 72c16bb..8d5fdc9 100644 --- a/routes/inventory.js +++ b/routes/inventory.js @@ -1,6 +1,7 @@ 'use strict'; module.exports = function(express) { const router = express.Router(); + const async = require('async'); let inventory = require('../models/inventory.js'); const db = require('../server/db.js'); @@ -26,8 +27,11 @@ module.exports = function(express) { // generating timestamp and adding it to the payload data data.timestamp = timestamp.makeTimestamp(); - function(callback) { - // Create the inventory passing through the payload data + var savedData = {}; + + async.waterfall([ + function(callback) { + // Create the inventory passing through the payload data inventory.create(data, function(e) { res.status(500).json({error: e}); }, function(createdInventory) { @@ -37,13 +41,25 @@ module.exports = function(express) { }, function(createdInventory, callback) { // Find the newly created inventory passing through the createdInventory from the previous fn() - orders.find(createdInventory, function(e) { + inventory.find(createdInventory, function(e) { res.status(500).json({error: e}); }, function(foundInventory) { - // pass the foundInventory to the next fn() to still be able to access the uuid later on + // Construct the final json object for the response + savedData = foundInventory.dataValues; + // pass the final json object to the final fn() handling the error / response callback(null, foundInventory); }); - }, + } + ], + function(err, savedData) { + // Display the error if there is one, otherwise, show the response data from the db + if(err) { + res.status(500).json({error: err}); + } else{ + res.status(200).json(savedData); + } + }) }) + return router; } \ No newline at end of file From 68fad907e390fcfd92f3567e83957b4e3198b487 Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 27 Feb 2016 20:05:46 -0500 Subject: [PATCH 70/93] added units route and fixed units model --- models/units.js | 6 ++--- routes/unit.js | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ server/server.js | 1 + 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 routes/unit.js diff --git a/models/units.js b/models/units.js index fab6a6a..f34f60d 100644 --- a/models/units.js +++ b/models/units.js @@ -1,6 +1,6 @@ 'use strict'; module.exports = function() { - const db = require('../server/db.js')(); + const db = require('../server/db.js'); const sequelize = db.connection; function _create(data, err, success) { @@ -32,7 +32,7 @@ module.exports = function() { .catch(err) } - function _findAll(err, success) { + function _findAll(data, err, success) { let payload = data; db.units.findAll() .then(success) @@ -54,4 +54,4 @@ module.exports = function() { destroy: _destroy } -} +}(); diff --git a/routes/unit.js b/routes/unit.js new file mode 100644 index 0000000..4a131cb --- /dev/null +++ b/routes/unit.js @@ -0,0 +1,65 @@ +'use strict'; +module.exports = function(express) { + const router = express.Router(); + const async = require('async'); + let units = require('../models/units.js'); + const db = require('../server/db.js'); + + const timestamp = require('../server/timestamp.js'); + + router.route('/') + + //Get request to access all records in database. + .get(function(req, res) { + units.findAll(function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); + }) + + //Put request to create a record in database. + .put(function(req, res) { + // payload data is the request body + let data = req.body; + + // generating timestamp and adding it to the payload data + data.timestamp = timestamp.makeTimestamp(); + + var savedData = {}; + + async.waterfall([ + function(callback) { + // Create the unit passing through the payload data + units.create(data, function(e) { + res.status(500).json({error: e}); + }, function(createdUnit) { + // pass the createdUnit to the next fn() + callback(null, createdUnit); + }) + }, + function(createdUnit, callback) { + // Find the newly created unit passing through the createdUnit from the previous fn() + units.find(createdUnit, function(e) { + res.status(500).json({error: e}); + }, function(foundUnit) { + // Construct the final json object for the response + savedData = foundUnit.dataValues; + // pass the final json object to the final fn() handling the error / response + callback(null, foundUnit); + }); + } + ], + function(err, savedData) { + // Display the error if there is one, otherwise, show the response data from the db + if(err) { + res.status(500).json({error: err}); + } else{ + res.status(200).json(savedData); + } + }) + }) + + return router; +} \ No newline at end of file diff --git a/server/server.js b/server/server.js index 0585285..c12e772 100644 --- a/server/server.js +++ b/server/server.js @@ -14,6 +14,7 @@ app.use(body_parser.json()); app.use('/', require('../routes/home.js')(express)); app.use('/order', require('../routes/order.js')(express)); app.use('/inventory', require('../routes/inventory.js')(express)); +app.use('/units', require('../routes/unit.js')(express)); // Start server var server = app.listen(port, function() { From 2bf6b10da33c344a282ca36929fdc070946867b2 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Sat, 27 Feb 2016 22:04:51 -0500 Subject: [PATCH 71/93] Working on orderedItems route and unit testing --- routes/ordered-items.js | 42 +++++++++++++++++++++++ server/server.js | 1 + test/__db-ordered-items.js | 70 ++++++++++++++++++++++++++++++++++++++ test/__dbconnection.js | 1 - 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 routes/ordered-items.js diff --git a/routes/ordered-items.js b/routes/ordered-items.js new file mode 100644 index 0000000..7aa1ffd --- /dev/null +++ b/routes/ordered-items.js @@ -0,0 +1,42 @@ +'use strict' +module.exports = function(express) { + const router = express.Router(); + let itemsOrdered = require('../models/ordered-items.js'); + const db = require('../server/db.js'); + + router.route('/') + .get(function(req, res) { + orderedItems.findAll(function(err) { + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); + }) + + router.route('/:uuid') + .put(function(req, res) { + req.body.uuid = req.params.uuid; + orderedItems.find(req.body, funciton(err) { + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }) + }) + .delete(funciton(req, res) { + req.body.uuid = req.params.uuid; + orderedItems.destroy(req.body, function(err) { + res.status(500).json(err); + }, function(data) { + res.status(200).json({success: data}) + }) + }) + .put(function(req, res) { + req.body.uuid = req.params.uuid; + orderedItems.update(req.body, function(err) { + res.status(500).json(err); + }, function(data) { + res.status(200).json(data) + }) + }) + return router; +} diff --git a/server/server.js b/server/server.js index 0585285..20f7d23 100644 --- a/server/server.js +++ b/server/server.js @@ -14,6 +14,7 @@ app.use(body_parser.json()); app.use('/', require('../routes/home.js')(express)); app.use('/order', require('../routes/order.js')(express)); app.use('/inventory', require('../routes/inventory.js')(express)); +app.use('/orderedItems', require('../routes/ordered-items.js')(express)); // Start server var server = app.listen(port, function() { diff --git a/test/__db-ordered-items.js b/test/__db-ordered-items.js index e69de29..c8eb32d 100644 --- a/test/__db-ordered-items.js +++ b/test/__db-ordered-items.js @@ -0,0 +1,70 @@ +const request = require('supertest'); + +describe('OrderItem Route', function() { + var server; + var testOrderItemsData = { + "units": [ + { + "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', + "quantity": 5}, + { + "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', + "quantity": 2} + ] + }; + + var testOrderItems; + + beforeEach(function() { + server = require('../server/server.js'); + }); + + afterEach(function() { + server.close(); + }); + + it('OrderItem Read One', function(done) { + request(server) + .get('/orderedItems/' + testOrderItems.uuid.toString()) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(testOrderItems.uuid !== res.body.uuid) throw new Error('The UUID returned does not match.'); + }) + .expect(200, done); + }); + + it('OrderItem Read All', function(done) { + request(server) + .get('/orderedItems') + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(res.body.length < 1) throw new Error('There are no entries in the database.'); + }) + .expect(200, done); + }); + + it('OrderItem Update', function(done) { + request(server) + .get('/orderedItems/' + testOrderItems.uuid.toString()) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(testOrderItems.fullName !== res.body.fullName) throw new Error('Did not update record'); + }) + .expect(200, done); + }); + + it('OrderItem Destroy', function(done) { + request(server) + .delete('/orderedItems/' + testOrderItems.uuid.toString()) + .set('Accept', 'application/json') + .send({force: true}) + .expect('Content-Type', /json/) + .expect(function(res) { + if(!res.body.success) throw new Error ('Destroy failed.') + }) + .expect(200, done); + }); +}) diff --git a/test/__dbconnection.js b/test/__dbconnection.js index 9ca577c..c0a6976 100644 --- a/test/__dbconnection.js +++ b/test/__dbconnection.js @@ -1,5 +1,4 @@ const request = require('supertest'); -const faker = require('faker'); describe('Order Routes', function() { var server; From 2cad35816d5a14d7e26fec66921b9fdac5b48be6 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 22:10:10 -0500 Subject: [PATCH 72/93] Modified the variables which were being saved SavedData was created in the inventory and units put request but was being left behind since it wasn't in one of the callbacks --- routes/inventory.js | 18 +++++++++--------- routes/unit.js | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/routes/inventory.js b/routes/inventory.js index 8d5fdc9..0e54f18 100644 --- a/routes/inventory.js +++ b/routes/inventory.js @@ -4,9 +4,9 @@ module.exports = function(express) { const async = require('async'); let inventory = require('../models/inventory.js'); const db = require('../server/db.js'); - + const timestamp = require('../server/timestamp.js'); - + router.route('/') //Get request to access all records in database. @@ -18,17 +18,17 @@ module.exports = function(express) { res.status(200).json(data); }); }) - + //Put request to create a record in database. .put(function(req, res) { // payload data is the request body let data = req.body; - + // generating timestamp and adding it to the payload data data.timestamp = timestamp.makeTimestamp(); - + var savedData = {}; - + async.waterfall([ function(callback) { // Create the inventory passing through the payload data @@ -47,7 +47,7 @@ module.exports = function(express) { // Construct the final json object for the response savedData = foundInventory.dataValues; // pass the final json object to the final fn() handling the error / response - callback(null, foundInventory); + callback(null, savedData); }); } ], @@ -60,6 +60,6 @@ module.exports = function(express) { } }) }) - + return router; -} \ No newline at end of file +} diff --git a/routes/unit.js b/routes/unit.js index 4a131cb..3560e67 100644 --- a/routes/unit.js +++ b/routes/unit.js @@ -4,9 +4,9 @@ module.exports = function(express) { const async = require('async'); let units = require('../models/units.js'); const db = require('../server/db.js'); - + const timestamp = require('../server/timestamp.js'); - + router.route('/') //Get request to access all records in database. @@ -18,17 +18,17 @@ module.exports = function(express) { res.status(200).json(data); }); }) - + //Put request to create a record in database. .put(function(req, res) { // payload data is the request body let data = req.body; - + // generating timestamp and adding it to the payload data data.timestamp = timestamp.makeTimestamp(); - + var savedData = {}; - + async.waterfall([ function(callback) { // Create the unit passing through the payload data @@ -47,7 +47,7 @@ module.exports = function(express) { // Construct the final json object for the response savedData = foundUnit.dataValues; // pass the final json object to the final fn() handling the error / response - callback(null, foundUnit); + callback(null, savedData); }); } ], @@ -60,6 +60,6 @@ module.exports = function(express) { } }) }) - + return router; -} \ No newline at end of file +} From 0ebcf057c66cfd3025b4434dbae3b6fe27ba35a9 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 22:13:52 -0500 Subject: [PATCH 73/93] fixed syntax errors function was misspelled a couple times and some semi colons were missing --- routes/ordered-items.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/routes/ordered-items.js b/routes/ordered-items.js index 7aa1ffd..47e6a31 100644 --- a/routes/ordered-items.js +++ b/routes/ordered-items.js @@ -16,13 +16,13 @@ module.exports = function(express) { router.route('/:uuid') .put(function(req, res) { req.body.uuid = req.params.uuid; - orderedItems.find(req.body, funciton(err) { + orderedItems.find(req.body, function(err) { res.status(500).json(err); }, function(data) { res.status(200).json(data); - }) + }); }) - .delete(funciton(req, res) { + .delete(function(req, res) { req.body.uuid = req.params.uuid; orderedItems.destroy(req.body, function(err) { res.status(500).json(err); From 5449797ef1070ac9aeabb546c6fe1683ae0b8dd9 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 22:20:55 -0500 Subject: [PATCH 74/93] removed timestamp from units route you don't need the timestamp because there isn't a column for it in the database --- routes/unit.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/routes/unit.js b/routes/unit.js index 3560e67..8f67fcc 100644 --- a/routes/unit.js +++ b/routes/unit.js @@ -5,8 +5,6 @@ module.exports = function(express) { let units = require('../models/units.js'); const db = require('../server/db.js'); - const timestamp = require('../server/timestamp.js'); - router.route('/') //Get request to access all records in database. @@ -24,9 +22,6 @@ module.exports = function(express) { // payload data is the request body let data = req.body; - // generating timestamp and adding it to the payload data - data.timestamp = timestamp.makeTimestamp(); - var savedData = {}; async.waterfall([ From 26d7924724e9908e5f18aaaaf04c1774700c6bc1 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 22:21:46 -0500 Subject: [PATCH 75/93] removed timestamp from inventory route there isn't a column for timestamp for this table in the database --- routes/inventory.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/routes/inventory.js b/routes/inventory.js index 0e54f18..b043fa4 100644 --- a/routes/inventory.js +++ b/routes/inventory.js @@ -5,8 +5,6 @@ module.exports = function(express) { let inventory = require('../models/inventory.js'); const db = require('../server/db.js'); - const timestamp = require('../server/timestamp.js'); - router.route('/') //Get request to access all records in database. @@ -24,9 +22,6 @@ module.exports = function(express) { // payload data is the request body let data = req.body; - // generating timestamp and adding it to the payload data - data.timestamp = timestamp.makeTimestamp(); - var savedData = {}; async.waterfall([ From 8cfd8e9f97583b12862a1f4e2d1aaaeb24af689f Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 22:31:27 -0500 Subject: [PATCH 76/93] added .findAll to models along with cleaning the put routes up using findAll because you want to be able to find all of the items of that kind --- models/inventory.js | 6 +++--- models/units.js | 6 +++--- routes/inventory.js | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index ecc441c..e715734 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -15,7 +15,7 @@ module.exports = function() { function _update(data, err, success) { let payload = data; - db.inventory.find({where: payload}) + db.inventory.findAll({where: {sku: payload.sku}}) .then(function(matchedOrder) { matchedOrder.updateAttributes(data) .then(success) @@ -26,7 +26,7 @@ module.exports = function() { function _find(data, err, success) { let payload = data; - db.inventory.find({where: payload}) + db.inventory.findAll({where: {sku: payload.sku}}) .then(success) .catch(err); } @@ -39,7 +39,7 @@ module.exports = function() { function _destroy(data, err, success) { let payload = data; - db.inventory.destroy({where: payload}) + db.inventory.destroy({where: {sku: payload.sku}}) .then(success) .catch(err); } diff --git a/models/units.js b/models/units.js index f34f60d..8abacc2 100644 --- a/models/units.js +++ b/models/units.js @@ -16,7 +16,7 @@ module.exports = function() { function _update(data, err, success) { let payload = data; - db.units.find({where: payload}) + db.units.findAll({where: {sku: payload.sku}}) .then(function(matchedOrder) { matchedOrder.updateAttributes(data) .then(success) @@ -27,7 +27,7 @@ module.exports = function() { function _find(data, err, success) { let payload = data; - db.units.find({where: payload}) + db.units.findAll({where: {sku: payload.sku}}) .then(success) .catch(err) } @@ -41,7 +41,7 @@ module.exports = function() { function _destroy(data, err, success) { let payload = data; - db.units.destroy({where: payload}) + db.units.destroy({where: {sku: payload.sku}}) .then(success) .catch(err); } diff --git a/routes/inventory.js b/routes/inventory.js index b043fa4..11c4cf3 100644 --- a/routes/inventory.js +++ b/routes/inventory.js @@ -30,9 +30,9 @@ module.exports = function(express) { inventory.create(data, function(e) { res.status(500).json({error: e}); }, function(createdInventory) { - // pass the createdOrder to the next fn() to be able to access the uuid + // pass the createdInventory to the next fn() to be able to access the createdOrder callback(null, createdInventory); - }) + }); }, function(createdInventory, callback) { // Find the newly created inventory passing through the createdInventory from the previous fn() From 6c5fed32e38d43d98ec56a6cf587c52b76fd00a0 Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 27 Feb 2016 22:41:12 -0500 Subject: [PATCH 77/93] fixed units model --- models/units.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/units.js b/models/units.js index 8abacc2..c654edc 100644 --- a/models/units.js +++ b/models/units.js @@ -32,8 +32,7 @@ module.exports = function() { .catch(err) } - function _findAll(data, err, success) { - let payload = data; + function _findAll(err, success) { db.units.findAll() .then(success) .catch(err) From 6c9d9bd69c6e2abb341a4a99120bb6151569c5ce Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 22:45:06 -0500 Subject: [PATCH 78/93] fixed inventory route you have to specify you want to pass through the dataValues from the returned db object --- models/inventory.js | 2 +- routes/inventory.js | 10 +++++----- routes/unit.js | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index e715734..4d8c6b8 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -15,7 +15,7 @@ module.exports = function() { function _update(data, err, success) { let payload = data; - db.inventory.findAll({where: {sku: payload.sku}}) + db.inventory.find({where: {sku: payload.sku}}) .then(function(matchedOrder) { matchedOrder.updateAttributes(data) .then(success) diff --git a/routes/inventory.js b/routes/inventory.js index 11c4cf3..23717b9 100644 --- a/routes/inventory.js +++ b/routes/inventory.js @@ -30,8 +30,8 @@ module.exports = function(express) { inventory.create(data, function(e) { res.status(500).json({error: e}); }, function(createdInventory) { - // pass the createdInventory to the next fn() to be able to access the createdOrder - callback(null, createdInventory); + // pass the createdInventory to the next fn() to be able to access the createdInventory + callback(null, createdInventory.dataValues); }); }, function(createdInventory, callback) { @@ -40,7 +40,7 @@ module.exports = function(express) { res.status(500).json({error: e}); }, function(foundInventory) { // Construct the final json object for the response - savedData = foundInventory.dataValues; + savedData = foundInventory; // pass the final json object to the final fn() handling the error / response callback(null, savedData); }); @@ -53,8 +53,8 @@ module.exports = function(express) { } else{ res.status(200).json(savedData); } - }) - }) + }); + }); return router; } diff --git a/routes/unit.js b/routes/unit.js index 8f67fcc..e5520e5 100644 --- a/routes/unit.js +++ b/routes/unit.js @@ -53,8 +53,8 @@ module.exports = function(express) { } else{ res.status(200).json(savedData); } - }) - }) + }); // End of .waterfall() + }); // End of PUT route return router; } From d55af676f5aa5e0fe43dcd38eed0578eba859828 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 22:56:19 -0500 Subject: [PATCH 79/93] fixed units route modified the units model and the unit route you need to pass through the dataValues instead of the entire response object since there is a bunch of extra stuff you don't need --- models/inventory.js | 5 +---- models/units.js | 6 +----- routes/unit.js | 4 ++-- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/models/inventory.js b/models/inventory.js index 4d8c6b8..a4ca002 100644 --- a/models/inventory.js +++ b/models/inventory.js @@ -5,10 +5,7 @@ module.exports = function() { function _create(data, err, success) { let payload = data; - db.inventory.create({ - sku: payload.sku, - location: payload.location - }) + db.inventory.create(payload) .then(success) .catch(err); } diff --git a/models/units.js b/models/units.js index c654edc..8537625 100644 --- a/models/units.js +++ b/models/units.js @@ -5,11 +5,7 @@ module.exports = function() { function _create(data, err, success) { let payload = data; - db.units.create({ - sku: payload.sku, - name: payload.name, - description: payload.description - }) + db.units.create(payload) .then(success) .catch(err); } diff --git a/routes/unit.js b/routes/unit.js index e5520e5..50630fb 100644 --- a/routes/unit.js +++ b/routes/unit.js @@ -31,7 +31,7 @@ module.exports = function(express) { res.status(500).json({error: e}); }, function(createdUnit) { // pass the createdUnit to the next fn() - callback(null, createdUnit); + callback(null, createdUnit.dataValues); }) }, function(createdUnit, callback) { @@ -40,7 +40,7 @@ module.exports = function(express) { res.status(500).json({error: e}); }, function(foundUnit) { // Construct the final json object for the response - savedData = foundUnit.dataValues; + savedData = foundUnit; // pass the final json object to the final fn() handling the error / response callback(null, savedData); }); From 64bf708f012579e8bba21bbc4c22e36946749878 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Sat, 27 Feb 2016 23:05:41 -0500 Subject: [PATCH 80/93] More unit testing --- routes/ordered-items.js | 22 +++++++++++----------- test/__db-ordered-items.js | 30 ++++++++++++++++-------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/routes/ordered-items.js b/routes/ordered-items.js index 7aa1ffd..22d376e 100644 --- a/routes/ordered-items.js +++ b/routes/ordered-items.js @@ -1,7 +1,7 @@ 'use strict' module.exports = function(express) { const router = express.Router(); - let itemsOrdered = require('../models/ordered-items.js'); + let orderedItems = require('../models/ordered-items.js'); const db = require('../server/db.js'); router.route('/') @@ -12,31 +12,31 @@ module.exports = function(express) { res.status(200).json(data); }); }) - router.route('/:uuid') - .put(function(req, res) { + .get(function(req, res) { req.body.uuid = req.params.uuid; - orderedItems.find(req.body, funciton(err) { + orderedItems.find(req.body, function(err) { res.status(500).json(err); }, function(data) { res.status(200).json(data); - }) + }); }) - .delete(funciton(req, res) { + .delete(function(req, res) { req.body.uuid = req.params.uuid; orderedItems.destroy(req.body, function(err) { res.status(500).json(err); }, function(data) { - res.status(200).json({success: data}) - }) + res.status(200).json({success: data}); + }); }) .put(function(req, res) { req.body.uuid = req.params.uuid; orderedItems.update(req.body, function(err) { res.status(500).json(err); }, function(data) { - res.status(200).json(data) - }) + res.status(200).json(data); + }); }) - return router; + + return router; } diff --git a/test/__db-ordered-items.js b/test/__db-ordered-items.js index c8eb32d..52f31f0 100644 --- a/test/__db-ordered-items.js +++ b/test/__db-ordered-items.js @@ -23,9 +23,22 @@ describe('OrderItem Route', function() { server.close(); }); + it('OrderItem Read All', function(done) { + request(server) + .get('/orderedItems') + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(res.body.length < 1) throw new Error('There are no entries in the database.'); + testOrderItems = res.body; + console.log(testOrderItems); + }) + .expect(200, done); + }); + it('OrderItem Read One', function(done) { request(server) - .get('/orderedItems/' + testOrderItems.uuid.toString()) + .get('/orderedItems/' + testOrderItems.uuid) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { @@ -34,20 +47,9 @@ describe('OrderItem Route', function() { .expect(200, done); }); - it('OrderItem Read All', function(done) { - request(server) - .get('/orderedItems') - .set('Accept', 'application/json') - .expect('Content-Type', /json/) - .expect(function(res) { - if(res.body.length < 1) throw new Error('There are no entries in the database.'); - }) - .expect(200, done); - }); - it('OrderItem Update', function(done) { request(server) - .get('/orderedItems/' + testOrderItems.uuid.toString()) + .get('/orderedItems/' + testOrderItems.uuid) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { @@ -58,7 +60,7 @@ describe('OrderItem Route', function() { it('OrderItem Destroy', function(done) { request(server) - .delete('/orderedItems/' + testOrderItems.uuid.toString()) + .delete('/orderedItems/' + testOrderItems.uuid) .set('Accept', 'application/json') .send({force: true}) .expect('Content-Type', /json/) From d19ab4b88ccdb348656028f3b4e00425f3836fd0 Mon Sep 17 00:00:00 2001 From: Chris Fortin Date: Sat, 27 Feb 2016 23:10:19 -0500 Subject: [PATCH 81/93] Restructured readme file --- readme.md | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/readme.md b/readme.md index 480825b..9456dbf 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ # Gravity -Business backend logic for Sol +Business backend logic for Gravity ## Setting up @@ -14,7 +14,7 @@ $ npm install //Installs the package.json file. ### Installing MySQL & adding .env file -To check to see if you have MySQL installed on your machine. +Check to see if you have MySQL installed on your machine. ``` $ mysql --version ``` @@ -28,8 +28,9 @@ Start MySQL server. ``` $ mysql.server start //Starting MySQL server. $ mysql -u root //Logging in as root. - -//Once logged into MySQL +``` +Once logged into MySQL. +``` mysql> create database gravity; ``` @@ -50,6 +51,18 @@ If MySQL does not work try: $ mysql.server restart ``` +## Server Environments +Here are the links to all the Environments + +# Development +Link to [Development](https://github.com/reactivepixel/Gravity/tree/server_dev). + +# Staging +Link to [Staging](https://github.com/reactivepixel/Gravity/tree/db_create). + +# Production +Link to [Production](https://github.com/reactivepixel/Gravity/tree/master) + ## API Documentation ### Order @@ -57,7 +70,7 @@ $ mysql.server restart | Endpoint | Method | Development Status | |---|---|:---:| -| `/order` | `PUT` | In Progress | +| `/order` | `PUT` | In Production | ##### Request @@ -113,6 +126,24 @@ $ mysql.server restart } ``` + + + + + + + +## How To Adapt the Model Template + +To use the Unit model as a template for building out other models you will need to adjust the definition of your model in '/server/db.js'. It must contain the appropriate fields for your model to meet the documentation. db.js is just a rough structure and will need to be adjusted. + +Copy /server/models/unit.js and rename it to match your model. You will need to restructure the definitions in this file to reflect the changes you have made to /server/db.js + +## Documentation + +Each public method in /server/models/unit.js is documented according to the AirBNB Standards. Your own adaptation of this file means you will need to document its use. In your pull request if additional information is needed for team members to understand how to use your contributions please mark it down in the description of your pull request (just like I'm doing now). Additionally, copy / paste your modifications to the /readme.md file so this can be saved for later use by other devs. + + ## Contributing See [Contribute.md](https://github.com/reactivepixel/Gravity/blob/order_bot/CONTRIBUTE.md) From 472706f737bc9617faa2ea860970fc4714014cc3 Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 27 Feb 2016 23:38:11 -0500 Subject: [PATCH 82/93] modified inventory route to go to specific sku --- routes/inventory.js | 35 ++++++++++++++++++++++++++++++++++ test/__inventory.js | 46 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 test/__inventory.js diff --git a/routes/inventory.js b/routes/inventory.js index 23717b9..8b1ebfd 100644 --- a/routes/inventory.js +++ b/routes/inventory.js @@ -55,6 +55,41 @@ module.exports = function(express) { } }); }); + + router.route('/:sku') + + //Put request to update a record in the database. + .put(function(req, res) { + req.body.sku = req.params.sku; + inventory.update(req.body, function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); + }) + + //Get request to read one record from the database. + .get(function(req, res) { + req.body.sku = req.params.sku; + inventory.find(req.body, function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); + }) + + //Delete reuqest to remove one record from database. + .delete(function(req, res) { + req.body.sku = req.params.sku; + inventory.destroy(req.body, function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json({success: data}); + }) + }) return router; } diff --git a/test/__inventory.js b/test/__inventory.js new file mode 100644 index 0000000..c00539e --- /dev/null +++ b/test/__inventory.js @@ -0,0 +1,46 @@ +const request = require('supertest'); + +describe('Inventory Route', function() { + var server; + var testOrderData = { + "sku": "a5296ab9-9eee-7ba0-0a79-b801594f2c94", + "location": "California" + } + + var testInventory; + + beforeEach(function() { + server = require('../server/server.js'); + }); + + afterEach(function() { + server.close(); + }); + + //Testing if the inventory was created. + it('Inventory Create', function(done) { + request(server) + .put('/inventory') + .set('Accept', 'application/json') + .send(testOrderData) + .expect('Content-Type', /json/) + .expect(function(res) { + console.log("**************", res.body.sku); + if(res.body.sku !== testOrderData.sku) + throw new Error('Inventory was not properly created.'); + testOrder = res.body; + }) + .expect(200, done); + }); + + it('Inventory Read One', function(done) { + request(server) + .get('/inventory/' + testOrder.uuid.toString()) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(testOrder.uuid !== res.body.uuid) throw new Error('The UUID returned does not match.'); + }) + .expect(200, done); + }); +}) \ No newline at end of file From 469a31c7c781b41d2fd93afac79b28474fbcdf16 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Sat, 27 Feb 2016 23:38:52 -0500 Subject: [PATCH 83/93] Unit tests working for orderedItems and Order routes --- test/__db-ordered-items.js | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/test/__db-ordered-items.js b/test/__db-ordered-items.js index 52f31f0..03ca914 100644 --- a/test/__db-ordered-items.js +++ b/test/__db-ordered-items.js @@ -2,17 +2,6 @@ const request = require('supertest'); describe('OrderItem Route', function() { var server; - var testOrderItemsData = { - "units": [ - { - "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c91', - "quantity": 5}, - { - "sku": 'a5296ab9-9eee-7ba0-0a79-b801594f2c92', - "quantity": 2} - ] - }; - var testOrderItems; beforeEach(function() { @@ -38,7 +27,7 @@ describe('OrderItem Route', function() { it('OrderItem Read One', function(done) { request(server) - .get('/orderedItems/' + testOrderItems.uuid) + .get('/orderedItems/' + testOrderItems[0].uuid) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { @@ -49,18 +38,18 @@ describe('OrderItem Route', function() { it('OrderItem Update', function(done) { request(server) - .get('/orderedItems/' + testOrderItems.uuid) + .get('/orderedItems/' + testOrderItems[0].uuid) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { - if(testOrderItems.fullName !== res.body.fullName) throw new Error('Did not update record'); + if(testOrderItems.uuid !== res.body.uuid) throw new Error('Did not update record'); }) .expect(200, done); }); it('OrderItem Destroy', function(done) { request(server) - .delete('/orderedItems/' + testOrderItems.uuid) + .delete('/orderedItems/' + testOrderItems[0].uuid) .set('Accept', 'application/json') .send({force: true}) .expect('Content-Type', /json/) From 5a48ee8beedda95d915d15c057e2d9a2e8bd1d87 Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 27 Feb 2016 23:40:49 -0500 Subject: [PATCH 84/93] modified units route to go to specific sku --- routes/unit.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/routes/unit.js b/routes/unit.js index 50630fb..e6b8ac9 100644 --- a/routes/unit.js +++ b/routes/unit.js @@ -55,6 +55,41 @@ module.exports = function(express) { } }); // End of .waterfall() }); // End of PUT route + + router.route('/:sku') + + //Put request to update a record in the database. + .put(function(req, res) { + req.body.sku = req.params.sku; + units.update(req.body, function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); + }) + + //Get request to read one record from the database. + .get(function(req, res) { + req.body.sku = req.params.sku; + units.find(req.body, function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json(data); + }); + }) + + //Delete reuqest to remove one record from database. + .delete(function(req, res) { + req.body.sku = req.params.sku; + units.destroy(req.body, function(err) { + //Encoutered an error. + res.status(500).json(err); + }, function(data) { + res.status(200).json({success: data}); + }) + }) return router; } From 0ffd8af9645983e911febc10201fafc4e0ba5661 Mon Sep 17 00:00:00 2001 From: Chris Fortin Date: Sat, 27 Feb 2016 23:46:59 -0500 Subject: [PATCH 85/93] created units.js file for unit testing --- test/__units.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 test/__units.js diff --git a/test/__units.js b/test/__units.js new file mode 100644 index 0000000..8545471 --- /dev/null +++ b/test/__units.js @@ -0,0 +1,47 @@ +const request = require('supertest'); + +describe('Units Route', function() { + var server; + var testOrderData = { + "sku": "a5296ab9-9eee-7ba0-0a79-b801594f2c94", + "name": "Christopher Fortin", + "location": "Florida" + } + + var testUnit; + + beforeEach(function() { + server = require('../server/server.js'); + }); + + afterEach(function() { + server.close(); + }); + + //Testing if the Unit was created. + it('Unit Create', function(done) { + request(server) + .put('/unit') + .set('Accept', 'application/json') + .send(testOrderData) + .expect('Content-Type', /json/) + .expect(function(res) { + console.log("**************", res.body.sku); + if(res.body.sku !== testOrderData.sku) + throw new Error('Unit was not properly created.'); + testOrder = res.body; + }) + .expect(200, done); + }); + + it('Unit Read One', function(done) { + request(server) + .get('/unit/' + testOrder.uuid.toString()) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(testOrder.uuid !== res.body.uuid) throw new Error('The UUID returned does not match.'); + }) + .expect(200, done); + }); +}) From bab7960cc2ae1ba0a78e15bed9280a3f4de80e79 Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 27 Feb 2016 23:48:57 -0500 Subject: [PATCH 86/93] added inventory unit test --- test/__inventory.js | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/test/__inventory.js b/test/__inventory.js index c00539e..43db2dc 100644 --- a/test/__inventory.js +++ b/test/__inventory.js @@ -28,18 +28,52 @@ describe('Inventory Route', function() { console.log("**************", res.body.sku); if(res.body.sku !== testOrderData.sku) throw new Error('Inventory was not properly created.'); - testOrder = res.body; + testInventory = res.body; }) .expect(200, done); }); it('Inventory Read One', function(done) { request(server) - .get('/inventory/' + testOrder.uuid.toString()) + .get('/inventory/' + testInventory.sku.toString()) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { - if(testOrder.uuid !== res.body.uuid) throw new Error('The UUID returned does not match.'); + if(testInventory.sku !== res.body.sku) throw new Error('The sku returned does not match.'); + }) + .expect(200, done); + }); + + it('Inventory Read All', function(done) { + request(server) + .get('/inventory') + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(res.body.length < 1) throw new Error('There are no entries in the database.'); + }) + .expect(200, done); + }); + + it('Inventory Update', function(done) { + request(server) + .get('/inventory/' + testInventory.sku.toString()) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(testInventory.sku !== res.body.sku) throw new Error('Did not update record'); + }) + .expect(200, done); + }); + + it('Inventory Destroy', function(done) { + request(server) + .delete('/inventory/' + testInventory.sku.toString()) + .set('Accept', 'application/json') + .send({force: true}) + .expect('Content-Type', /json/) + .expect(function(res) { + if(!res.body.success) throw new Error ('Destroy failed.') }) .expect(200, done); }); From ca60782517f211dd5f8fa31d726b9b8a62700300 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sat, 27 Feb 2016 23:50:54 -0500 Subject: [PATCH 87/93] modified inventory unit test --- test/__inventory.js | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/test/__inventory.js b/test/__inventory.js index 43db2dc..97be174 100644 --- a/test/__inventory.js +++ b/test/__inventory.js @@ -6,9 +6,9 @@ describe('Inventory Route', function() { "sku": "a5296ab9-9eee-7ba0-0a79-b801594f2c94", "location": "California" } - + var testInventory; - + beforeEach(function() { server = require('../server/server.js'); }); @@ -16,7 +16,7 @@ describe('Inventory Route', function() { afterEach(function() { server.close(); }); - + //Testing if the inventory was created. it('Inventory Create', function(done) { request(server) @@ -25,17 +25,16 @@ describe('Inventory Route', function() { .send(testOrderData) .expect('Content-Type', /json/) .expect(function(res) { - console.log("**************", res.body.sku); - if(res.body.sku !== testOrderData.sku) + if(res.body.sku !== testOrderData[0].sku) throw new Error('Inventory was not properly created.'); testInventory = res.body; }) .expect(200, done); }); - + it('Inventory Read One', function(done) { request(server) - .get('/inventory/' + testInventory.sku.toString()) + .get('/inventory/' + testInventory[0].sku .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { @@ -43,7 +42,7 @@ describe('Inventory Route', function() { }) .expect(200, done); }); - + it('Inventory Read All', function(done) { request(server) .get('/inventory') @@ -54,10 +53,10 @@ describe('Inventory Route', function() { }) .expect(200, done); }); - + it('Inventory Update', function(done) { request(server) - .get('/inventory/' + testInventory.sku.toString()) + .get('/inventory/' + testInventory[0].sku .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { @@ -65,10 +64,10 @@ describe('Inventory Route', function() { }) .expect(200, done); }); - + it('Inventory Destroy', function(done) { request(server) - .delete('/inventory/' + testInventory.sku.toString()) + .delete('/inventory/' + testInventory[0].sku .set('Accept', 'application/json') .send({force: true}) .expect('Content-Type', /json/) @@ -77,4 +76,4 @@ describe('Inventory Route', function() { }) .expect(200, done); }); -}) \ No newline at end of file +}) From 872abdfa672f9dd5139c0e8274d0f373ed9e48c8 Mon Sep 17 00:00:00 2001 From: Trichh Date: Sat, 27 Feb 2016 23:54:19 -0500 Subject: [PATCH 88/93] fixed syntax errors --- test/__inventory.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/__inventory.js b/test/__inventory.js index 97be174..0b04155 100644 --- a/test/__inventory.js +++ b/test/__inventory.js @@ -34,7 +34,7 @@ describe('Inventory Route', function() { it('Inventory Read One', function(done) { request(server) - .get('/inventory/' + testInventory[0].sku + .get('/inventory/' + testInventory[0].sku) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { @@ -56,7 +56,7 @@ describe('Inventory Route', function() { it('Inventory Update', function(done) { request(server) - .get('/inventory/' + testInventory[0].sku + .get('/inventory/' + testInventory[0].sku) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { @@ -67,7 +67,7 @@ describe('Inventory Route', function() { it('Inventory Destroy', function(done) { request(server) - .delete('/inventory/' + testInventory[0].sku + .delete('/inventory/' + testInventory[0].sku) .set('Accept', 'application/json') .send({force: true}) .expect('Content-Type', /json/) From 94e29071192fe35f30498f38d96411fce3a17868 Mon Sep 17 00:00:00 2001 From: jacobnigh Date: Sat, 27 Feb 2016 23:56:02 -0500 Subject: [PATCH 89/93] Fixing tests --- test/__db-ordered-items.js | 1 - test/__units.js | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/test/__db-ordered-items.js b/test/__db-ordered-items.js index 03ca914..ba0a0eb 100644 --- a/test/__db-ordered-items.js +++ b/test/__db-ordered-items.js @@ -20,7 +20,6 @@ describe('OrderItem Route', function() { .expect(function(res) { if(res.body.length < 1) throw new Error('There are no entries in the database.'); testOrderItems = res.body; - console.log(testOrderItems); }) .expect(200, done); }); diff --git a/test/__units.js b/test/__units.js index 8545471..cbc19c9 100644 --- a/test/__units.js +++ b/test/__units.js @@ -25,8 +25,7 @@ describe('Units Route', function() { .set('Accept', 'application/json') .send(testOrderData) .expect('Content-Type', /json/) - .expect(function(res) { - console.log("**************", res.body.sku); + .expect(function(res) if(res.body.sku !== testOrderData.sku) throw new Error('Unit was not properly created.'); testOrder = res.body; From fbfa34b850004998f439c7979554a4db39369339 Mon Sep 17 00:00:00 2001 From: therealaldo Date: Sun, 28 Feb 2016 00:01:05 -0500 Subject: [PATCH 90/93] working on inventory unit test --- test/__inventory.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/__inventory.js b/test/__inventory.js index 0b04155..ac5a4b9 100644 --- a/test/__inventory.js +++ b/test/__inventory.js @@ -25,7 +25,7 @@ describe('Inventory Route', function() { .send(testOrderData) .expect('Content-Type', /json/) .expect(function(res) { - if(res.body.sku !== testOrderData[0].sku) + if(res.body.sku !== testOrderData.sku) throw new Error('Inventory was not properly created.'); testInventory = res.body; }) @@ -34,11 +34,11 @@ describe('Inventory Route', function() { it('Inventory Read One', function(done) { request(server) - .get('/inventory/' + testInventory[0].sku) + .get('/inventory/' + testInventory.sku.toString()) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { - if(testInventory.sku !== res.body.sku) throw new Error('The sku returned does not match.'); + if(testInventory[0].sku !== res.body.sku) throw new Error('The sku returned does not match.'); }) .expect(200, done); }); @@ -56,11 +56,11 @@ describe('Inventory Route', function() { it('Inventory Update', function(done) { request(server) - .get('/inventory/' + testInventory[0].sku) + .get('/inventory/' + testInventory.sku.toString()) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { - if(testInventory.sku !== res.body.sku) throw new Error('Did not update record'); + if(testInventory[0].sku !== res.body.sku) throw new Error('Did not update record'); }) .expect(200, done); }); From b1beb0f5e04d8a67c34b751070f8f0d00f795ffa Mon Sep 17 00:00:00 2001 From: Chris Fortin Date: Sun, 28 Feb 2016 00:07:40 -0500 Subject: [PATCH 91/93] changed around __units.js file --- test/__units.js | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/test/__units.js b/test/__units.js index cbc19c9..ccc5097 100644 --- a/test/__units.js +++ b/test/__units.js @@ -25,10 +25,10 @@ describe('Units Route', function() { .set('Accept', 'application/json') .send(testOrderData) .expect('Content-Type', /json/) - .expect(function(res) + .expect(function(res) if(res.body.sku !== testOrderData.sku) throw new Error('Unit was not properly created.'); - testOrder = res.body; + testUnit = res.body; }) .expect(200, done); }); @@ -39,8 +39,44 @@ describe('Units Route', function() { .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { - if(testOrder.uuid !== res.body.uuid) throw new Error('The UUID returned does not match.'); + if(testUnit.uuid !== res.body.uuid) throw new Error('The UUID returned does not match.'); }) .expect(200, done); }); + + it('unit Read All', function(done) { + request(server) + .get('/unit') + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(res.body.length < 1) throw new Error('There are no entries in the database.'); + }) + .expect(200, done); + }); + + it('unit Update', function(done) { + request(server) + .get('/unit/' + testUnit.sku.toString()) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(function(res) { + if(testUnit.sku !== res.body.sku) throw new Error('Did not update record'); + }) + .expect(200, done); + }); + + it('unit Destroy', function(done) { + request(server) + .delete('/unit/' + testUnit.sku.toString()) + .set('Accept', 'application/json') + .send({force: true}) + .expect('Content-Type', /json/) + .expect(function(res) { + if(!res.body.success) throw new Error ('Destroy failed.') + }) + .expect(200, done); + }); + + }) From 9e0d81eb78ec86a46377f98a6b6dcee36b5159c5 Mon Sep 17 00:00:00 2001 From: Chris Fortin Date: Sun, 28 Feb 2016 00:23:02 -0500 Subject: [PATCH 92/93] One last change from uuid to sku --- test/__units.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/__units.js b/test/__units.js index ccc5097..a22ac5d 100644 --- a/test/__units.js +++ b/test/__units.js @@ -35,11 +35,11 @@ describe('Units Route', function() { it('Unit Read One', function(done) { request(server) - .get('/unit/' + testOrder.uuid.toString()) + .get('/unit/' + testUnit.sku.toString()) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(function(res) { - if(testUnit.uuid !== res.body.uuid) throw new Error('The UUID returned does not match.'); + if(testUnit.sku !== res.body.sku) throw new Error('The sku returned does not match.'); }) .expect(200, done); }); From de76788037fa4dc0258f982e77a9eb402bb09bf6 Mon Sep 17 00:00:00 2001 From: Christopher Chapman Date: Fri, 7 Apr 2017 21:59:07 -0400 Subject: [PATCH 93/93] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 9456dbf..6bf6915 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# Gravity +# InventoryManager Business backend logic for Gravity