diff --git a/src/lib/seam/components/SupportedDevices/device-models.test.ts b/src/lib/seam/components/SupportedDevices/device-models.test.ts index 43c0d64db..e53196c5e 100644 --- a/src/lib/seam/components/SupportedDevices/device-models.test.ts +++ b/src/lib/seam/components/SupportedDevices/device-models.test.ts @@ -10,6 +10,7 @@ import type { import { applyEmbedExclusions, filterDeviceModels, + getCapabilityLabel, getCapabilityOptions, getCapabilityRequirementMessages, getProvidersWithMissingRequirements, @@ -112,6 +113,27 @@ const models = [ deviceModel({ slug: 'd', manufacturer: null, deviceType: null }), ] +test('card assignment is independently displayed and filterable without encoding', () => { + const model = deviceModel({ + slug: 'card-reader', + capabilities: { + cloud: { + can_assign_plastic_cards: 'conditionally', + can_encode_plastic_cards: 'no', + }, + }, + }) + expect( + getSupportedCapabilities(model).map(({ name }) => ({ + name, + label: getCapabilityLabel(name), + })) + ).toEqual([{ name: 'can_assign_plastic_cards', label: 'Assign key cards' }]) + expect(getCapabilityOptions([model]).map(({ value }) => value)).toEqual([ + 'can_assign_plastic_cards', + ]) +}) + test('applyEmbedExclusions: without exclusions returns the models', () => { expect(applyEmbedExclusions(models, null)).toBe(models) expect(applyEmbedExclusions(models, noExclusions)).toHaveLength(4) diff --git a/src/lib/seam/components/SupportedDevices/device-models.ts b/src/lib/seam/components/SupportedDevices/device-models.ts index 3a65e4874..f0d95b06a 100644 --- a/src/lib/seam/components/SupportedDevices/device-models.ts +++ b/src/lib/seam/components/SupportedDevices/device-models.ts @@ -43,7 +43,8 @@ export const capabilityLabels: Partial> = { can_program_offline_access_codes: 'Offline access codes', can_provision_mobile_keys: 'Mobile keys', can_provision_wallet_keys: 'Wallet keys', - can_encode_plastic_cards: 'Key cards', + can_encode_plastic_cards: 'Encode key cards', + can_assign_plastic_cards: 'Assign key cards', can_hvac_heat: 'Heat', can_hvac_cool: 'Cool', can_hvac_auto: 'Heat and cool', diff --git a/src/lib/seam/ecosystem/types.ts b/src/lib/seam/ecosystem/types.ts index e7c7d831c..f9d0ed445 100644 --- a/src/lib/seam/ecosystem/types.ts +++ b/src/lib/seam/ecosystem/types.ts @@ -195,6 +195,7 @@ export type CapabilityName = | 'can_remotely_unlock' | 'can_remotely_lock' | 'can_encode_plastic_cards' + | 'can_assign_plastic_cards' | 'can_provision_mobile_keys' | 'can_provision_wallet_keys' | 'can_hvac_cool'