diff --git a/parts/4/blogApp/package.json b/parts/4/blogApp/package.json index 46a1109..66dab5e 100644 --- a/parts/4/blogApp/package.json +++ b/parts/4/blogApp/package.json @@ -5,7 +5,7 @@ "scripts": { "start": "node src/app.js", "dev": "node --watch src/app.js", - "test": "echo \"Error: no test specified\" && exit 1" + "test": "node --test" }, "author": "", "license": "ISC", diff --git a/parts/4/blogApp/src/utils.js b/parts/4/blogApp/src/utils.js new file mode 100644 index 0000000..30f4ac3 --- /dev/null +++ b/parts/4/blogApp/src/utils.js @@ -0,0 +1,16 @@ +const reverse = (string) => { + return string.split("").reverse().join(""); +}; + +const average = (array) => { + const reducer = (sum, item) => { + return sum + item; + }; + + return array.length === 0 ? 0 : array.reduce(reducer, 0) / array.length; +}; + +module.exports = { + reverse, + average, +}; diff --git a/parts/4/blogApp/tests/average.test.js b/parts/4/blogApp/tests/average.test.js new file mode 100644 index 0000000..a7f56f5 --- /dev/null +++ b/parts/4/blogApp/tests/average.test.js @@ -0,0 +1,18 @@ +const { test, describe } = require('node:test') +const assert = require('node:assert') + +const average = require('../src/utils').average + +describe('average', () => { + test('of one value is the value itself', () => { + assert.strictEqual(average([1]), 1) + }) + + test('of many is calculated right', () => { + assert.strictEqual(average([1, 2, 3, 4, 5, 6]), 3.5) + }) + + test('of empty array is zero', () => { + assert.strictEqual(average([]), 0) + }) +}) \ No newline at end of file diff --git a/parts/4/blogApp/tests/reverse.test.js b/parts/4/blogApp/tests/reverse.test.js new file mode 100644 index 0000000..59f044d --- /dev/null +++ b/parts/4/blogApp/tests/reverse.test.js @@ -0,0 +1,22 @@ +const { test } = require('node:test') +const assert = require('node:assert') + +const reverse = require('../src/utils.js').reverse + +test('reverse of a', () => { + const result = reverse('a') + + assert.strictEqual(result, 'a') +}) + +test('reverse of react', () => { + const result = reverse('react') + + assert.strictEqual(result, 'tcaer') +}) + +test('reverse of saippuakauppias', () => { + const result = reverse('saippuakauppias') + + assert.strictEqual(result, 'saippuakauppias') +}) \ No newline at end of file