Tell us what’s happening:
ok i don’t know how to pass test 15, its the only test that fails regarding the processManifest function,
If the input manifest object is not valid, your validateManifest function should return an object describing missing and/or invalid properties.
Here;s my code so far:
function normalizeUnits(manifest){
let newManifest = {...manifest};
if(newManifest.unit === "lb"){
newManifest.weight = newManifest.weight * 0.45;
newManifest.unit = "kg";
return newManifest
}
return newManifest
}
console.log("normalizeUnits function","\n");
console.log(normalizeUnits({containerId: 1,destination: "Aruba", weight: 933,unit: "lb",hazmat: false}));
console.log("\n","\n");
function validateManifest(manifest){
let newManifest = {...manifest};
let errors = {};
if(newManifest.hasOwnProperty("containerId") === false){
errors.containerId = "Missing";
}
if(newManifest.containerId === null || newManifest.containerId <= 0 || (Number.isInteger(newManifest.containerId) === false && newManifest.hasOwnProperty("containerId"))){
errors.containerId = "Invalid";
}
if(newManifest.hasOwnProperty("destination") === false){
errors.destination = "Missing";
}
if(newManifest.hasOwnProperty("destination") && typeof(newManifest.destination) !== "string" || newManifest.hasOwnProperty("destination") && newManifest.destination.trim()==="" ){
errors.destination = "Invalid"
}
if(newManifest.hasOwnProperty("weight") === false){
errors.weight = "Missing";
}
if(newManifest.hasOwnProperty("weight") && newManifest.weight <= 0 || newManifest.hasOwnProperty("weight") && Number.isInteger(newManifest.weight) === false || newManifest.hasOwnProperty("weight") && Number.isNaN(newManifest.weight) === true){
errors.weight = "Invalid";
}
if(newManifest.hasOwnProperty("unit") === false){
errors.unit = "Missing";
}
if(newManifest.unit !== "lb" && newManifest.hasOwnProperty("unit") && newManifest.unit !=="kg" && newManifest.hasOwnProperty("unit")){
errors.unit = "Invalid";
}
if(newManifest.hasOwnProperty("hazmat") === false){
errors.hazmat = "Missing"
}
if(newManifest.hasOwnProperty("hazmat") && newManifest.hazmat == true || newManifest.hasOwnProperty("hazmat") && newManifest.hazmat !== false){
errors.hazmat = "Invalid"
}
return errors
}
console.log("story #6 and 7")
console.log(validateManifest({containerId: 1,destination: "Santa Cruz",weight: 304,unit: "kg",hazmat: false}))
console.log("\n");
//story #8/missing elements
console.log("story #8/missing elements");
console.log(validateManifest({}));
console.log("\n");
//story #9
console.log("story #9")
console.log(validateManifest({ containerId: null, destination: "Santa Cruz", weight: 304, unit: "kg", hazmat: false }))
console.log("\n");
console.log("story #10/all invalid elementf")
console.log({ containerId: "Invalid", destination: "Invalid", weight: "Invalid", unit: "Invalid", hazmat: "Invalid" });
console.log("\n");
console.log("story #11/container Invalid");
console.log(validateManifest({containerId: -2}))
console.log("\n");
console.log("story #12, call validateManifest with ");
console.log(validateManifest({containerId: 3.50}));
console.log("\n");
console.log(validateManifest({destination: " "}));
console.log("\n");
//story #12,call validateManifest with containerId: 3.50
console.log(validateManifest({containerId: 3.50}));
//story #13 call validateManifest with {destination: ". "}
console.log(validateManifest({destination: " "}));
console.log("\n")
console.log("story #14 validateManifest with weight: NaN",);
console.log("\n");
console.log(validateManifest({weight: NaN}))
//story #15 unsolved
//story #16 is correct
//-----------------------------------
/*function processManifest(manifest){
let newManifest = validateManifest(manifest);
let normalizedManifest = normalizeUnits(manifest);
if(newManifest === "Missing" || newManifest.containerId === "Invalid"){
console.log(`Validation error: ${containerId}`);
console.log(newManifest);
}else{
console.log(`Validation success: ${containerId}`);
console.log(`Total weight: {normalizedManifest.weight}}kg`)
}
}
//processManifest({ containerId: 55, destination: "Carmel", weight: 400, unit: "lb", hazmat: false } should first log "Validation success: 55" and then log "Total weight: 180 kg"})
1
console.log("\n");
console.log(processManifest({containerId: 55,destination: "Carmel",weight: 400,unit: "lb",hamat:false}))
*/
Your code so far
function normalizeUnits(manifest){
let newManifest = {...manifest};
if(newManifest.unit === "lb"){
newManifest.weight = newManifest.weight * 0.45;
newManifest.unit = "kg";
return newManifest
}
return newManifest
}
console.log("normalizeUnits function","\n");
console.log(normalizeUnits({containerId: 1,destination: "Aruba", weight: 933,unit: "lb",hazmat: false}));
console.log("\n","\n");
function validateManifest(manifest){
let newManifest = {...manifest};
let errors = {};
if(newManifest.hasOwnProperty("containerId") === false){
errors.containerId = "Missing";
}
if(newManifest.containerId === null || newManifest.containerId <= 0 || (Number.isInteger(newManifest.containerId) === false && newManifest.hasOwnProperty("containerId"))){
errors.containerId = "Invalid";
}
if(newManifest.hasOwnProperty("destination") === false){
errors.destination = "Missing";
}
if(newManifest.hasOwnProperty("destination") && typeof(newManifest.destination) !== "string" || newManifest.hasOwnProperty("destination") && newManifest.destination.trim()==="" ){
errors.destination = "Invalid"
}
if(newManifest.hasOwnProperty("weight") === false){
errors.weight = "Missing";
}
if(newManifest.hasOwnProperty("weight") && newManifest.weight <= 0 || newManifest.hasOwnProperty("weight") && Number.isInteger(newManifest.weight) === false || newManifest.hasOwnProperty("weight") && Number.isNaN(newManifest.weight) === true){
errors.weight = "Invalid";
}
if(newManifest.hasOwnProperty("unit") === false){
errors.unit = "Missing";
}
if(newManifest.unit !== "lb" && newManifest.hasOwnProperty("unit") && newManifest.unit !=="kg" && newManifest.hasOwnProperty("unit")){
errors.unit = "Invalid";
}
if(newManifest.hasOwnProperty("hazmat") === false){
errors.hazmat = "Missing"
}
if(newManifest.hasOwnProperty("hazmat") && newManifest.hazmat == true || newManifest.hasOwnProperty("hazmat") && newManifest.hazmat !== false){
errors.hazmat = "Invalid"
}
return errors
}
console.log("story #6 and 7")
console.log(validateManifest({containerId: 1,destination: "Santa Cruz",weight: 304,unit: "kg",hazmat: false}))
console.log("\n");
//story #8/missing elements
console.log("story #8/missing elements");
console.log(validateManifest({}));
console.log("\n");
//story #9
console.log("story #9")
console.log(validateManifest({ containerId: null, destination: "Santa Cruz", weight: 304, unit: "kg", hazmat: false }))
console.log("\n");
console.log("story #10/all invalid elementf")
console.log({ containerId: "Invalid", destination: "Invalid", weight: "Invalid", unit: "Invalid", hazmat: "Invalid" });
console.log("\n");
console.log("story #11/container Invalid");
console.log(validateManifest({containerId: -2}))
console.log("\n");
console.log("story #12, call validateManifest with ");
console.log(validateManifest({containerId: 3.50}));
console.log("\n");
console.log(validateManifest({destination: " "}));
console.log("\n");
//story #12,call validateManifest with containerId: 3.50
console.log(validateManifest({containerId: 3.50}));
//story #13 call validateManifest with {destination: ". "}
console.log(validateManifest({destination: " "}));
console.log("\n")
console.log("story #14 validateManifest with weight: NaN",);
console.log("\n");
console.log(validateManifest({weight: NaN}))
//story #15 unsolved
//story #16 is correct
//-----------------------------------
/*function processManifest(manifest){
let newManifest = validateManifest(manifest);
let normalizedManifest = normalizeUnits(manifest);
if(newManifest === "Missing" || newManifest.containerId === "Invalid"){
console.log(`Validation error: ${containerId}`);
console.log(newManifest);
}else{
console.log(`Validation success: ${containerId}`);
console.log(`Total weight: {normalizedManifest.weight}}kg`)
}
}
//processManifest({ containerId: 55, destination: "Carmel", weight: 400, unit: "lb", hazmat: false } should first log "Validation success: 55" and then log "Total weight: 180 kg"})
1
console.log("\n");
console.log(processManifest({containerId: 55,destination: "Carmel",weight: 400,unit: "lb",hamat:false}))
*/
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Safari/605.1.15
Challenge Information:
Build a Cargo Manifest Validator - Build a Cargo Manifest Validator

