Added setNFCCapability implementation along with tests

This commit is contained in:
Alexander Cerutti
2021-09-19 22:45:37 +02:00
parent a3195e7d21
commit 389aa96532
2 changed files with 42 additions and 5 deletions

View File

@@ -95,4 +95,36 @@ describe("PKPass", () => {
);
});
});
describe("setNFCCapability", () => {
it("should reset instance.props['nfc'] if 'null' is passed as value", () => {
const pass = new PKPass({}, {});
pass.setNFCCapability({
encryptionPublicKey: "mimmo",
message: "No message for you here",
});
expect(pass.props["nfc"]).toEqual({
encryptionPublicKey: "mimmo",
message: "No message for you here",
});
pass.setNFCCapability(null);
expect(pass.props["nfc"]).toBeUndefined();
});
it("should not accept invalid objects", () => {
const pass = new PKPass({}, {});
pass.setNFCCapability({
// @ts-expect-error
requiresAuth: false,
encryptionPublicKey: "Nope",
});
expect(pass.props["nfc"]).toBeUndefined();
});
});
});

View File

@@ -388,16 +388,21 @@ export default class PKPass extends Bundle {
* Allows to specify details to make this, an
* NFC-capable pass.
*
* Pass `null` as parameter to remove it at all.
*
* @see https://developer.apple.com/documentation/walletpasses/pass/nfc
* @param data
* @returns
*/
setNFCCapability(data: Schemas.NFC): this {
/**
* @TODO implement
* @TODO specify a way to get current one deleted
*/
setNFCCapability(nfc: Schemas.NFC | null): this {
if (nfc === null) {
delete this[propsSymbol]["nfc"];
return this;
}
this[propsSymbol]["nfc"] =
Schemas.getValidated(nfc, Schemas.NFC) ?? undefined;
return this;
}