From 325dfbbf1d6bc5511b4542f084b228fa5ede6592 Mon Sep 17 00:00:00 2001 From: Erick Date: Thu, 1 Oct 2020 03:43:05 -0400 Subject: [PATCH] Added a route to determine if a year is a leap year or not --- routes/routes.js | 94 +++++++++++++++++++++++++++--------------------- tests/tests.js | 30 ++++++++++++++-- 2 files changed, 81 insertions(+), 43 deletions(-) diff --git a/routes/routes.js b/routes/routes.js index bd091aa..3d05636 100644 --- a/routes/routes.js +++ b/routes/routes.js @@ -1,43 +1,57 @@ -const router = require('express')(); - -router.post('/factorial', (req, res) => { - - //Factorial logic goes here - let number = parseInt(req.body.number); - let fact = 1; - - for(let i =1 ;i<=number; i++){ - fact = fact * i - } - - res.status(200).send({result: fact}) - -}) - -router.post('/palindrome', (req, res) => { - //Palindrome logic goes here -}) - -router.post('/dudeney', (req, res) => { - //Dudeney Number - try { - let number = req.body.number - let sumOfDigits - const root = Math.cbrt(number) - - while (number) { - sumOfDigits += number % 10; - number = Math.floor(number / 10); - } - if (sumOfDigits == root) { - res.status(200).send({ message: "The Number is Dudeney Number" }) - } else { - res.status(200).send({ message: "The Number is Not Dudeney Number" }) - } - } catch (error) { - res.send({ Error: error }).status(500) +const router = require("express")(); + +router.post("/factorial", (req, res) => { + //Factorial logic goes here + let number = parseInt(req.body.number); + let fact = 1; + + for (let i = 1; i <= number; i++) { + fact = fact * i; + } + + res.status(200).send({ result: fact }); +}); + +router.post("/palindrome", (req, res) => { + //Palindrome logic goes here +}); + +router.post("/dudeney", (req, res) => { + //Dudeney Number + try { + let number = req.body.number; + let sumOfDigits; + const root = Math.cbrt(number); + + while (number) { + sumOfDigits += number % 10; + number = Math.floor(number / 10); } - -}) + if (sumOfDigits == root) { + res.status(200).send({ message: "The Number is Dudeney Number" }); + } else { + res.status(200).send({ message: "The Number is Not Dudeney Number" }); + } + } catch (error) { + res.send({ Error: error }).status(500); + } +}); + +router.post("/leap-year", (req, res) => { + let year = req.body.year; + let message; + + if (year % 400 === 0) { + message = `The year ${year} is a leap year`; + } else if (year % 100 === 0) { + message = `The year ${year} is not a leap year`; + } else if (year % 4 === 0) { + message = `The year ${year} is a leap year`; + } else { + message = `The year ${year} is not a leap year`; + } + + res.status(200).send({ message }); +}); module.exports = router; diff --git a/tests/tests.js b/tests/tests.js index d0bd4f7..6bd663b 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -1,4 +1,3 @@ - const chai = require("chai"); const chaiHttp = require("chai-http"); const app = require("../app"); @@ -22,6 +21,31 @@ describe("Starting tests for app.js ->", () => { } }); }); - //Add more tests here -}) \ No newline at end of file + it("Correctly checks if a given year is leap year or not", (done) => { + const leapYears = [1912, 1928, 1936, 1948, 1980, 2000, 2012]; + const nonLeapYears = [1901, 1913, 1926, 1957, 1962, 1978, 1995]; + + for (let i = 1; i < 3; i++) { + const yearsToCheck = i === 1 ? leapYears : nonLeapYears; + for (const year of yearsToCheck) { + chai + .request(app) + .post("/leap-year") + .send({ year }) + .end((err, res) => { + if (err) { + done(err); + process.exit(1); + } else { + res.body.message.should.equal( + `The year ${year} is${i === 1 ? "" : " not"} a leap year`, + ); + } + }); + } + } + + done(); + }); +});