Skip to content

Commit dc0c875

Browse files
committed
chore: cleanup + tests
Signed-off-by: Mac Deluca <Mac.Deluca@quartech.com>
1 parent 858cba3 commit dc0c875

File tree

5 files changed

+46
-53
lines changed

5 files changed

+46
-53
lines changed

app/__tests__/bcsc-theme/hooks/useFilterServiceClients.test.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const mockServiceClientA: ClientMetadata = {
2020
suppress_bookmark_prompt: false,
2121
allowed_identification_processes: [BCSCCardProcess.BCSC],
2222
bc_address: true,
23+
service_listing_sort_order: undefined,
2324
}
2425

2526
const mockServiceClientB: ClientMetadata = {
@@ -32,6 +33,20 @@ const mockServiceClientB: ClientMetadata = {
3233
suppress_bookmark_prompt: false,
3334
allowed_identification_processes: [BCSCCardProcess.NonBCSC],
3435
bc_address: false,
36+
service_listing_sort_order: undefined,
37+
}
38+
39+
const mockServiceClientC: ClientMetadata = {
40+
client_ref_id: 'test-client-id-c',
41+
client_name: 'TEST CLIENT CHARLIE',
42+
client_uri: 'https://test.client.c',
43+
application_type: 'web',
44+
claims_description: 'claims',
45+
suppress_confirmation_info: false,
46+
suppress_bookmark_prompt: false,
47+
allowed_identification_processes: [BCSCCardProcess.NonBCSC],
48+
bc_address: false,
49+
service_listing_sort_order: 1,
3550
}
3651

3752
describe('useFilterServiceClients', () => {
@@ -45,6 +60,29 @@ describe('useFilterServiceClients', () => {
4560
const useApiMock = jest.mocked(useApi)
4661
const navigationMock = jest.mocked(navigation)
4762

63+
useApiMock.default.mockReturnValue({
64+
metadata: {
65+
getClientMetadata: jest.fn().mockResolvedValue([mockServiceClientB, mockServiceClientA, mockServiceClientC]),
66+
},
67+
} as any)
68+
navigationMock.useNavigation.mockReturnValue({ navigation: jest.fn() })
69+
bifoldMock.useServices.mockReturnValue([{ error: jest.fn() }] as any)
70+
71+
const hook = renderHook(() => useFilterServiceClients({}))
72+
73+
await waitFor(() => {
74+
expect(hook.result.current).toHaveLength(3)
75+
expect(hook.result.current[0].client_ref_id).toBe(mockServiceClientC.client_ref_id)
76+
expect(hook.result.current[1].client_ref_id).toBe(mockServiceClientA.client_ref_id)
77+
expect(hook.result.current[2].client_ref_id).toBe(mockServiceClientB.client_ref_id)
78+
})
79+
})
80+
81+
it('should sort by sort order then name', async () => {
82+
const bifoldMock = jest.mocked(Bifold)
83+
const useApiMock = jest.mocked(useApi)
84+
const navigationMock = jest.mocked(navigation)
85+
4886
useApiMock.default.mockReturnValue({
4987
metadata: {
5088
getClientMetadata: jest.fn().mockResolvedValue([mockServiceClientA, mockServiceClientB]),

app/src/bcsc-theme/features/home/Home.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
import TabScreenWrapper from '@/bcsc-theme/components/TabScreenWrapper'
2-
import { useStore, useTheme, useServices, TOKENS } from '@bifold/core'
2+
import { useTheme, useServices, TOKENS } from '@bifold/core'
33
import React, { useEffect, useState } from 'react'
44
import { ActivityIndicator, StyleSheet, View } from 'react-native'
55
import HomeHeader from './components/HomeHeader'
66
import SavedServices from './components/SavedServices'
77
import SectionButton from '../../components/SectionButton'
88
import { StackScreenProps } from '@react-navigation/stack'
99
import { BCSCScreens, BCSCTabStackParams } from '@/bcsc-theme/types/navigators'
10-
import { BCState } from '@/store'
11-
import { mockServices } from '@/bcsc-theme/fixtures/services'
1210
import { UserInfoResponseData } from '@/bcsc-theme/api/hooks/useUserApi'
1311
import useApi from '@/bcsc-theme/api/hooks/useApi'
1412
import { NotificationBannerContainer } from './components/NotificationBannerContainer'
@@ -24,7 +22,6 @@ type HomeProps = StackScreenProps<BCSCTabStackParams, BCSCScreens.Home>
2422

2523
const Home: React.FC<HomeProps> = ({ navigation }) => {
2624
const { Spacing } = useTheme()
27-
const [store] = useStore<BCState>()
2825
const { user } = useApi()
2926
const [loading, setLoading] = useState(true)
3027
const [userInfo, setUserInfo] = useState<Partial<UserInfoResponseData>>({})

app/src/bcsc-theme/features/pairing/ManualPairing.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import { useTranslation } from 'react-i18next'
1515
import { StyleSheet, View } from 'react-native'
1616

1717
import useApi from '@/bcsc-theme/api/hooks/useApi'
18-
import { mockServices } from '@/bcsc-theme/fixtures/services'
1918
import { BCSCRootStackParams, BCSCScreens } from '@bcsc-theme/types/navigators'
2019
import PairingCodeTextInput from './components/PairingCodeTextInput'
2120

app/src/bcsc-theme/features/services/hooks/useFilterServiceClients.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,14 @@ export interface ServiceClientsFilter {
4040
* @format uuid
4141
* @type {string[]}
4242
*/
43-
clientRefIdsFilter?: string[]
43+
serviceClientIdsFilter?: string[]
4444
}
4545

4646
/**
47-
* A custom hook to filter service clients based on various criteria such as name, card process, and BC address requirement.
47+
* A custom hook to filter service clients based on various criteria such as name,
48+
* card process, and BC address requirement. Sorted by numeric listing order and name.
4849
*
49-
* TODO (MD): This hook might need to either return the full data loader state (loading, error, etc.)
50+
* TODO (MD): This hook will eventually need to return the data loader (loading, error, etc.)
5051
*
5152
* @param {ServiceClientsFilter} filter The filter criteria to apply to the service clients.
5253
* @returns {*} {ClientMetadata[]} The filtered list of service clients.
@@ -103,8 +104,8 @@ export const useFilterServiceClients = (filter: ServiceClientsFilter): ClientMet
103104
}
104105

105106
// Filter services based on the provided IDs
106-
if (filter.clientRefIdsFilter) {
107-
const idsSet = new Set(filter.clientRefIdsFilter)
107+
if (filter.serviceClientIdsFilter) {
108+
const idsSet = new Set(filter.serviceClientIdsFilter)
108109
serviceClientsCopy = serviceClientsCopy.filter((service) => idsSet.has(service.client_ref_id))
109110
}
110111

@@ -119,7 +120,7 @@ export const useFilterServiceClients = (filter: ServiceClientsFilter): ClientMet
119120

120121
return a.client_name.localeCompare(b.client_name)
121122
})
122-
}, [serviceClients, filter.cardProcessFilter, filter.requireBCAddressFilter, filter.clientRefIdsFilter])
123+
}, [serviceClients, filter.cardProcessFilter, filter.requireBCAddressFilter, filter.serviceClientIdsFilter])
123124

124125
// Further filter services based on the partial name filter
125126
const queriedServiceClients = useMemo(() => {

app/src/bcsc-theme/fixtures/services.ts

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)