Added implementation of transitType along with tests to be modified yet and tested when we'll have a good content saving

This commit is contained in:
Alexander Cerutti
2021-09-21 22:28:57 +02:00
parent 461caaaed7
commit 9d76856d67
2 changed files with 68 additions and 9 deletions

View File

@@ -338,4 +338,55 @@ describe("PKPass", () => {
expect(pass.props["barcodes"]).toBe(undefined); expect(pass.props["barcodes"]).toBe(undefined);
}); });
}); });
describe("transitType", () => {
it("should accept a new value only if the pass is a boarding pass", () => {
const mockBPPassJSON = Buffer.from(
JSON.stringify({
boardingPass: {},
}),
);
const mockCPPassJSON = Buffer.from(
JSON.stringify({
coupon: {},
}),
);
const passBP = new PKPass(
{
"pass.json": mockBPPassJSON,
},
{},
);
const passCP = new PKPass(
{
"pass.json": mockCPPassJSON,
},
{},
);
/**
* @TODO fix this test when props setup
* will be complete
*/
/* expect(() => {
passBP.transitType = "PKTransitTypeAir";
}).toThrowError(
TypeError,
"Cannot set transitType on a pass with type different from 'boardingPass'.",
); */
// expect(passBP.transitType).toBe("PKTransitTypeAir");
/* expect(
() => (passCP.transitType = "PKTransitTypeAir"),
).toThrowError(
TypeError,
"Cannot set transitType on a pass with type different from 'boardingPass'.",
);
expect(passCP.transitType).toBeUndefined(); */
});
});
}); });

View File

@@ -141,11 +141,24 @@ export default class PKPass extends Bundle {
*/ */
set transitType(value: TransitTypes) { set transitType(value: TransitTypes) {
if (!this[propsSymbol].boardingPass) {
throw new TypeError(
"Cannot set transitType on a pass with type different from 'boardingPass'.",
);
}
/** /**
* @TODO implement * @TODO Make getValidated more explicit in case of error.
* @TODO validate against schema * @TODO maybe make an automated error.
* @TODO save into props
*/ */
if (!Schemas.getValidated(value, Schemas.TransitType)) {
throw new TypeError(
`Cannot set transitType to '${value}': invalid type. Expected one of PKTransitTypeAir, PKTransitTypeBoat, PKTransitTypeBus, PKTransitTypeGeneric, PKTransitTypeTrain.`,
);
}
this[propsSymbol]["boardingPass"].transitType = value;
} }
/** /**
@@ -154,12 +167,7 @@ export default class PKPass extends Bundle {
*/ */
get transitType(): TransitTypes { get transitType(): TransitTypes {
/** return this[propsSymbol]["boardingPass"]?.transitType;
* @TODO implement
* @TODO read from props
*/
return undefined;
} }
// **************************** // // **************************** //