From e1336863b99cd8764a70454b8e4262ea277b76e1 Mon Sep 17 00:00:00 2001 From: Alaa Date: Tue, 2 Sep 2025 22:31:27 +0200 Subject: [PATCH] Alaa_Nasher-w3-JavaScript --- .test-summary/TEST_SUMMARY.md | 13 +++++++++++++ .../assignment/ex1-doubleEvenNumbers.test.js | 18 +++++++++++------- .../Week3/assignment/ex2-mondaysWorth.test.js | 10 ++++++++-- .../Week3/assignment/ex3-lemonAllergy.test.js | 15 +++++++++------ .../ex4-observable/ex4-observable.js | 2 ++ .../Week3/assignment/ex5-wallet/index.js | 14 ++++++-------- .../ex1-doubleEvenNumbers.test.report.txt | 18 ++++++++++++++++++ .../ex2-mondaysWorth.test.report.txt | 14 ++++++++++++++ .../ex3-lemonAllergy.test.report.txt | 15 +++++++++++++++ .../test-reports/ex4-observable.report.txt | 15 +++++++++++++++ .../Week3/test-reports/ex5-wallet.report.txt | 17 +++++++++++++++++ 11 files changed, 128 insertions(+), 23 deletions(-) create mode 100644 .test-summary/TEST_SUMMARY.md create mode 100644 1-JavaScript/Week3/test-reports/ex1-doubleEvenNumbers.test.report.txt create mode 100644 1-JavaScript/Week3/test-reports/ex2-mondaysWorth.test.report.txt create mode 100644 1-JavaScript/Week3/test-reports/ex3-lemonAllergy.test.report.txt create mode 100644 1-JavaScript/Week3/test-reports/ex4-observable.report.txt create mode 100644 1-JavaScript/Week3/test-reports/ex5-wallet.report.txt 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..ef22a8883 100644 --- a/1-JavaScript/Week3/assignment/ex1-doubleEvenNumbers.test.js +++ b/1-JavaScript/Week3/assignment/ex1-doubleEvenNumbers.test.js @@ -12,13 +12,17 @@ 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; + const evenMumbers = numbers + .filter((num) => num % 2 === 0) + .map((num) => num * 2); + + // const newNumbers = []; + // for (let i = 0; i < numbers.length; i++) { + // if (numbers[i] % 2 === 0) { + // newNumbers.push(numbers[i] * 2); + // } + // } + return evenMumbers; } // ! 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..06f41a3fe 100644 --- a/1-JavaScript/Week3/assignment/ex2-mondaysWorth.test.js +++ b/1-JavaScript/Week3/assignment/ex2-mondaysWorth.test.js @@ -1,3 +1,5 @@ +const { duration } = require('moment/moment'); + /*------------------------------------------------------------------------------ Full description atL https://github.com/HackYourFuture/Assignments/tree/main/1-JavaScript/Week4#exercise-2-whats-your-monday-worth @@ -30,10 +32,14 @@ const mondayTasks = [ const hourlyRate = 25; -function computeEarnings(/* TODO parameter(s) go here */) { +function computeEarnings(tasks, rate /* TODO parameter(s) go here */) { // TODO complete this function + const hourlyRate = tasks + .map((task) => (task.duration / 60) * rate) + .reduce((sum, num) => sum + num); + return `€${hourlyRate.toFixed(2)}`; } - +//console.log(computeEarnings(mondayTasks, hourlyRate)); // ! Unit tests (using Jest) describe('js-wk3-mondaysWorth', () => { test('computeEarnings should take two parameters', () => { diff --git a/1-JavaScript/Week3/assignment/ex3-lemonAllergy.test.js b/1-JavaScript/Week3/assignment/ex3-lemonAllergy.test.js index 8a11a5fad..2a0a910c8 100644 --- a/1-JavaScript/Week3/assignment/ex3-lemonAllergy.test.js +++ b/1-JavaScript/Week3/assignment/ex3-lemonAllergy.test.js @@ -25,26 +25,29 @@ const fruitBasket = [ ]; // ! Function under test -function sanitizeFruitBasket(/* TODO parameter(s) go here */) { +function sanitizeFruitBasket(fruit, name) { // TODO complete this function + return fruit.filter((ele) => ele !== name); } // ! 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); + 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, 'banana'); + expect(fruitBasket).toEqual(originalFruitBasketContents); + // expect(false).toBe(true); }); 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 modifiedFruitBasket = ['apple', 'grapefruit', 'banana', 'watermelon']; + const result = sanitizeFruitBasket(fruitBasket, 'lemon'); + expect(result).toEqual(modifiedFruitBasket); }); }); diff --git a/1-JavaScript/Week3/assignment/ex4-observable/ex4-observable.js b/1-JavaScript/Week3/assignment/ex4-observable/ex4-observable.js index a729822bc..a04ed484e 100644 --- a/1-JavaScript/Week3/assignment/ex4-observable/ex4-observable.js +++ b/1-JavaScript/Week3/assignment/ex4-observable/ex4-observable.js @@ -17,9 +17,11 @@ export function createObservable() { return { subscribe(subscriber) { // TODO complete this function + return subscribers.push(subscriber); }, notify(message) { // TODO complete this function + return subscribers.map((func) => func(message)); }, }; } diff --git a/1-JavaScript/Week3/assignment/ex5-wallet/index.js b/1-JavaScript/Week3/assignment/ex5-wallet/index.js index 215446ca8..872064ab1 100644 --- a/1-JavaScript/Week3/assignment/ex5-wallet/index.js +++ b/1-JavaScript/Week3/assignment/ex5-wallet/index.js @@ -22,9 +22,7 @@ function createWallet(name, cash = 0) { function transferInto(wallet, amount) { console.log( - `Transferring ${eurosFormatter.format(amount)} from ${name} to ${ - wallet.name - }` + `Transferring ${eurosFormatter.format(amount)} from ${name} to ${wallet.getName()}` ); const withdrawnAmount = withdraw(amount); wallet.deposit(withdrawnAmount); @@ -75,7 +73,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 +82,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 +91,7 @@ const quiz = { b: 'Step out of current function', c: 'Step' }, - answer: '?', + answer: 'a', }, q4: { question: 'What is displayed in the console?', @@ -102,7 +100,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 +109,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..0c225c785 --- /dev/null +++ b/1-JavaScript/Week3/test-reports/ex1-doubleEvenNumbers.test.report.txt @@ -0,0 +1,18 @@ +*** 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 (2 ms) + +Test Suites: 1 passed, 1 total +Tests: 1 passed, 1 total +Snapshots: 0 total +Time: 0.411 s, estimated 1 s +Ran all test suites matching /\/Users\/Alaa\/Desktop\/JavaScript-Cohort54\/1-JavaScript\/Week3\/assignment\/ex1-doubleEvenNumbers.test.js/i. +No linting errors detected. + + +*** Spell Checker Report *** + +1-JavaScript/Week3/assignment/ex1-doubleEvenNumbers.test.js:15:13 - Unknown word (Mumbers) +1-JavaScript/Week3/assignment/ex1-doubleEvenNumbers.test.js:25:14 - Unknown word (Mumbers) 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..05ec434af --- /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 (3 ms) + ✅ 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.879 s +Ran all test suites matching /\/Users\/Alaa\/Desktop\/JavaScript-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..dba3f51fd --- /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 (2 ms) + ✅ sanitizeFruitBasket should not modify the original `fruitBasket` array (1 ms) + ✅ 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.472 s, estimated 1 s +Ran all test suites matching /\/Users\/Alaa\/Desktop\/JavaScript-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..ce90d1c41 --- /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 (2 ms) + ✅ createObservable should return an object with `subscribe` and a `notify` function properties (1 ms) + ✅ observable should notify all subscribers of any notification (2 ms) + +Test Suites: 1 passed, 1 total +Tests: 3 passed, 3 total +Snapshots: 0 total +Time: 0.515 s +Ran all test suites matching /\/Users\/Alaa\/Desktop\/JavaScript-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..7a74a2f8b --- /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? (2 ms) + ✅ q2: What is in the Call Stack, from top to bottom? + ✅ q3: What tooltip appears when hovering over the third debug button? (1 ms) + ✅ 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.558 s, estimated 1 s +Ran all test suites matching /\/Users\/Alaa\/Desktop\/JavaScript-Cohort54\/.dist\/1-JavaScript\/Week3\/unit-tests\/ex5-wallet.test.js/i. +No linting errors detected. +No spelling errors detected.