Hello,
I’m having difficulty passing the last 4 tests, but my code functions as described and passes all unit and functional tests.
Code: Glitch :・゚✧
Live App: https://broadleaf-jealous-mine.glitch.me
It returns “invalid number”:
It returns “invalid number and unit”:
All 16 unit tests pass, all 5 functional tests pass
Output from the feeCodeCamp tests:
Unit tests:
const chai = require("chai");
let assert = chai.assert;
const ConvertHandler = require("../controllers/convertHandler.js");
let convertHandler = new ConvertHandler();
suite("Unit Tests", function () {
test("whole number input validation", function () {
assert.equal(convertHandler.getNum("2mil"), 2);
assert.equal(convertHandler.getNum("100kg"), 100);
});
test("decimal number input validation", function () {
assert.equal(convertHandler.getNum("1.99 liters"), 1.99);
assert.equal(convertHandler.getNum("2.5 kg"), 2.5);
});
test("fractional number input validation", function () {
assert.equal(convertHandler.getNum("1/12 lbs"), 1 / 12);
assert.equal(convertHandler.getNum("3/4 pounds"), 3 / 4);
});
test("fractional number with a decimal input validation", function () {
assert.equal(convertHandler.getNum("3.4/12 km"), 3.4 / 12);
assert.equal(convertHandler.getNum("3/4.1kilometers"), 3 / 4.1);
});
test("double fraction input validation", function () {
assert.notEqual(convertHandler.getNum("2/3/4miles"), "2/3/4");
assert.notEqual(convertHandler.getNum("4/3/4liters"), "4/3/4");
});
test("no number defaults to 1", function () {
assert.equal(convertHandler.getNum("kg"), "1");
assert.equal(convertHandler.getNum("miles"), "1");
});
test("valid input metric & imperial units", function () {
assert.equal(convertHandler.getUnit("KG"), "kg");
assert.equal(convertHandler.getUnit("MI"), "mi");
assert.equal(convertHandler.getUnit("KM"), "km");
assert.equal(convertHandler.getUnit("GAL"), "gal");
assert.equal(convertHandler.getUnit("GAL"), "gal");
assert.equal(convertHandler.getUnit("L"), "L");
assert.equal(convertHandler.getUnit("LBS"), "lbs");
});
test("test for invalid input units", function () {
assert.equal(convertHandler.getUnit("CM"), undefined);
assert.equal(convertHandler.getUnit("RPM"), undefined);
});
test("test for conversion return units", function () {
assert.equal(convertHandler.getReturnUnit("KG"), "lbs");
assert.equal(convertHandler.getReturnUnit("MI"), "km");
assert.equal(convertHandler.getReturnUnit("KM"), "mi");
assert.equal(convertHandler.getReturnUnit("GAL"), "L");
assert.equal(convertHandler.getReturnUnit("L"), "gal");
assert.equal(convertHandler.getReturnUnit("LBS"), "kg");
});
test("test for units spelled out", function () {
assert.equal(convertHandler.spellOutUnit("KG"), "kilograms");
assert.equal(convertHandler.spellOutUnit("LBS"), "pounds");
assert.equal(convertHandler.spellOutUnit("KM"), "kilometers");
assert.equal(convertHandler.spellOutUnit("MI"), "miles");
assert.equal(convertHandler.spellOutUnit("GAL"), "gallons");
assert.equal(convertHandler.spellOutUnit("L"), "liters");
});
test("test for converting kg to lbs", function () {
assert.equal(convertHandler.convert(2, "KG"), 4.40925);
assert.equal(convertHandler.convert(5.567, "KG"), 12.27314);
});
test("test for converting lbs to kg", function () {
assert.equal(convertHandler.convert(40, "LBS"), 18.14368);
});
test("test for converting km to mi", function () {
assert.equal(convertHandler.convert(90, "KM"), 55.92355);
});
test("test for converting mi to km", function () {
assert.equal(convertHandler.convert(100, "MI"), 160.934);
assert.equal(convertHandler.convert(4 / 5, "MI"), 1.28747);
});
test("test for converting gal to liters", function () {
assert.equal(convertHandler.convert(4, "GAL"), 15.14164);
});
test("test for converting liters to gal", function () {
assert.equal(convertHandler.convert(5, "L"), 1.32086);
});
});
Functional tests:
const chaiHttp = require("chai-http");
const chai = require("chai");
let assert = chai.assert;
const server = require("../server");
chai.use(chaiHttp);
suite("Functional Tests", function () {
suite("GET request at /api/convert to convert", () => {
test("10L Conversion to Gallons (Valid)", (done) => {
chai
.request(server)
.get("/api/convert")
.query({ input: "10L" })
.end((err, res) => {
assert.equal(res.status, 200);
assert.equal(res.body.initNum, 10);
assert.equal(res.body.initUnit, "L");
assert.equal(res.body.returnNum, 2.64172, 0.1);
assert.equal(res.body.returnUnit, "gal");
done();
});
});
});
suite("GET request for invalid unit input", () => {
test("32g (Invalid) to return invalid", (done) => {
chai
.request(server)
.get("/api/convert")
.query({ input: "32g" })
.end((err, res) => {
assert.equal(res.status, 200);
assert.equal(res.body.initUnit, undefined);
assert.equal(res.text, "invalid unit");
done();
});
});
});
suite("GET request for invalid fraction input", () => {
test("3/7.2/4kg (Invalid) to return invalid", (done) => {
chai
.request(server)
.get("/api/convert")
.query({ input: "3/7.2/4kg" })
.end((err, res) => {
assert.equal(res.status, 200);
assert.equal(res.body.initUnit, undefined);
assert.equal(res.text, "invalid number");
done();
});
});
});
suite("GET request for invalid fraction and unit", () => {
test("3/7.2/4kilomegagram (Invalid) to return invalid", (done) => {
chai
.request(server)
.get("/api/convert")
.query({ input: "3/7.2/4kilomegagram" })
.end((err, res) => {
assert.equal(res.status, 200);
assert.equal(res.body.initUnit, undefined);
assert.equal(res.text, "invalid number and unit");
done();
});
});
});
suite("GET request at /api/convert to convert with no number", () => {
test("[No number]kg Conversion to Gallons (Valid)", (done) => {
chai
.request(server)
.get("/api/convert")
.query({ input: "kg" })
.end((err, res) => {
assert.equal(res.status, 200);
assert.equal(res.body.initNum, 1);
assert.equal(res.body.initUnit, "kg");
assert.equal(res.body.returnNum, 2.20462, 0.1);
assert.equal(res.body.returnUnit, "lbs");
done();
});
});
});
});
I’m thinking its either the environment variable or syntax. Maybe glitch?
-Wes