diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..af0f0c3 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["es2015"] +} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..1e8def4 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - "stable" +before_install: + - cd server + diff --git a/README.md b/README.md index cd73e79..422705a 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,16 @@ -# Event Manager https://travis-ci.org/travis-ci/travis-web.svg?branch=daily-cron +[](https://travis-ci.org/faksam/EventManager) [](https://codeclimate.com/github/faksam/EventManager/maintainability) [](https://codeclimate.com/github/faksam/EventManager/test_coverage) [](https://coveralls.io/github/faksam/EventManager?branch=master) + +# Event Manager Andela Pre-Bootcamp "Developer Challenge" Given you manage an events center, this app will help you accept applications to use your center / facilities, and will either decline events when the proposed day is already taken, or suggest an available day Create a Pivotal Tracker Board +# Install dependencies +npm install + +# Serve at localhost:8000 +npm run start:dev ### The client-side and server-side features are as follows: - User signup and signin pages. diff --git a/server/.babelrc b/server/.babelrc new file mode 100644 index 0000000..f9f2a02 --- /dev/null +++ b/server/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [ "es2015" ] +} \ No newline at end of file diff --git a/server/app.js b/server/app.js index 56a6fc3..2350e41 100644 --- a/server/app.js +++ b/server/app.js @@ -1,16 +1,22 @@ - - const express = require('express'); const logger = require('morgan'); var path = require('path'); const bodyParser = require('body-parser'); -// Set up the express app -const app = express(); +require('babel-register'); +//routes var events = require('./routes/events'); var centers = require('./routes/centers'); -// Log requests to the console. + +// Set up the express app +const app = express(); +//Start server +var port = 3456; +app.listen(port); +console.log("Listening on port : " + port); + +// Log requests to the console. app.use(logger('dev')); // Parse incoming requests data (https://github.com/expressjs/body-parser) @@ -22,7 +28,7 @@ app.use(bodyParser.urlencoded({ extended: false })); // message: 'Welcome to the beginning of nothingness.', //})); -app.use(express.static(path.join(__dirname, '../template'))); +app.use(express.static(path.join(__dirname, '../template')));//remove ../ pass template ass // Require static assets from template folder app.use('../template', express.static(path.join(__dirname + '../template'))); @@ -34,10 +40,38 @@ app.set('view engine', 'html'); //app.set('view engine', 'ejs'); app.get('/', function (req, res) { - res.render('../template/index.html', { title: 'MyApp' }); + res.render('/template/index.html', { title: 'MyApp' }); }); app.use('/centers', centers); app.use('/events', events); + +// catch 404 and forward to error handler +app.use(function (req, res, next) { + var err = new Error('Not Found'); + err.status = 404; + next(err); +}); + +if (app.get('env') === 'development') { + app.use(function (err, req, res, next) { + res.status(err.status || 500); + res.render('error', { + message: err.message, + error: err + }); + }); +} + +// production error handler +// no stacktraces leaked to user +app.use(function (err, req, res, next) { + res.status(err.status || 500); + res.render('error.', { + message: err.message, + error: {} + }); +}); + module.exports = app; \ No newline at end of file diff --git a/server/bin/www b/server/bin/www index 1563623..fd06e7a 100644 --- a/server/bin/www +++ b/server/bin/www @@ -1,5 +1,6 @@ // This will be our application entry. We'll setup our server here. const http = require('http'); +require('babel-register'); const app = require('../app'); // The express app we just created const port = parseInt(process.env.PORT, 10) || 8000; diff --git a/server/event-manager/center-events.json b/server/event-manager/center-events.json new file mode 100644 index 0000000..0458632 --- /dev/null +++ b/server/event-manager/center-events.json @@ -0,0 +1,136 @@ +{ + "centers": [ + { + "id": 1, + "name": "Civic Innovation Lab1", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "events": [ + { + "bookedBy": "", + "date": "", + "email": "", + "phone": "" + } + ] + }, + { + "id": 2, + "name": "Civic Innovation Lab2", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "events": [ + { + "bookedBy": "", + "date": "", + "email": "", + "phone": "" + } + ] + }, + { + "id": 3, + "name": "Civic Innovation Lab3", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "events": [ + { + "bookedBy": "", + "date": "", + "email": "", + "phone": "" + } + ] + }, + { + "id": 4, + "name": "Civic Innovation Lab4", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "events": [ + { + "bookedBy": "", + "date": "", + "email": "", + "phone": "" + } + ] + }, + { + "id": 5, + "name": "Civic Innovation Lab5", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "events": [ + { + "bookedBy": "", + "date": "", + "email": "", + "phone": "" + } + ] + }, + { + "id": 6, + "name": "Civic Innovation Lab6", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "events": [ + { + "bookedBy": "", + "date": "", + "email": "", + "phone": "" + } + ] + } + ] +} \ No newline at end of file diff --git a/server/event-manager/centers.json b/server/event-manager/centers.json index f833852..272f89f 100644 --- a/server/event-manager/centers.json +++ b/server/event-manager/centers.json @@ -16,6 +16,114 @@ "first_name": "John", "last_name": "Smith", "phone": "219-839-2819" + }, + { + "id": 2, + "name": "Civic Innovation Lab2", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "first_name": "John", + "last_name": "Smith", + "phone": "219-839-2819" + }, + { + "id": 3, + "name": "Civic Innovation Lab3", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "first_name": "John", + "last_name": "Smith", + "phone": "219-839-2819" + }, + { + "id": 4, + "name": "Civic Innovation Lab4", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "first_name": "John", + "last_name": "Smith", + "phone": "219-839-2819" + }, + { + "id": 5, + "name": "Civic Innovation Lab5", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "first_name": "John", + "last_name": "Smith", + "phone": "219-839-2819", + "events": { + "bookedBy": "fakunle samuel", + "date": "11/12/17", + "email": "contact@fakunlesamuel.com", + "phone": "0703924853" + } + }, + { + "id": 6, + "name": "Civic Innovation Lab6", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "first_name": "John", + "last_name": "Smith", + "phone": "219-839-2819" + }, + { + "id": 7, + "name": "Civic Innovation Lab7", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "first_name": "John", + "last_name": "Smith", + "phone": "219-839-2819" } ] -} \ No newline at end of file +} diff --git a/server/package-lock.json b/server/package-lock.json index 0628696..cefc3b6 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -166,12 +166,47 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "commander": "2.11.0", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.4", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -225,6 +260,68 @@ } } }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", @@ -236,6 +333,17 @@ "babel-types": "6.26.0" } }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" + } + }, "babel-helper-call-delegate": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", @@ -271,6 +379,18 @@ "babel-types": "6.26.0" } }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", @@ -352,6 +472,16 @@ "babel-types": "6.26.0" } }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", @@ -370,24 +500,86 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-react-transform": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-transform/-/babel-plugin-react-transform-3.0.0.tgz", + "integrity": "sha512-4vJGddwPiHAOgshzZdGwYy4zRjjIr5SMY7gkOaCyIASjgpcsyLTlZNuB5rHOFoaTvGlhfo8/g4pobXPyHqm/3w==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", "dev": true }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", "dev": true }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, "babel-plugin-syntax-trailing-function-commas": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", "dev": true }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", @@ -399,6 +591,31 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", @@ -644,6 +861,65 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-assign": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz", + "integrity": "sha1-+Z0vZvGgsNSY40bFNZaEdAyqILo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "dev": true, + "requires": { + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-regenerator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", @@ -663,6 +939,25 @@ "babel-types": "6.26.0" } }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, "babel-preset-env": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", @@ -701,6 +996,132 @@ "semver": "5.4.1" } }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, + "babel-preset-es2015-node5": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-es2015-node5/-/babel-preset-es2015-node5-1.2.0.tgz", + "integrity": "sha1-3tw4F41Yc6B74wZbX2afyQZ364s=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1" + } + }, + "babel-preset-react-native": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-native/-/babel-preset-react-native-4.0.0.tgz", + "integrity": "sha512-Wfbo6x244nUbBxjr7hQaNFdjj7FDYU+TVT7cFVPEdVPI68vhN52iLvamm+ErhNdHq6M4j1cMT6AJBYx7Wzdr0g==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-react-transform": "3.0.0", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-syntax-flow": "6.18.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-plugin-transform-object-assign": "6.22.0", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-plugin-transform-regenerator": "6.26.0", + "babel-template": "6.26.0", + "react-transform-hmr": "1.0.4" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -762,8 +1183,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "basic-auth": { "version": "2.0.0", @@ -820,7 +1240,6 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -837,6 +1256,12 @@ "repeat-element": "1.1.2" } }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, "browserslist": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.9.1.tgz", @@ -890,6 +1315,33 @@ "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", "dev": true }, + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.5" + } + }, + "chai-http": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chai-http/-/chai-http-3.0.0.tgz", + "integrity": "sha1-VGDYA24fGhKwtbXL1Snm3B0x60s=", + "dev": true, + "requires": { + "cookiejar": "2.0.6", + "is-ip": "1.0.0", + "methods": "1.1.2", + "qs": "6.5.1", + "superagent": "2.3.0" + } + }, "chalk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", @@ -907,6 +1359,12 @@ "integrity": "sha1-C74TVaxE16PtSpJXB8TvcPgZD2w=", "dev": true }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -986,11 +1444,31 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.0", @@ -1027,6 +1505,12 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", @@ -1037,6 +1521,12 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "cookiejar": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.0.6.tgz", + "integrity": "sha1-Cr81atANHFohnYjURRgEbdAmrP4=", + "dev": true + }, "core-js": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", @@ -1083,6 +1573,15 @@ "ms": "2.0.0" } }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "4.0.5" + } + }, "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", @@ -1118,6 +1617,12 @@ } } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, "depd": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", @@ -1128,6 +1633,21 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "dev": true + }, "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", @@ -1138,6 +1658,12 @@ "isarray": "1.0.0" } }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", @@ -1412,6 +1938,12 @@ } } }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, "external-editor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", @@ -1536,6 +2068,23 @@ "for-in": "1.0.2" } }, + "form-data": { + "version": "1.0.0-rc4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "integrity": "sha1-BaxrwiIntD5EYfSIFhVUaZ1Pi14=", + "dev": true, + "requires": { + "async": "1.5.2", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "formidable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", + "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=", + "dev": true + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -1552,11 +2101,16 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha1-4y/AMKLM7kSmtTcTCNpUvgs5fSc=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "functional-red-black-tree": { "version": "1.0.1", @@ -1569,6 +2123,12 @@ "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.2.0.tgz", "integrity": "sha512-JjcXDHT84icN/kFaF5+rNd1trZsgJFVqTSgM9dv6eayxSIQKMq0ilBJ+5pvf0SgimacMlZEsav4oL+4dUE4E2g==" }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -1579,7 +2139,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -1608,6 +2167,16 @@ "is-glob": "2.0.1" } }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true, + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + } + }, "global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", @@ -1669,6 +2238,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -1692,6 +2267,22 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", @@ -1741,7 +2332,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -1789,6 +2379,12 @@ "loose-envify": "1.3.1" } }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", + "dev": true + }, "ipaddr.js": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", @@ -1841,6 +2437,15 @@ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -1866,6 +2471,15 @@ "is-path-inside": "1.0.0" } }, + "is-ip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-1.0.0.tgz", + "integrity": "sha1-K7aVn3l8zW+f3IEnWLy8h8TFkHQ=", + "dev": true, + "requires": { + "ip-regex": "1.0.3" + } + }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -2004,6 +2618,12 @@ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", @@ -2016,6 +2636,12 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -2252,11 +2878,19 @@ "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "0.1.1" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "1.1.8" } @@ -2284,6 +2918,44 @@ } } }, + "mocha": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.0.1.tgz", + "integrity": "sha512-evDmhkoA+cBNiQQQdSKZa2b9+W2mpLoj50367lhy+Klnx9OV8XlCIhigUnn1gaTFLQCa0kdNhEGDr0hCXOQFDw==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, "moment": { "version": "2.19.2", "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.2.tgz", @@ -2415,7 +3087,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1.0.2" } @@ -2443,12 +3114,29 @@ "wordwrap": "1.0.0" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -2492,8 +3180,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -2512,6 +3199,12 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, "pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", @@ -2664,6 +3357,12 @@ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -2774,6 +3473,32 @@ "strip-json-comments": "2.0.1" } }, + "react-deep-force-update": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-1.1.1.tgz", + "integrity": "sha1-vNMUeAJ7ZLMznxCJIatSC0MT3Cw=", + "dev": true + }, + "react-proxy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz", + "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=", + "dev": true, + "requires": { + "lodash": "4.17.4", + "react-deep-force-update": "1.1.1" + } + }, + "react-transform-hmr": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz", + "integrity": "sha1-4aQL0Krvxy6N/Xp82gmvhQZjl7s=", + "dev": true, + "requires": { + "global": "4.3.2", + "react-proxy": "1.1.8" + } + }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", @@ -2896,6 +3621,15 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", @@ -2935,7 +3669,6 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, "requires": { "glob": "7.1.2" } @@ -3092,6 +3825,12 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, "slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", @@ -3101,6 +3840,21 @@ "is-fullwidth-code-point": "2.0.0" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, "split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", @@ -3170,6 +3924,24 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "superagent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-2.3.0.tgz", + "integrity": "sha1-cDUpoHFOV+EjlZ3e+84ZOy5Q0RU=", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "cookiejar": "2.0.6", + "debug": "2.6.9", + "extend": "3.0.1", + "form-data": "1.0.0-rc4", + "formidable": "1.1.1", + "methods": "1.1.2", + "mime": "1.4.1", + "qs": "6.5.1", + "readable-stream": "2.3.3" + } + }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -3264,6 +4036,12 @@ "nopt": "1.0.10" } }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, "tryit": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", @@ -3279,6 +4057,12 @@ "prelude-ls": "1.1.2" } }, + "type-detect": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", + "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==", + "dev": true + }, "type-is": { "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", @@ -3351,6 +4135,12 @@ "prepend-http": "1.0.4" } }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3367,6 +4157,15 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "1.1.1" + } + }, "validator": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/validator/-/validator-9.1.1.tgz", @@ -3449,8 +4248,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { "version": "0.2.1", diff --git a/server/package.json b/server/package.json index 0a87028..9853642 100644 --- a/server/package.json +++ b/server/package.json @@ -4,8 +4,9 @@ "description": "Andela Pre-Bootcamp \"Developer Challenge\"", "main": "index.js", "scripts": { - "start:dev": "nodemon ./bin/www", - "test": "echo \"Error: no test specified\" && exit 1" + "start": "node app.js", + "build": "rimraf dist/ && babel ./ --out-dir dist/ --ignore ./node_modules,./.babelrc,./package.json,./npm-debug.log --copy-files", + "test": "mocha --recursive --compilers js:babel-register" }, "repository": { "type": "git", @@ -22,14 +23,29 @@ "body-parser": "^1.18.2", "express": "^4.16.2", "jsonfile": "^4.0.0", - "morgan": "^1.9.0", + "morgan": "^1.9.0", + "ejs": "^1.0.0", + "rimraf": "^2.6.1", "pg": "^7.4.0", "pg-hstore": "^2.3.2", "sequelize": "^4.22.11" }, "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.0", "babel-preset-env": "^1.6.1", + "babel-preset-es2015": "^6.24.1", + "babel-preset-es2015-node5": "*", + "babel-preset-react-native": "^4.0.0", + "babel-preset-stage-2": "^6.24.1", + "babel-preset-stage-3": "*", + "babel-register": "^6.26.0", + "chai": "^4.1.2", + "chai-http": "^3.0.0", "eslint": "^4.11.0", - "nodemon": "^1.12.1" + "json-loader": "^0.5.7", + "mocha": "^4.0.1", + "nodemon": "^1.12.1", + "rimraf": "^2.6.2" } } diff --git a/server/routes/centers.js b/server/routes/centers.js index 0eacda1..9fa5092 100644 --- a/server/routes/centers.js +++ b/server/routes/centers.js @@ -1,53 +1,82 @@ -var express = require('express'); +import express from 'express'; +import logger from 'morgan'; +import path from 'path'; +import bodyParser from 'body-parser'; +import jsonfile from 'jsonfile'; + var router = express.Router(); -var jsonfile = require('jsonfile') -var file = 'event-manager/centers.json' -jsonfile.readFile(file, function (err, obj) { - console.dir(obj) -}) -var Center = require('../models/Center.js'); +//import json file +import centers from '../event-manager/centers.json'; +var file = './event-manager/centers.json'; + +var center = { + "id": 7, + "name": "Civic Innovation Lab - 7", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "first_name": "John", + "last_name": "Smith", + "phone": "219-839-2819" +}; -/* GET /todos listing. */ +/* GET /center listing. */ router.get('/', function (req, res, next) { - var d; - jsonfile.readFile(file, function (err, obj) { - if (err) throw err; - console.log(obj); - d = obj; - console.log("in router"); - console.log(d); - res.render('searchcenters', { centers: obj }); - }); + res.send(centers); }); -/* POST /todos */ +///* POST /center */ router.post('/', function (req, res, next) { - Center.create(req.body, function (err, post) { - if (err) return next(err); - res.json(post); + centers.centers.push(req.body); + jsonfile.writeFile(file, centers, { spaces: 2, EOL: '\r\n' }, function (err) { + console.error(err) }); + res.status(201).send(centers); }); -/* GET /todos/id */ + +///* GET /center/id */ router.get('/:id', function (req, res, next) { - res.render('centerdetails.html'); + function findCenter(center) { + return center.id == req.params.id; + } + res.send(centers.centers.find(findCenter)); }); -/* PUT /todos/:id */ +///* PUT /center/:id */ router.put('/:id', function (req, res, next) { - Center.findByIdAndUpdate(req.params.id, req.body, function (err, post) { - if (err) return next(err); - res.json(post); + centers.centers.forEach((element, index) => { + if (element.id === center.id) { + centers.centers[index] = center; + } + }); + jsonfile.writeFile(file, centers, { spaces: 2, EOL: '\r\n' }, function (err) { + console.error(err) }); + res.send(centers); }); -/* DELETE /todos/:id */ +///* DELETE /center/:id */ router.delete('/:id', function (req, res, next) { - Center.findByIdAndRemove(req.params.id, req.body, function (err, post) { - if (err) return next(err); - res.json(post); + var count = 0; + centers.centers.forEach((element, index) => { + if (element.id === center.id) { + centers.centers.splice(count, 1); + } + count++; + }); + jsonfile.writeFile(file, centers, { spaces: 2, EOL: '\r\n' }, function (err) { + console.error(err) }); + res.send(centers); }); module.exports = router; diff --git a/server/routes/events.js b/server/routes/events.js index 2ad84b8..9dc833b 100644 --- a/server/routes/events.js +++ b/server/routes/events.js @@ -1,52 +1,90 @@ -var express = require('express'); +import express from 'express'; +import logger from 'morgan'; +import path from 'path'; +import bodyParser from 'body-parser'; +import jsonfile from 'jsonfile'; + var router = express.Router(); -var jsonfile = require('jsonfile'); -var file = '../event-manager/centers.json'; -jsonfile.readFile(file, function (err, obj) { - console.dir(obj) -}) +//import json file +import centers from '../event-manager/centers.json'; +var file = './event-manager/centers.json'; -var Event = require('../models/Event.js'); +var event = { + "bookedBy": "fakunle samuel", + "date": "11/12/17", + "email": "contact@fakunlesamuel.com", + "phone": "0703924853" +}; +var event1 = { + "bookedBy": "", + "date": "", + "email": "", + "phone": "" +}; + -/* GET /todos listing. */ +/* GET /event listing. */ //router.get('/', function (req, res, next) { -// Event.find(function (err, events) { -// if (err) return next(err); -// res.json(events); -// }); + +// res.send(events); //}); -/* POST /todos */ +///* POST /event */ router.post('/', function (req, res, next) { - Event.create(req.body, function (err, post) { - if (err) return next(err); - res.json(post); + var center = {}; + centers.centers.forEach((element, index) => { + if (element.id == 5) { + element.events = req.body; + + center = element; + } + }); + jsonfile.writeFile(file, centers, { spaces: 2, EOL: '\r\n' }, function (err) { + console.error(err) }); + + res.status(201).send(centers); }); -///* GET /todos/id */ + + +///* GET /event/id */ //router.get('/:id', function (req, res, next) { -// Event.findById(req.params.id, function (err, post) { -// if (err) return next(err); -// res.json(post); -// }); + //}); -/* PUT /todos/:id */ +///* PUT /event/:id */ router.put('/:id', function (req, res, next) { - Event.findByIdAndUpdate(req.params.id, req.body, function (err, post) { - if (err) return next(err); - res.json(post); + var center = {}; + centers.centers.forEach((element, index) => { + if (element.id == req.params.id) { + element.events = event; + + center = element; + } + }); + jsonfile.writeFile(file, centers, { spaces: 2, EOL: '\r\n' }, function (err) { + console.error(err) }); + + res.send(centers); }); -/* DELETE /todos/:id */ +///* DELETE /event/:id */ router.delete('/:id', function (req, res, next) { - Event.findByIdAndRemove(req.params.id, req.body, function (err, post) { - if (err) return next(err); - res.json(post); + + var center = {}; + centers.centers.forEach((element, index) => { + if (element.id == req.params.id) { + element.events = event1; + } }); + jsonfile.writeFile(file, centers, { spaces: 2, EOL: '\r\n' }, function (err) { + console.error(err) + }); + + res.send(centers); }); module.exports = router; diff --git a/server/test/test.js b/server/test/test.js new file mode 100644 index 0000000..972ffba --- /dev/null +++ b/server/test/test.js @@ -0,0 +1,162 @@ +'use strict'; + +const chai = require('chai'); +const expect = require('chai').expect; + +chai.use(require('chai-http')); + +const app = require('../app'); // Our app + +var center = { + "id": 7, + "name": "Civic Innovation Lab - 7", + "address": "II Wuse Road Abuja, Nigeria", + "capacity": 500, + "description": "It is a Civic kinda thingly", + "facilities": [ + { + "projector": true, + "no-chairs": 650, + "video-overage": true + } + ], + "first_name": "John", + "last_name": "Smith", + "phone": "219-839-2819" +}; +var event = { + "bookedBy": "fakunle samuel", + "date": "11/12/17", + "email": "contact@fakunlesamuel.com", + "phone": "0703924853" +}; + +describe('API endpoint /centers', function () { + //this.timeout(5000); // How long to wait for a response (ms) + + before(function () { + + }); + + after(function () { + + }); + + // GET - List all centers + it('should return all centers', function () { + return chai.request(app) + .get('/centers') + .then(function (res) { + expect(res).to.have.status(200); + expect(res).to.be.json; + expect(res.body).to.be.an('object'); + expect(res.body.centers).to.be.an('array'); + }); + }); + + // GET - Invalid path + it('should return Not Found', function () { + return chai.request(app) + .get('/INVALID_PATH') + .then(function (res) { + throw new Error('Path exists!'); + }) + .catch(function (err) { + expect(err).to.have.status(404); + }); + }); + + // POST - Add new center + it('should add new center', function () { + return chai.request(app) + .post('/centers') + .send(center) + .then(function (res) { + expect(res).to.have.status(201); + expect(res).to.be.json; + expect(res.body).to.be.an('object'); + //expect(res.body.results).to.be.an('array').that.includes('YELLOW'); + }); + }); + + //// POST - Bad Request + //it('should return Bad Request', function () { + // return chai.request(app) + // .post('/centers') + // .type('form') + // .send({ + // center: 'YELLOW' + // }) + // .then(function (res) { + // throw new Error('Invalid content type!'); + // }) + // .catch(function (err) { + // expect(err).to.have.status(400); + // }); + //}); +}); + +describe('API endpoint /events', function () { + //this.timeout(5000); // How long to wait for a response (ms) + + before(function () { + + }); + + after(function () { + + }); + + + // GET - Invalid path + it('should return Not Found', function () { + return chai.request(app) + .get('/INVALID_PATH') + .then(function (res) { + throw new Error('Path exists!'); + }) + .catch(function (err) { + expect(err).to.have.status(404); + }); + }); + // GET - Invalid path + it('should return Not Found', function () { + return chai.request(app) + .get('/events/jj') + .then(function (res) { + throw new Error('Path exists!'); + }) + .catch(function (err) { + expect(err).to.have.status(404); + }); + }); + + // POST - Add new event + it('should add new event', function () { + return chai.request(app) + .post('/events') + .send(event) + .then(function (res) { + expect(res).to.have.status(201); + expect(res).to.be.json; + expect(res.body).to.be.an('object'); + //expect(res.body.results).to.be.an('array').that.includes('YELLOW'); + }); + }); + + //// POST - Bad Request + //it('should return Bad Request', function () { + // return chai.request(app) + // .post('/centers') + // .type('form') + // .send({ + // center: 'YELLOW' + // }) + // .then(function (res) { + // throw new Error('Invalid content type!'); + // }) + // .catch(function (err) { + // expect(err).to.have.status(400); + // }); + //}); +}); \ No newline at end of file diff --git a/template/New File b/template/New File index ab896c5..f4955bd 100644 --- a/template/New File +++ b/template/New File @@ -1,3 +1,5 @@ +npm run start:dev + My expectations of the Andela Bootcamp The Andela Bootcamp is a two-week, simulated development sprint led by senior Andela developers. The two weeks comprise of one week of home-based self-learning and one week of product development on-site at the Andela Epic Tower. During this time we are expected to learn independently as well as on a team to deliver a final project. @@ -74,6 +76,60 @@ Stand ups *Blockers* >-Power +Thursday +Stand ups +*Last 24 Hours* +>-wrote a medium post on My Experience In Bootcamp So Far +>-worked on the bootcamp Challenge 2 +>-Study and research for better understanding of the bootcamp project +>-check the items I've completed on the trello board checklist +>-would apply today's learnings as I work on the Bootcamp Project. + +*Next 24 Hours* +>-study skills sessions targeted for today +>-participate in a class interaction with my peers to build relationships. +>-would submit your well-structured PivotalTracker board for assessment. +>-Study and research for better understanding of the bootcamp project +>-check the items I've completed on the trello board checklist +>-would apply today's learnings as I work on the Bootcamp Project. + +*Blockers* +>-Power + +Saturday +Stand ups +*Last 24 Hours* +>-studied and research for better understanding of the bootcamp project +>-checked the items I've completed on the trello board checklist +>-made corrections to project as pointed out by LFA +>-submitted my PivotalTracker board on trello for assessment. +>-participated in the class interaction with my peers to build relationships. + +*Next 24 Hours* +>-continue work on project +>-read up on necessary topics as mentioned by LFA +>-make necessary update to project + +*Blockers* +>-None + + +Friday +Stand ups +*Last 24 Hours* +>-watched the daily videos for the day +>-studied and research for better understanding of the bootcamp project +>-checked the items I've completed on the trello board checklist +>-would apply today's learnings as I work on the Bootcamp Project. + +*Next 24 Hours* +>-would work on the Bootcamp Project. +>-would submit my PivotalTracker board on trello for assessment. +>-would participate in a class interaction with my peers to build relationships. + +*Blockers* +>-None + Tuesday diff --git a/template/addcenter.html b/template/addcenter.html index d609bec..a429e02 100644 --- a/template/addcenter.html +++ b/template/addcenter.html @@ -16,35 +16,51 @@
-