Skip to content

Commit db007d2

Browse files
committed
fix: linting errors
1 parent 548ea08 commit db007d2

19 files changed

+190
-108
lines changed

src/__mocks__/expo-application.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
export const getIosIdForVendorAsync = jest.fn().mockResolvedValue('mock-ios-vendor-id');
1+
export const getIosIdForVendorAsync = jest
2+
.fn()
3+
.mockResolvedValue('mock-ios-vendor-id');
24
export const getAndroidId = jest.fn(() => 'mock-android-id');
Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
1-
export const getPermissionsAsync = jest.fn().mockResolvedValue({ status: 'granted' });
2-
export const requestPermissionsAsync = jest.fn().mockResolvedValue({ status: 'granted' });
3-
export const getExpoPushTokenAsync = jest.fn().mockResolvedValue({ data: 'ExponentPushToken[mock]' });
4-
export const getDevicePushTokenAsync = jest.fn().mockResolvedValue({ data: 'mock-device-token' });
5-
export const addNotificationReceivedListener = jest.fn(() => ({ remove: jest.fn() }));
1+
export const getPermissionsAsync = jest
2+
.fn()
3+
.mockResolvedValue({ status: 'granted' });
4+
export const requestPermissionsAsync = jest
5+
.fn()
6+
.mockResolvedValue({ status: 'granted' });
7+
export const getExpoPushTokenAsync = jest
8+
.fn()
9+
.mockResolvedValue({ data: 'ExponentPushToken[mock]' });
10+
export const getDevicePushTokenAsync = jest
11+
.fn()
12+
.mockResolvedValue({ data: 'mock-device-token' });
13+
export const addNotificationReceivedListener = jest.fn(() => ({
14+
remove: jest.fn(),
15+
}));
616
export const registerTaskAsync = jest.fn().mockResolvedValue(undefined);
717
export const unregisterTaskAsync = jest.fn().mockResolvedValue(undefined);

src/__mocks__/expo-secure-store.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
const store: Record<string, string> = {};
22
export const getItemAsync = jest.fn(async (key: string) => store[key] ?? null);
3-
export const setItemAsync = jest.fn(async (key: string, value: string) => { store[key] = value; });
4-
export const deleteItemAsync = jest.fn(async (key: string) => { delete store[key]; });
5-
export const __clearStore = () => { Object.keys(store).forEach((k) => delete store[k]); };
3+
export const setItemAsync = jest.fn(async (key: string, value: string) => {
4+
store[key] = value;
5+
});
6+
export const deleteItemAsync = jest.fn(async (key: string) => {
7+
delete store[key];
8+
});
9+
export const __clearStore = () => {
10+
Object.keys(store).forEach((k) => delete store[k]);
11+
};

src/core/__tests__/SQLiteSyncProvider.integration.test.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,7 @@ import { ExpoNotifications } from '../common/optionalDependencies';
4242

4343
const mockExpoNotifications = ExpoNotifications as any;
4444

45-
function CaptureStatus({
46-
onChange,
47-
}: {
48-
onChange: (value: any) => void;
49-
}) {
45+
function CaptureStatus({ onChange }: { onChange: (value: any) => void }) {
5046
const value = useContext(SQLiteSyncStatusContext);
5147
onChange(value);
5248
return null;

src/core/common/__tests__/optionalDependencies.test.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ describe('optionalDependencies', () => {
6161

6262
it('ExpoTaskManager is null when not installed', () => {
6363
jest.isolateModules(() => {
64-
jest.doMock('expo-notifications', () => ({ registerTaskAsync: jest.fn() }));
64+
jest.doMock('expo-notifications', () => ({
65+
registerTaskAsync: jest.fn(),
66+
}));
6567
jest.doMock('expo-task-manager', () => {
6668
throw new Error('Module not found');
6769
});
@@ -84,7 +86,9 @@ describe('optionalDependencies', () => {
8486
it('ExpoConstants uses .default if present', () => {
8587
jest.isolateModules(() => {
8688
const mockDefault = { expoConfig: { name: 'test' } };
87-
jest.doMock('expo-notifications', () => ({ registerTaskAsync: jest.fn() }));
89+
jest.doMock('expo-notifications', () => ({
90+
registerTaskAsync: jest.fn(),
91+
}));
8892
jest.doMock('expo-task-manager', () => ({ defineTask: jest.fn() }));
8993
jest.doMock('expo-secure-store', () => ({ getItemAsync: jest.fn() }));
9094
jest.doMock('expo-constants', () => ({
@@ -100,7 +104,9 @@ describe('optionalDependencies', () => {
100104
it('ExpoConstants uses module directly if no default', () => {
101105
jest.isolateModules(() => {
102106
const mockModule = { expoConfig: { name: 'test' } };
103-
jest.doMock('expo-notifications', () => ({ registerTaskAsync: jest.fn() }));
107+
jest.doMock('expo-notifications', () => ({
108+
registerTaskAsync: jest.fn(),
109+
}));
104110
jest.doMock('expo-task-manager', () => ({ defineTask: jest.fn() }));
105111
jest.doMock('expo-secure-store', () => ({ getItemAsync: jest.fn() }));
106112
jest.doMock('expo-constants', () => mockModule);

src/core/database/__tests__/createDatabase.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ describe('createDatabase', () => {
5050
(open as jest.Mock).mockImplementationOnce(() => {
5151
throw new Error('open failed');
5252
});
53-
await expect(createDatabase('app.db', 'write')).rejects.toThrow('open failed');
53+
await expect(createDatabase('app.db', 'write')).rejects.toThrow(
54+
'open failed'
55+
);
5456
});
5557

5658
it('propagates error if PRAGMA fails', async () => {
@@ -62,6 +64,8 @@ describe('createDatabase', () => {
6264
transaction: jest.fn(),
6365
reactiveExecute: jest.fn(),
6466
});
65-
await expect(createDatabase('app.db', 'write')).rejects.toThrow('PRAGMA failed');
67+
await expect(createDatabase('app.db', 'write')).rejects.toThrow(
68+
'PRAGMA failed'
69+
);
6670
});
6771
});

src/core/database/useDatabaseInitialization.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,7 @@ export function useDatabaseInitialization(
142142
apiKey,
143143
accessToken,
144144
}),
145-
[
146-
databaseId,
147-
databaseName,
148-
tablesToBeSynced,
149-
apiKey,
150-
accessToken,
151-
]
145+
[databaseId, databaseName, tablesToBeSynced, apiKey, accessToken]
152146
);
153147

154148
/** INITIALIZATION EFFECT */

src/core/lifecycle/__tests__/useAppLifecycle.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ describe('useAppLifecycle', () => {
150150

151151
expect(setConsecutiveEmptySyncs).toHaveBeenCalledWith(0);
152152
expect(currentIntervalRef.current).toBe(adaptiveConfig.baseInterval);
153-
expect(setCurrentInterval).toHaveBeenCalledWith(adaptiveConfig.baseInterval);
153+
expect(setCurrentInterval).toHaveBeenCalledWith(
154+
adaptiveConfig.baseInterval
155+
);
154156
});
155157

156158
it('does not reset interval in push mode', () => {

src/core/polling/__tests__/calculateAdaptiveSyncInterval.test.ts

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,71 +11,107 @@ const defaultConfig = {
1111
describe('calculateAdaptiveSyncInterval', () => {
1212
it('returns baseInterval when no errors, no idle', () => {
1313
const result = calculateAdaptiveSyncInterval(
14-
{ lastSyncChanges: 5, consecutiveEmptySyncs: 0, consecutiveSyncErrors: 0 },
14+
{
15+
lastSyncChanges: 5,
16+
consecutiveEmptySyncs: 0,
17+
consecutiveSyncErrors: 0,
18+
},
1519
defaultConfig
1620
);
1721
expect(result).toBe(5000);
1822
});
1923

2024
it('returns baseInterval when below emptyThreshold', () => {
2125
const result = calculateAdaptiveSyncInterval(
22-
{ lastSyncChanges: 0, consecutiveEmptySyncs: 4, consecutiveSyncErrors: 0 },
26+
{
27+
lastSyncChanges: 0,
28+
consecutiveEmptySyncs: 4,
29+
consecutiveSyncErrors: 0,
30+
},
2331
defaultConfig
2432
);
2533
expect(result).toBe(5000);
2634
});
2735

2836
it('applies idle backoff at exactly emptyThreshold', () => {
2937
const result = calculateAdaptiveSyncInterval(
30-
{ lastSyncChanges: 0, consecutiveEmptySyncs: 5, consecutiveSyncErrors: 0 },
38+
{
39+
lastSyncChanges: 0,
40+
consecutiveEmptySyncs: 5,
41+
consecutiveSyncErrors: 0,
42+
},
3143
defaultConfig
3244
);
3345
expect(result).toBe(7500);
3446
});
3547

3648
it('increases idle backoff with consecutive empty syncs', () => {
3749
const result = calculateAdaptiveSyncInterval(
38-
{ lastSyncChanges: 0, consecutiveEmptySyncs: 7, consecutiveSyncErrors: 0 },
50+
{
51+
lastSyncChanges: 0,
52+
consecutiveEmptySyncs: 7,
53+
consecutiveSyncErrors: 0,
54+
},
3955
defaultConfig
4056
);
4157
expect(result).toBe(5000 * Math.pow(1.5, 3));
4258
});
4359

4460
it('caps idle backoff at maxInterval', () => {
4561
const result = calculateAdaptiveSyncInterval(
46-
{ lastSyncChanges: 0, consecutiveEmptySyncs: 100, consecutiveSyncErrors: 0 },
62+
{
63+
lastSyncChanges: 0,
64+
consecutiveEmptySyncs: 100,
65+
consecutiveSyncErrors: 0,
66+
},
4767
defaultConfig
4868
);
4969
expect(result).toBe(300000);
5070
});
5171

5272
it('applies error backoff exponentially', () => {
5373
const result = calculateAdaptiveSyncInterval(
54-
{ lastSyncChanges: 0, consecutiveEmptySyncs: 0, consecutiveSyncErrors: 3 },
74+
{
75+
lastSyncChanges: 0,
76+
consecutiveEmptySyncs: 0,
77+
consecutiveSyncErrors: 3,
78+
},
5579
defaultConfig
5680
);
5781
expect(result).toBe(40000);
5882
});
5983

6084
it('caps error backoff at maxInterval', () => {
6185
const result = calculateAdaptiveSyncInterval(
62-
{ lastSyncChanges: 0, consecutiveEmptySyncs: 0, consecutiveSyncErrors: 100 },
86+
{
87+
lastSyncChanges: 0,
88+
consecutiveEmptySyncs: 0,
89+
consecutiveSyncErrors: 100,
90+
},
6391
defaultConfig
6492
);
6593
expect(result).toBe(300000);
6694
});
6795

6896
it('gives error priority over idle backoff', () => {
6997
const result = calculateAdaptiveSyncInterval(
70-
{ lastSyncChanges: 0, consecutiveEmptySyncs: 10, consecutiveSyncErrors: 2 },
98+
{
99+
lastSyncChanges: 0,
100+
consecutiveEmptySyncs: 10,
101+
consecutiveSyncErrors: 2,
102+
},
71103
defaultConfig
72104
);
73105
expect(result).toBe(5000 * Math.pow(2.0, 2));
74106
});
75107

76108
it('handles single error', () => {
77109
const result = calculateAdaptiveSyncInterval(
78-
{ lastSyncChanges: 0, consecutiveEmptySyncs: 0, consecutiveSyncErrors: 1 },
110+
{
111+
lastSyncChanges: 0,
112+
consecutiveEmptySyncs: 0,
113+
consecutiveSyncErrors: 1,
114+
},
79115
defaultConfig
80116
);
81117
expect(result).toBe(10000);
@@ -90,7 +126,11 @@ describe('calculateAdaptiveSyncInterval', () => {
90126
errorBackoffMultiplier: 3,
91127
};
92128
const result = calculateAdaptiveSyncInterval(
93-
{ lastSyncChanges: 0, consecutiveEmptySyncs: 3, consecutiveSyncErrors: 0 },
129+
{
130+
lastSyncChanges: 0,
131+
consecutiveEmptySyncs: 3,
132+
consecutiveSyncErrors: 0,
133+
},
94134
config
95135
);
96136
expect(result).toBe(1000 * Math.pow(2, 2));

src/core/polling/__tests__/useAdaptivePollingSync.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import type { AdaptivePollingParams } from '../useAdaptivePollingSync';
44

55
jest.useFakeTimers();
66

7-
const createDefaultParams = (overrides?: Partial<AdaptivePollingParams>): AdaptivePollingParams => ({
7+
const createDefaultParams = (
8+
overrides?: Partial<AdaptivePollingParams>
9+
): AdaptivePollingParams => ({
810
isSyncReady: true,
911
appState: 'active',
1012
performSyncRef: { current: jest.fn().mockResolvedValue(undefined) },

0 commit comments

Comments
 (0)