From 0de735ff16f9465ce6d8effe5466ac94b1dd7cb0 Mon Sep 17 00:00:00 2001 From: Bret Ldenburg Date: Mon, 17 Jul 2017 15:42:44 -0700 Subject: [PATCH 1/3] working on the tests for my modules --- test/arithmetic-test.js | 0 test/greet-test.js | 17 +++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 test/arithmetic-test.js create mode 100644 test/greet-test.js diff --git a/test/arithmetic-test.js b/test/arithmetic-test.js new file mode 100644 index 0000000..e69de29 diff --git a/test/greet-test.js b/test/greet-test.js new file mode 100644 index 0000000..e204b87 --- /dev/null +++ b/test/greet-test.js @@ -0,0 +1,17 @@ +'use strict'; + +const greet = require('..lib/greet.js'); +const assert = require('assert'); + +describe('#hello', function() { + it('should return hello world', function() { + var result = greet.hello('world'); + assert.ok(result === 'hello world', 'this is not the world!'); + }); + + it('should throw a missing name error', function() { + assert.throws(function() { + greet.hello(); + }); + }); +}); From 289c525511e36bdeb9f1af181f242c82ef336d40 Mon Sep 17 00:00:00 2001 From: Bret Ldenburg Date: Mon, 17 Jul 2017 16:15:11 -0700 Subject: [PATCH 2/3] finishing up the code for the first day of 401 class --- .eslintignore | 5 ++ .eslintrc | 21 +++++++ .gitignore | 136 ++++++++++++++++++++++++++++++++++++++++ README.md | 60 +----------------- lib/arithmetic.js | 13 ++++ lib/greet.js | 6 ++ test/arithmetic-test.js | 20 ++++++ test/greet-test.js | 2 +- 8 files changed, 204 insertions(+), 59 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .gitignore create mode 100644 lib/arithmetic.js create mode 100644 lib/greet.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..05b1cf3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +**/node_modules/* +**/vendor/* +**/*.min.js +**/coverage/* +**/build/* diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..8dc6807 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,21 @@ +{ + "rules": { + "no-console": "off", + "indent": [ "error", 2 ], + "quotes": [ "error", "single" ], + "semi": ["error", "always"], + "linebreak-style": [ "error", "unix" ] + }, + "env": { + "es6": true, + "node": true, + "mocha": true, + "jasmine": true + }, + "ecmaFeatures": { + "modules": true, + "experimentalObjectRestSpread": true, + "impliedStrict": true + }, + "extends": "eslint:recommended" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..345130c --- /dev/null +++ b/.gitignore @@ -0,0 +1,136 @@ +# Created by https://www.gitignore.io/api/osx,vim,node,macos,windows + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + +### OSX ### + +# Icon must end with two \r + +# Thumbnails + +# Files that might appear in the root of a volume + +# Directories potentially created on remote AFP share + +### Vim ### +# swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-v][a-z] +[._]sw[a-p] +# session +Session.vim +# temporary +.netrwhist +*~ +# auto-generated tag files +tags + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.gitignore.io/api/osx,vim,node,macos,windows diff --git a/README.md b/README.md index a3aca54..b3cb3dd 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,3 @@ -![CF](https://camo.githubusercontent.com/70edab54bba80edb7493cad3135e9606781cbb6b/687474703a2f2f692e696d6775722e636f6d2f377635415363382e706e67) 01: Node Ecosystem -=== +#Introduction to the Node Ecosystem -## Submission Instructions - * work in a fork of this repository - * work in a branch on your fork - * write all of your code in a directory named `lab-` + `` **e.g.** `lab-susan` - * submit a pull request to this repository - * submit a link to your pull request on canvas - * submit a question, observation, and how long you spent on canvas - -## Resources -* [node assert docs](https://nodejs.org/dist/latest-v4.x/docs/api/assert.html) -* [mocha docs](http://mochajs.org/#getting-started) - -## Requirements - -#### Configuration - -* include the following: - * **README.md** - contains documentation about your lab - * **.gitignore** - contains a robust `.gitignore` file - * **.eslintrc** - contains the provided `.eslintrc` file - * **.eslintignore** - contains the provided `.eslintignore` file - * **.package.json** - contains all necessary dependencies and developer dependencies - * **lib/** - should contain your modules - * **test/** - should contain your unit tests - -#### Feature Tasks -* create a node.js module (`greet.js`) that exports a single function - * the `greet` function should have a single parameter that should expect a string as it's input - * the `greet` function should return the input name, concatenated with "hello " - * the `greet` function should return `null` if the input is not a string -* create a node.js module named `arithmetic.js` - * this module should have `add` and `sub` methods - * the `add` method should contain 2 parameters - * these parameters should be numbers and the method should return the sum of the 2 numbers - * the `sub` method should contain 2 parameters - * these parameters should be numbers and the method should return the first number minus the second number -* decide on the expected behavior for non-number inputs - -#### Testing -* write a test the expects the greet module to return "hello world!" - * this should happen when invoked with "world!" as a parameter -* write a test for the `add` and `subtract` methods on the arithmetic module - * this should ensure that your functions work with number inputs - -#### Documentation -* write a description of your project (this should be in your `README.md` file) - -###### BONUS 1pt -* write a test that expects the greet module to return null when you use non string values -* write a test that ensures the functions work as expected with non number inputs - -## Rubric -* 2pts configuration -* 3pts feature tasks -* 3pts tests -* 2pts documentation +##This project is an introduction to the concepts of writing simple response code for the back end, and writing tests to determine if they work as intended or not. The greet.js file is a simple function that returns a greeting from whatever name parameter that is put into the function, and it requires the use of a string as well as some input. The arithmetic.js file is an object that we created two methods for, an "add" and a "sub" method. These are for adding and subtracting values that are put into their parameters. The greet-test.js file is a file that tests to see if our greeting function is working as intended and our arithmetic-test.js is another test that ensures that the arithmetic functions that we have wrote behave properly. diff --git a/lib/arithmetic.js b/lib/arithmetic.js new file mode 100644 index 0000000..de410dd --- /dev/null +++ b/lib/arithmetic.js @@ -0,0 +1,13 @@ +'use strict'; + +module.exports = exports = {}; + +exports.add = function(num1, num2) { + if (typeof num1 !== 'number' || typeof num2 !== 'number') return null; + return num1 + num2; +}; + +exports.sub = function(num1, num2) { + if (typeof num1 !== 'number' || typeof num2 !== 'number') return null; + return num1 - num2; +}; diff --git a/lib/greet.js b/lib/greet.js new file mode 100644 index 0000000..6ee2bc4 --- /dev/null +++ b/lib/greet.js @@ -0,0 +1,6 @@ +'use strict'; + +module.exports = function(name) { + if (arguments.length === 0 || typeof name !== 'string') return null; + return `hello ${name}!`; +}; diff --git a/test/arithmetic-test.js b/test/arithmetic-test.js index e69de29..269c4dc 100644 --- a/test/arithmetic-test.js +++ b/test/arithmetic-test.js @@ -0,0 +1,20 @@ +'use strict'; + +const arithmetic = require('../lib/arithmetic.js'); +const assert = require('assert'); + +describe('Arithmetic Module', function() { + describe('#add', function() { + it('should return 9', function() { + var result = arithmetic.add(3, 6); + assert.ok(result === 9, 'this did not equal what was intended'); + }); + }); + + describe('#sub', function() { + it('should return 9', function() { + var result = arithmetic.sub(19, 10); + assert.ok(result === 9, 'this did not equal what was intended'); + }); + }); +}); diff --git a/test/greet-test.js b/test/greet-test.js index e204b87..f35831f 100644 --- a/test/greet-test.js +++ b/test/greet-test.js @@ -1,6 +1,6 @@ 'use strict'; -const greet = require('..lib/greet.js'); +const greet = require('../lib/greet.js'); const assert = require('assert'); describe('#hello', function() { From 7e371c65c563b68e21a3bd82670f6a09b2efb960 Mon Sep 17 00:00:00 2001 From: Bret Ldenburg Date: Mon, 17 Jul 2017 16:49:27 -0700 Subject: [PATCH 3/3] fixed some errors with my tests and got mocha to work properly --- lib/greet.js | 2 +- test/greet-test.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/greet.js b/lib/greet.js index 6ee2bc4..fe7135a 100644 --- a/lib/greet.js +++ b/lib/greet.js @@ -1,6 +1,6 @@ 'use strict'; module.exports = function(name) { - if (arguments.length === 0 || typeof name !== 'string') return null; + if (arguments.length === 0 || typeof name !== 'string') throw new Error('this input is not a string'); return `hello ${name}!`; }; diff --git a/test/greet-test.js b/test/greet-test.js index f35831f..376bbf5 100644 --- a/test/greet-test.js +++ b/test/greet-test.js @@ -5,13 +5,13 @@ const assert = require('assert'); describe('#hello', function() { it('should return hello world', function() { - var result = greet.hello('world'); - assert.ok(result === 'hello world', 'this is not the world!'); + var result = greet('world'); + assert.ok(result === 'hello world!', 'this is not the world!'); }); it('should throw a missing name error', function() { assert.throws(function() { - greet.hello(); + greet(); }); }); });