diff --git a/spec/PKPass.ts b/spec/PKPass.ts index 26b29bd..4d780ef 100644 --- a/spec/PKPass.ts +++ b/spec/PKPass.ts @@ -1,4 +1,5 @@ import { filesSymbol } from "../lib/Bundle"; +import FieldsArray from "../lib/FieldsArray"; import { default as PKPass, localizationSymbol, @@ -455,6 +456,77 @@ describe("PKPass", () => { }); }); + describe("fields getters", () => { + it("should throw error if a type has not been defined", () => { + expect(() => pass.primaryFields).toThrowError( + TypeError, + "Cannot read properties of undefined (reading 'primaryFields')", + ); + expect(() => pass.secondaryFields).toThrowError( + TypeError, + "Cannot read properties of undefined (reading 'secondaryFields')", + ); + expect(() => pass.auxiliaryFields).toThrowError( + TypeError, + "Cannot read properties of undefined (reading 'auxiliaryFields')", + ); + expect(() => pass.headerFields).toThrowError( + TypeError, + "Cannot read properties of undefined (reading 'headerFields')", + ); + expect(() => pass.backFields).toThrowError( + TypeError, + "Cannot read properties of undefined (reading 'backFields')", + ); + }); + + it("should return an instance of FieldsArray if a type have been set", () => { + pass.type = "boardingPass"; + + expect(pass.primaryFields).toBeInstanceOf(FieldsArray); + expect(pass.secondaryFields).toBeInstanceOf(FieldsArray); + expect(pass.auxiliaryFields).toBeInstanceOf(FieldsArray); + expect(pass.headerFields).toBeInstanceOf(FieldsArray); + expect(pass.backFields).toBeInstanceOf(FieldsArray); + + /** Resetting Fields, when setting type */ + pass.type = "coupon"; + + expect(pass.primaryFields).toBeInstanceOf(FieldsArray); + expect(pass.secondaryFields).toBeInstanceOf(FieldsArray); + expect(pass.auxiliaryFields).toBeInstanceOf(FieldsArray); + expect(pass.headerFields).toBeInstanceOf(FieldsArray); + expect(pass.backFields).toBeInstanceOf(FieldsArray); + + /** Resetting Fields, when setting type */ + pass.type = "storeCard"; + + expect(pass.primaryFields).toBeInstanceOf(FieldsArray); + expect(pass.secondaryFields).toBeInstanceOf(FieldsArray); + expect(pass.auxiliaryFields).toBeInstanceOf(FieldsArray); + expect(pass.headerFields).toBeInstanceOf(FieldsArray); + expect(pass.backFields).toBeInstanceOf(FieldsArray); + + /** Resetting Fields, when setting type */ + pass.type = "eventTicket"; + + expect(pass.primaryFields).toBeInstanceOf(FieldsArray); + expect(pass.secondaryFields).toBeInstanceOf(FieldsArray); + expect(pass.auxiliaryFields).toBeInstanceOf(FieldsArray); + expect(pass.headerFields).toBeInstanceOf(FieldsArray); + expect(pass.backFields).toBeInstanceOf(FieldsArray); + + /** Resetting Fields, when setting type */ + pass.type = "generic"; + + expect(pass.primaryFields).toBeInstanceOf(FieldsArray); + expect(pass.secondaryFields).toBeInstanceOf(FieldsArray); + expect(pass.auxiliaryFields).toBeInstanceOf(FieldsArray); + expect(pass.headerFields).toBeInstanceOf(FieldsArray); + expect(pass.backFields).toBeInstanceOf(FieldsArray); + }); + }); + describe("localize", () => { it("should fail throw if lang is not a string", () => { expect(() => pass.localize(null)).toThrowError(