diff --git a/.test-summary/TEST_SUMMARY.md b/.test-summary/TEST_SUMMARY.md new file mode 100644 index 000000000..94e38b02d --- /dev/null +++ b/.test-summary/TEST_SUMMARY.md @@ -0,0 +1,13 @@ +## Test Summary + +**Mentors**: For more information on how to review homework assignments, please refer to the [Review Guide](https://github.com/HackYourFuture/mentors/blob/main/assignment-support/review-guide.md). + +### 1-JavaScript - Week3 + +| Exercise | Passed | Failed | ESLint | +|----------------------------|--------|--------|--------| +| ex1-doubleEvenNumbers.test | 1 | - | ✓ | +| ex2-mondaysWorth.test | 2 | - | ✓ | +| ex3-lemonAllergy.test | 3 | - | ✓ | +| ex4-observable | 3 | - | ✓ | +| ex5-wallet | 5 | - | ✓ | diff --git a/1-JavaScript/Week3/assignment/ex1-doubleEvenNumbers.test.js b/1-JavaScript/Week3/assignment/ex1-doubleEvenNumbers.test.js index ff706f8db..57d814cc7 100644 --- a/1-JavaScript/Week3/assignment/ex1-doubleEvenNumbers.test.js +++ b/1-JavaScript/Week3/assignment/ex1-doubleEvenNumbers.test.js @@ -11,14 +11,9 @@ Let's rewrite it (or _refactor_ it, as experienced developers would call it): ------------------------------------------------------------------------------*/ // ! Function to be tested function doubleEvenNumbers(numbers) { - // TODO rewrite the function body using `map` and `filter`. - const newNumbers = []; - for (let i = 0; i < numbers.length; i++) { - if (numbers[i] % 2 === 0) { - newNumbers.push(numbers[i] * 2); - } - } - return newNumbers; + return numbers + .filter(number => number % 2 === 0) + .map(number => number * 2); } // ! Unit test (using Jest) diff --git a/1-JavaScript/Week3/assignment/ex2-mondaysWorth.test.js b/1-JavaScript/Week3/assignment/ex2-mondaysWorth.test.js index d4ce4b45e..36100be7d 100644 --- a/1-JavaScript/Week3/assignment/ex2-mondaysWorth.test.js +++ b/1-JavaScript/Week3/assignment/ex2-mondaysWorth.test.js @@ -30,8 +30,11 @@ const mondayTasks = [ const hourlyRate = 25; -function computeEarnings(/* TODO parameter(s) go here */) { - // TODO complete this function +function computeEarnings(tasks, hourlyRate) { + const total = tasks + .map(task => task.duration / 60 * hourlyRate) + .reduce((sum, value) => sum + value, 0); + return `€${total.toFixed(2)}`; } // ! Unit tests (using Jest) diff --git a/1-JavaScript/Week3/assignment/ex3-lemonAllergy.test.js b/1-JavaScript/Week3/assignment/ex3-lemonAllergy.test.js index 8a11a5fad..50a5454b8 100644 --- a/1-JavaScript/Week3/assignment/ex3-lemonAllergy.test.js +++ b/1-JavaScript/Week3/assignment/ex3-lemonAllergy.test.js @@ -25,26 +25,30 @@ const fruitBasket = [ ]; // ! Function under test -function sanitizeFruitBasket(/* TODO parameter(s) go here */) { - // TODO complete this function + +function sanitizeFruitBasket(basket, fruitToRemove) { + return basket.filter(fruit => fruit !== fruitToRemove); } + // ! Unit tests (using Jest) describe('js-wk3-ex3-lemonAllergy', () => { test('sanitizeFruitBasket should take two parameters', () => { - // TODO replace next line with your code - expect(false).toBe(true); + + sanitizeFruitBasket.length; + expect(sanitizeFruitBasket.length).toBe(2); }); test('sanitizeFruitBasket should not modify the original `fruitBasket` array', () => { // Save the original contents of the fruit basket const originalFruitBasketContents = [...fruitBasket]; - // TODO replace next line with your code - expect(false).toBe(true); + + sanitizeFruitBasket(fruitBasket, 'lemon'); + expect(fruitBasket).toEqual(originalFruitBasketContents); }); test('sanitizeFruitBasket should return a new array that does not include the unwanted `lemon`', () => { - // TODO replace next line with your code - expect(false).toBe(true); + const newBasket = sanitizeFruitBasket(fruitBasket, 'lemon'); + expect(newBasket.includes('lemon')).toBe(false); }); }); diff --git a/1-JavaScript/Week3/assignment/ex4-observable/ex4-observable.js b/1-JavaScript/Week3/assignment/ex4-observable/ex4-observable.js index a729822bc..6e02c9d50 100644 --- a/1-JavaScript/Week3/assignment/ex4-observable/ex4-observable.js +++ b/1-JavaScript/Week3/assignment/ex4-observable/ex4-observable.js @@ -16,10 +16,10 @@ export function createObservable() { const subscribers = []; return { subscribe(subscriber) { - // TODO complete this function + subscribers.push(subscriber); }, notify(message) { - // TODO complete this function + subscribers.forEach(subscriber => subscriber(message)); }, }; } diff --git a/1-JavaScript/Week3/assignment/ex5-wallet/index.js b/1-JavaScript/Week3/assignment/ex5-wallet/index.js index 215446ca8..20c33c09f 100644 --- a/1-JavaScript/Week3/assignment/ex5-wallet/index.js +++ b/1-JavaScript/Week3/assignment/ex5-wallet/index.js @@ -20,6 +20,16 @@ function createWallet(name, cash = 0) { return amount; } + function transferInto(wallet, amount) { + console.log( + `Transferring ${eurosFormatter.format(amount)} from ${name} to ${wallet.getName()}` + ); + const withdrawnAmount = withdraw(amount); + wallet.deposit(withdrawnAmount); + } + + + function transferInto(wallet, amount) { console.log( `Transferring ${eurosFormatter.format(amount)} from ${name} to ${ @@ -75,7 +85,7 @@ const quiz = { b: 'cash, name', c: 'amount, this, wallet' }, - answer: '?', + answer: 'b', }, q2: { question: 'What is in the Call Stack, from top to bottom?', @@ -84,7 +94,7 @@ const quiz = { b: 'anonymous, transferInto', c: 'transferInto, anonymous' }, - answer: '?', + answer: 'c', }, q3: { question: 'What tooltip appears when hovering over the third debug button?', @@ -93,7 +103,7 @@ const quiz = { b: 'Step out of current function', c: 'Step' }, - answer: '?', + answer: 'a', }, q4: { question: 'What is displayed in the console?', @@ -102,7 +112,7 @@ const quiz = { b: 'Transferring € 50,00 from Jack to undefined', c: 'Transferring € 50,00 from Jack to Jane' }, - answer: '?', + answer: 'a', }, q5: { question: 'The owner of the wallet with insufficient funds is:', @@ -111,6 +121,6 @@ const quiz = { b: 'Joe', c: 'Jane' }, - answer: '?', + answer: 'c', }, }; diff --git a/1-JavaScript/Week3/test-reports/ex1-doubleEvenNumbers.test.report.txt b/1-JavaScript/Week3/test-reports/ex1-doubleEvenNumbers.test.report.txt new file mode 100644 index 000000000..92768a09a --- /dev/null +++ b/1-JavaScript/Week3/test-reports/ex1-doubleEvenNumbers.test.report.txt @@ -0,0 +1,13 @@ +*** Unit Test Error Report *** + + PASS 1-JavaScript/Week3/assignment/ex1-doubleEvenNumbers.test.js + js-wk3-ex1-doubleEvenNumbers + ✅ doubleEvenNumbers should take the even numbers and double them (1 ms) + +Test Suites: 1 passed, 1 total +Tests: 1 passed, 1 total +Snapshots: 0 total +Time: 0.249 s, estimated 1 s +Ran all test suites matching /\/Users\/dashatkachenko\/Desktop\/Assignments-Cohort54\/1-JavaScript\/Week3\/assignment\/ex1-doubleEvenNumbers.test.js/i. +No linting errors detected. +No spelling errors detected. diff --git a/1-JavaScript/Week3/test-reports/ex2-mondaysWorth.test.report.txt b/1-JavaScript/Week3/test-reports/ex2-mondaysWorth.test.report.txt new file mode 100644 index 000000000..74aa7eb1f --- /dev/null +++ b/1-JavaScript/Week3/test-reports/ex2-mondaysWorth.test.report.txt @@ -0,0 +1,14 @@ +*** Unit Test Error Report *** + + PASS 1-JavaScript/Week3/assignment/ex2-mondaysWorth.test.js + js-wk3-mondaysWorth + ✅ computeEarnings should take two parameters + ✅ computeEarnings should compute the earnings as a formatted Euro amount (1 ms) + +Test Suites: 1 passed, 1 total +Tests: 2 passed, 2 total +Snapshots: 0 total +Time: 0.248 s, estimated 1 s +Ran all test suites matching /\/Users\/dashatkachenko\/Desktop\/Assignments-Cohort54\/1-JavaScript\/Week3\/assignment\/ex2-mondaysWorth.test.js/i. +No linting errors detected. +No spelling errors detected. diff --git a/1-JavaScript/Week3/test-reports/ex3-lemonAllergy.test.report.txt b/1-JavaScript/Week3/test-reports/ex3-lemonAllergy.test.report.txt new file mode 100644 index 000000000..b093c0174 --- /dev/null +++ b/1-JavaScript/Week3/test-reports/ex3-lemonAllergy.test.report.txt @@ -0,0 +1,15 @@ +*** Unit Test Error Report *** + + PASS 1-JavaScript/Week3/assignment/ex3-lemonAllergy.test.js + js-wk3-ex3-lemonAllergy + ✅ sanitizeFruitBasket should take two parameters + ✅ sanitizeFruitBasket should not modify the original `fruitBasket` array + ✅ sanitizeFruitBasket should return a new array that does not include the unwanted `lemon` + +Test Suites: 1 passed, 1 total +Tests: 3 passed, 3 total +Snapshots: 0 total +Time: 0.241 s, estimated 1 s +Ran all test suites matching /\/Users\/dashatkachenko\/Desktop\/Assignments-Cohort54\/1-JavaScript\/Week3\/assignment\/ex3-lemonAllergy.test.js/i. +No linting errors detected. +No spelling errors detected. diff --git a/1-JavaScript/Week3/test-reports/ex4-observable.report.txt b/1-JavaScript/Week3/test-reports/ex4-observable.report.txt new file mode 100644 index 000000000..0a6776965 --- /dev/null +++ b/1-JavaScript/Week3/test-reports/ex4-observable.report.txt @@ -0,0 +1,15 @@ +*** Unit Test Error Report *** + + PASS 1-JavaScript/Week3/assignment/ex4-observable/ex4-observable.test.js + js-wk3-ex4-observable + ✅ createObservable should exist and be a function (1 ms) + ✅ createObservable should return an object with `subscribe` and a `notify` function properties + ✅ observable should notify all subscribers of any notification + +Test Suites: 1 passed, 1 total +Tests: 3 passed, 3 total +Snapshots: 0 total +Time: 0.125 s, estimated 1 s +Ran all test suites matching /\/Users\/dashatkachenko\/Desktop\/Assignments-Cohort54\/1-JavaScript\/Week3\/assignment\/ex4-observable\/ex4-observable.test.js/i. +No linting errors detected. +No spelling errors detected. diff --git a/1-JavaScript/Week3/test-reports/ex5-wallet.report.txt b/1-JavaScript/Week3/test-reports/ex5-wallet.report.txt new file mode 100644 index 000000000..4fd4c1136 --- /dev/null +++ b/1-JavaScript/Week3/test-reports/ex5-wallet.report.txt @@ -0,0 +1,17 @@ +*** Unit Test Error Report *** + + PASS .dist/1-JavaScript/Week3/unit-tests/ex5-wallet.test.js + js-wk3-ex5-wallet + ✅ q1: At line 24, which variables are in the scope marked Closure? + ✅ q2: What is in the Call Stack, from top to bottom? (1 ms) + ✅ q3: What tooltip appears when hovering over the third debug button? + ✅ q4: What is displayed in the console? + ✅ q5: The owner of the wallet with insufficient funds is? + +Test Suites: 1 passed, 1 total +Tests: 5 passed, 5 total +Snapshots: 0 total +Time: 0.219 s, estimated 1 s +Ran all test suites matching /\/Users\/dashatkachenko\/Desktop\/Assignments-Cohort54\/.dist\/1-JavaScript\/Week3\/unit-tests\/ex5-wallet.test.js/i. +No linting errors detected. +No spelling errors detected.