diff --git a/spec/PKPass.ts b/spec/PKPass.ts index f0ed4ff..797b62d 100644 --- a/spec/PKPass.ts +++ b/spec/PKPass.ts @@ -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(); + }); + }); }); diff --git a/src/PKPass.ts b/src/PKPass.ts index 276ac56..f1147d4 100644 --- a/src/PKPass.ts +++ b/src/PKPass.ts @@ -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; }