From 07cf1c1b6600e6541d8cfac5745adc5bdc98e9ab Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:37:17 +0200 Subject: [PATCH 01/10] ETAPE 1 RED --- 3-fizzbuzz/specs/fizzbuzz.spec.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/3-fizzbuzz/specs/fizzbuzz.spec.js b/3-fizzbuzz/specs/fizzbuzz.spec.js index e69de29..80b1db4 100644 --- a/3-fizzbuzz/specs/fizzbuzz.spec.js +++ b/3-fizzbuzz/specs/fizzbuzz.spec.js @@ -0,0 +1,8 @@ +import { describe, expect, it } from 'vitest'; +const fizzBuzz = require('../src/fizzbuzz'); +describe('FizzBuzz', () => { + it('should return the number as a String', () => { + expect(fizzBuzz(1)).toBe('1'); + expect(fizzBuzz(2)).toBe('2'); + }); +}); \ No newline at end of file From 0d611de65d0bedb6ec458ff95295452e5a745029 Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:38:00 +0200 Subject: [PATCH 02/10] ETAPE 2 GREEN --- 3-fizzbuzz/src/fizzbuzz.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/3-fizzbuzz/src/fizzbuzz.js b/3-fizzbuzz/src/fizzbuzz.js index e69de29..da01d26 100644 --- a/3-fizzbuzz/src/fizzbuzz.js +++ b/3-fizzbuzz/src/fizzbuzz.js @@ -0,0 +1,4 @@ +function fizzBuzz(number) { + return String(number); +} +module.exports = fizzBuzz; \ No newline at end of file From f07fe55329a32f73f88f15d498717a8160dffbb6 Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:38:54 +0200 Subject: [PATCH 03/10] ETAPE 3 RED (FIZZ) --- 3-fizzbuzz/specs/fizzbuzz.spec.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/3-fizzbuzz/specs/fizzbuzz.spec.js b/3-fizzbuzz/specs/fizzbuzz.spec.js index 80b1db4..ed4e7dd 100644 --- a/3-fizzbuzz/specs/fizzbuzz.spec.js +++ b/3-fizzbuzz/specs/fizzbuzz.spec.js @@ -5,4 +5,10 @@ describe('FizzBuzz', () => { expect(fizzBuzz(1)).toBe('1'); expect(fizzBuzz(2)).toBe('2'); }); +}); + +it('should return "Fizz" for multiples of 3', () => { + expect(fizzBuzz(3)).toBe('Fizz'); + expect(fizzBuzz(6)).toBe('Fizz'); + expect(fizzBuzz(9)).toBe('Fizz'); }); \ No newline at end of file From 3c6920327b3708268d55547d76fcb01479237952 Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:39:52 +0200 Subject: [PATCH 04/10] ETAPE 4 GREEN (FIZZ) --- 3-fizzbuzz/src/fizzbuzz.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/3-fizzbuzz/src/fizzbuzz.js b/3-fizzbuzz/src/fizzbuzz.js index da01d26..070f256 100644 --- a/3-fizzbuzz/src/fizzbuzz.js +++ b/3-fizzbuzz/src/fizzbuzz.js @@ -1,4 +1,8 @@ function fizzBuzz(number) { - return String(number); + if (number % 3 === 0) { + return "Fizz"; + } + return String(number) } + module.exports = fizzBuzz; \ No newline at end of file From d9be5c1ba8c952514d6307991a9692abaafee627 Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:40:27 +0200 Subject: [PATCH 05/10] -ETAPE 5 RED (BUZZ) --- 3-fizzbuzz/specs/fizzbuzz.spec.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/3-fizzbuzz/specs/fizzbuzz.spec.js b/3-fizzbuzz/specs/fizzbuzz.spec.js index ed4e7dd..89370df 100644 --- a/3-fizzbuzz/specs/fizzbuzz.spec.js +++ b/3-fizzbuzz/specs/fizzbuzz.spec.js @@ -11,4 +11,9 @@ it('should return "Fizz" for multiples of 3', () => { expect(fizzBuzz(3)).toBe('Fizz'); expect(fizzBuzz(6)).toBe('Fizz'); expect(fizzBuzz(9)).toBe('Fizz'); +}); + +it('should return "Buzz" for multiples of 5', () => { + expect(fizzBuzz(5)).toBe('Buzz'); + expect(fizzBuzz(10)).toBe('Buzz'); }); \ No newline at end of file From 5ea1527f60c40c4194bff2b577ec932135fb5633 Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:40:58 +0200 Subject: [PATCH 06/10] ETAPE 6 GREEN (BUZZ) --- 3-fizzbuzz/src/fizzbuzz.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/3-fizzbuzz/src/fizzbuzz.js b/3-fizzbuzz/src/fizzbuzz.js index 070f256..f1a7b07 100644 --- a/3-fizzbuzz/src/fizzbuzz.js +++ b/3-fizzbuzz/src/fizzbuzz.js @@ -1,8 +1,11 @@ function fizzBuzz(number) { if (number % 3 === 0) { - return "Fizz"; + return 'Fizz'; } - return String(number) + if (number % 5 === 0) { + return 'Buzz'; + } + return String(number); } module.exports = fizzBuzz; \ No newline at end of file From 325ffcf0860843c4f4eeb7fc5232dc90bbd2816b Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:41:16 +0200 Subject: [PATCH 07/10] ETAPE 7 RED (FIZZBUZZ) --- 3-fizzbuzz/specs/fizzbuzz.spec.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/3-fizzbuzz/specs/fizzbuzz.spec.js b/3-fizzbuzz/specs/fizzbuzz.spec.js index 89370df..b035e39 100644 --- a/3-fizzbuzz/specs/fizzbuzz.spec.js +++ b/3-fizzbuzz/specs/fizzbuzz.spec.js @@ -16,4 +16,10 @@ it('should return "Fizz" for multiples of 3', () => { it('should return "Buzz" for multiples of 5', () => { expect(fizzBuzz(5)).toBe('Buzz'); expect(fizzBuzz(10)).toBe('Buzz'); +}); + +it('should return "FizzBuzz" for multiples of 3 and 5', () => { + expect(fizzBuzz(15)).toBe('FizzBuzz'); + expect(fizzBuzz(30)).toBe('FizzBuzz'); + expect(fizzBuzz(45)).toBe('FizzBuzz'); }); \ No newline at end of file From dc33526b97817d88112c122a296cc46d99c7e6b1 Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:42:04 +0200 Subject: [PATCH 08/10] ETAPE 8 GREEN (FIZZBUZZ) --- 3-fizzbuzz/src/fizzbuzz.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/3-fizzbuzz/src/fizzbuzz.js b/3-fizzbuzz/src/fizzbuzz.js index f1a7b07..9d0ffb3 100644 --- a/3-fizzbuzz/src/fizzbuzz.js +++ b/3-fizzbuzz/src/fizzbuzz.js @@ -1,4 +1,7 @@ function fizzBuzz(number) { + if (number % 15 === 0) { + return 'FizzBuzz'; + } if (number % 3 === 0) { return 'Fizz'; } From 65f606ad701406a37ac7e1fa737e4428243c51e4 Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:42:23 +0200 Subject: [PATCH 09/10] ETAPE 9 REFACTOR --- 3-fizzbuzz/src/fizzbuzz.js | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/3-fizzbuzz/src/fizzbuzz.js b/3-fizzbuzz/src/fizzbuzz.js index 9d0ffb3..ea74d74 100644 --- a/3-fizzbuzz/src/fizzbuzz.js +++ b/3-fizzbuzz/src/fizzbuzz.js @@ -1,14 +1,10 @@ function fizzBuzz(number) { - if (number % 15 === 0) { - return 'FizzBuzz'; - } - if (number % 3 === 0) { - return 'Fizz'; - } - if (number % 5 === 0) { - return 'Buzz'; - } - return String(number); + let result = ''; + + if (number % 3 === 0) result += 'Fizz'; + if (number % 5 === 0) result += 'Buzz'; + + return result || String(number); } module.exports = fizzBuzz; \ No newline at end of file From 75dfb608c6c0098ebd029f17fbb287f1475b4506 Mon Sep 17 00:00:00 2001 From: Mehdi-Zen Date: Thu, 23 Oct 2025 14:43:06 +0200 Subject: [PATCH 10/10] ETAPE 10 --- 3-fizzbuzz/specs/fizzbuzz.spec.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/3-fizzbuzz/specs/fizzbuzz.spec.js b/3-fizzbuzz/specs/fizzbuzz.spec.js index b035e39..2315a80 100644 --- a/3-fizzbuzz/specs/fizzbuzz.spec.js +++ b/3-fizzbuzz/specs/fizzbuzz.spec.js @@ -3,23 +3,23 @@ const fizzBuzz = require('../src/fizzbuzz'); describe('FizzBuzz', () => { it('should return the number as a String', () => { expect(fizzBuzz(1)).toBe('1'); - expect(fizzBuzz(2)).toBe('2'); + expect(fizzBuzz(4)).toBe('4'); }); -}); - -it('should return "Fizz" for multiples of 3', () => { + it('should return "Fizz" for multiples of 3', () => { expect(fizzBuzz(3)).toBe('Fizz'); expect(fizzBuzz(6)).toBe('Fizz'); - expect(fizzBuzz(9)).toBe('Fizz'); -}); - -it('should return "Buzz" for multiples of 5', () => { + }); + it('should return "Buzz" for multiples of 5', () => { expect(fizzBuzz(5)).toBe('Buzz'); expect(fizzBuzz(10)).toBe('Buzz'); -}); - -it('should return "FizzBuzz" for multiples of 3 and 5', () => { + }); + it('should return "FizzBuzz" for multiples of 3 and 5', () => { expect(fizzBuzz(15)).toBe('FizzBuzz'); expect(fizzBuzz(30)).toBe('FizzBuzz'); - expect(fizzBuzz(45)).toBe('FizzBuzz'); + }); + it.each([ + [1, '1'], [2, '2'], [3, 'Fizz'], [5, 'Buzz'], [15, 'FizzBuzz'], [7, '7'], [9, 'Fizz'], [20, 'Buzz'], [30, 'FizzBuzz'] + ])('fizzBuzz(%i) should return %s', (input, expected) => { + expect(fizzBuzz(input)).toBe(expected); + }); }); \ No newline at end of file