Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added .eslintignore
Empty file.
1 change: 1 addition & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

127 changes: 127 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# Created by https://www.gitignore.io/api/osx,node,linux,windows

### Linux ###
*~

# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*

# KDE directory preferences
.directory

# Linux trash folder which might appear on any partition or disk
.Trash-*

# .nfs files are created when an open file is removed but is still being accessed
.nfs*

### 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 ###
*.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

### 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,node,linux,windows
61 changes: 15 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,21 @@
![CF](https://camo.githubusercontent.com/70edab54bba80edb7493cad3135e9606781cbb6b/687474703a2f2f692e696d6775722e636f6d2f377635415363382e706e67) 01: 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-` + `<your name>` **e.g.** `lab-susan`
* Open a pull request to this repository
* Submit on canvas a question and observation, how long you spent, and a link to your pull request

## Resources
* [Jest Getting Started](https://facebook.github.io/jest/docs/en/getting-started.html)
* [Jest Globals](https://facebook.github.io/jest/docs/en/api.html#content)
* [Jest Expect](https://facebook.github.io/jest/docs/en/expect.html#content)

## Configuration
Configure the root of your repository with the following files and directories. Thoughfully name and organize any aditional configuration or module files.
* **README.md** - contains documentation
* **.gitignore** - contains a [robust](http://gitignore.io) `.gitignore` file
* **.eslintrc** - contains the course linter configuratoin
* **.eslintignore** - contains the course linter ignore configuration
* **lib/** - contains module definitions
* **__test__/** - contains unit tests

## Feature Tasks
## Exported Values
#### Greet Module
Create a NodeJS module in the lib/ directory named `greet.js` that exports a single function.
* The `greet` function should have a single parameter (arity of one) that should expect a string as it's input
* The `greet` function should return the input name, concatenated with "hello ": eg. ("hello susan")
* The `greet` function should return `null` if the input is not a string
Exports a single function
* The `greet` function has an arity of one
* The data type for this parameter is string
* If the parameter is a string, the `greet` function returns the parameter concatenated with `'hello '`, for example `hello katherine`
* Else the `greet` function returns `null`

#### Arithmetic Module
Create a NodeJS module in the lib/ directory named `arithmetic.js` that exports an object. This module should have `add` and `sub` methods that implament addition and subtraction.
* The `add` method should have an arity of two (define two paramiters)
* If either parameter is a non-number the function should return null
* Else return the sum of the 2 numbers
* The `sub` method should have an arity of two (define two paramiters)
* If either parameter is a non-number the function should return null
* Else return the second paramiter subtracted from the first paramiter

## Testing
#### Greet Module Tests
* Write a test that expects the greet module to return `null` when you supply non string values
* Write a test the expects the greet module to return `'hello world'`
* This should happen when invoked with `'world'` as the first argument

#### Arithmetic Module Tests
* Test each method for proper use (invoded with number arguments)
* Test each method for inproper use (invoded with one or more non-numner arguments)

## Documentation
In your README.md describe the exported values of each module defined in your lib/ directory. Every function description should include it's airty (expected number of paramiters), the expected data for each paramiter (data-type and limitations), and it's behavior (for both valid and invalued use). Feel free to write any additional information in your README.md.
Exports an object. This module has `add` and `sub` methods that implement addition and subtraction
* The `add` method has an arity of two
* The data type for these parameters is number
* If both parameters are numbers, the function returns the two numbers' sum, for example `5` for `(2,3)`
* Else the function returns `null`
* The `sub` method has an arity of two
* The data type for these parameters is number
* If both parameters are numbers, the function returns the difference of the second parameter subtracted from the first parameter, for example `-1` for `(2,3)`
* Else the function returns `null`
33 changes: 33 additions & 0 deletions __test__/arithmetic.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
'use strict';

const arithmetic = require('../lib/arithmetic.js');

test('arithmetic.add() should return null', () => {
let result = arithmetic.add();
expect(result).toEqual(null);
});

test('arithmetic.sub() should return null', () => {
let result = arithmetic.sub();
expect(result).toEqual(null);
});

test('arithmetic.add(2,\'hi\') should return null', () => {
let result = arithmetic.add(2,'hi');
expect(result).toEqual(null);
});

test('arithmetic.sub(2,\'hi\') should return null', () => {
let result = arithmetic.add(2,'hi');
expect(result).toEqual(null);
});

test('arithmetic.add(2,3) should return 5', () => {
let result = arithmetic.add(2,3);
expect(result).toEqual(5);
});

test('arithmetic.sub(2,3) should return -1', () => {
let result = arithmetic.sub(2,3);
expect(result).toEqual(-1);
});
18 changes: 18 additions & 0 deletions __test__/greet.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
'use strict';

const greet = require('../lib/greet.js');

test('greet() should return null', () => {
let result = greet();
expect(result).toEqual(null);
});

test('greet(3) should return null', () => {
let result = greet(3);
expect(result).toEqual(null);
});

test('greet(\'world\') should return "hello world"', () => {
let result = greet('world');
expect(result).toEqual('hello world');
});
7 changes: 7 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
'use strict';

// assign to name of file you're referring to

const greet = require('./lib/greet.js');

const arithmetic = require('./lib/arithmetic.js');
22 changes: 22 additions & 0 deletions lib/arithmetic.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use strict';

// Export an object that has add and sub methods that implement addition and subtraction

module.exports = {
add: (num1,num2) => {
if(typeof num1 === 'number' && typeof num2 === 'number'){
return num1 + num2;
}
else {
return null;
}
},
sub: (num1,num2) => {
if(typeof num1 === 'number' && typeof num2 === 'number'){
return num1 - num2;
}
else {
return null;
}
}
};
12 changes: 12 additions & 0 deletions lib/greet.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
'use strict';

// Export a function that takes in a name and returns "hello" + name

module.exports = name => {
if(typeof name === 'string') {
return `hello ${name}`;
}
else {
return null;
}
};
26 changes: 26 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "01-node-ecosystem",
"version": "1.0.0",
"description": "01-node-ecosystem lab",
"main": "index.js",
"directories": {
"lib": "lib"
},
"scripts": {
"test": "jest --runInBand"
},
"repository": {
"type": "git",
"url": "git+https://github.com/KatherineHanson/01-node-ecosystem.git"
},
"author": "Katherine Hanson",
"license": "ISC",
"bugs": {
"url": "https://github.com/KatherineHanson/01-node-ecosystem/issues"
},
"homepage": "https://github.com/KatherineHanson/01-node-ecosystem#readme",
"devDependencies": {},
"dependencies": {
"jest": "^21.0.2"
}
}