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/greet.js b/greet.js new file mode 100644 index 0000000..8fdb1f3 --- /dev/null +++ b/greet.js @@ -0,0 +1,9 @@ +'use strict'; + +const greeting = require('./lib/greeting.js'); + +// set name as user inputed command line argument following 'node' and filename +var name = process.argv[process.argv.length - 1]; + +greeting.welcome(name); +greeting.farewell(name); diff --git a/lib/greeting.js b/lib/greeting.js new file mode 100644 index 0000000..e074964 --- /dev/null +++ b/lib/greeting.js @@ -0,0 +1,17 @@ +'use strict'; + +module.exports = exports = {}; + +exports.welcome = function(name) { + if (/[^a-z]/i.test(name)) throw new Error('non-alphabetical characters not allowed, or no name provided'); + if (arguments.length === 0) throw new Error('no name provided'); + var welcomeMessage = `Hello and welcome, ${name}! Glad you can be here!`; + console.log(welcomeMessage); + return welcomeMessage; +}; + +exports.farewell = function(name) { + var farewellMessage = `Glad you could stay for a while, ${name}! Bye and see you next time!`; + console.log(farewellMessage); + return farewellMessage; +}; diff --git a/test/greeting-test.js b/test/greeting-test.js new file mode 100644 index 0000000..35cb231 --- /dev/null +++ b/test/greeting-test.js @@ -0,0 +1,19 @@ +'use strict'; + +const greeting = require('../lib/greeting.js'); + +const assert = require('assert'); + +describe('Greeting', function() { + describe('#welcome', function() { + it('should print a greeting message customized with the user\'s inputted name.', function() { + var result = greeting.welcome('Caleb'); + assert.ok(result === 'Hello and welcome, Caleb! Glad you can be here!', 'greeting not printed as expected'); + }); + it('should throw an error indicating a missing name or unexpected charater', function() { + assert.throws(function() { + greeting.welcome(); + }, 'error not thrown'); + }); + }); +});