Get
This commit is contained in:
parent
20c807a49c
commit
db5bdbf3b0
37
__mocks__/react-native-default-preference.js
vendored
37
__mocks__/react-native-default-preference.js
vendored
@ -16,58 +16,57 @@ const DefaultPreference = {
|
||||
return Promise.resolve();
|
||||
}),
|
||||
|
||||
getName: jest.fn((name) => {
|
||||
return Promise.resolve(name || 'default'); // Return provided name or 'default'
|
||||
getName: jest.fn(() => {
|
||||
return Promise.resolve('default');
|
||||
}),
|
||||
|
||||
get: jest.fn((name, key) => {
|
||||
const suite = getSuite(name || 'default');
|
||||
get: jest.fn((key) => {
|
||||
const suite = getSuite('default');
|
||||
return Promise.resolve(suite.hasOwnProperty(key) ? suite[key] : null);
|
||||
}),
|
||||
|
||||
set: jest.fn((name, key, value) => {
|
||||
const suite = getSuite(name || 'default');
|
||||
set: jest.fn((key, value) => {
|
||||
const suite = getSuite('default');
|
||||
suite[key] = value;
|
||||
return Promise.resolve();
|
||||
}),
|
||||
|
||||
clear: jest.fn((name, key) => {
|
||||
const suite = getSuite(name || 'default');
|
||||
clear: jest.fn((key) => {
|
||||
const suite = getSuite('default');
|
||||
delete suite[key];
|
||||
return Promise.resolve();
|
||||
}),
|
||||
|
||||
getMultiple: jest.fn((name, keys) => {
|
||||
const suite = getSuite(name || 'default');
|
||||
getMultiple: jest.fn((keys) => {
|
||||
const suite = getSuite('default');
|
||||
const values = keys.map(key => (suite.hasOwnProperty(key) ? suite[key] : null));
|
||||
return Promise.resolve(values);
|
||||
}),
|
||||
|
||||
setMultiple: jest.fn((name, keyValuePairs) => {
|
||||
const suite = getSuite(name || 'default');
|
||||
setMultiple: jest.fn((keyValuePairs) => {
|
||||
const suite = getSuite('default');
|
||||
Object.entries(keyValuePairs).forEach(([key, value]) => {
|
||||
suite[key] = value;
|
||||
});
|
||||
return Promise.resolve();
|
||||
}),
|
||||
|
||||
clearMultiple: jest.fn((name, keys) => {
|
||||
const suite = getSuite(name || 'default');
|
||||
clearMultiple: jest.fn((keys) => {
|
||||
const suite = getSuite('default');
|
||||
keys.forEach(key => delete suite[key]);
|
||||
return Promise.resolve();
|
||||
}),
|
||||
|
||||
getAll: jest.fn((name) => {
|
||||
const suite = getSuite(name || 'default');
|
||||
getAll: jest.fn(() => {
|
||||
const suite = getSuite('default');
|
||||
return Promise.resolve({ ...suite });
|
||||
}),
|
||||
|
||||
clearAll: jest.fn((name) => {
|
||||
mockPreferences[name || 'default'] = {};
|
||||
clearAll: jest.fn(() => {
|
||||
mockPreferences['default'] = {};
|
||||
return Promise.resolve();
|
||||
}),
|
||||
|
||||
// Add reset method to clear all suites
|
||||
reset: jest.fn(() => {
|
||||
mockPreferences = {};
|
||||
}),
|
||||
|
||||
@ -57,8 +57,8 @@ public class RNDefaultPreferenceModule extends ReactContextBaseJavaModule {
|
||||
Preferences preferences = dataStore.data.first();
|
||||
Preferences.Key<String> stringKey = PreferencesKeys.stringKey(key);
|
||||
Preferences.Key<Boolean> booleanKey = PreferencesKeys.booleanKey(key);
|
||||
String stringValue = preferences[stringKey];
|
||||
Boolean booleanValue = preferences[booleanKey];
|
||||
String stringValue = preferences.get(stringKey);
|
||||
Boolean booleanValue = preferences.get(booleanKey);
|
||||
if (stringValue != null) {
|
||||
promise.resolve(stringValue);
|
||||
} else if (booleanValue != null) {
|
||||
|
||||
@ -37,7 +37,7 @@ describe.each(['ios', 'android'])('DefaultPreference on %s', (platform) => {
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
mockDefaultPreference.reset(); // Reset all mock preferences
|
||||
RNDefaultPreference.clearAll('default');
|
||||
RNDefaultPreference.clearAll();
|
||||
});
|
||||
|
||||
it('should set and get a value for the default instance', async () => {
|
||||
@ -47,7 +47,7 @@ describe.each(['ios', 'android'])('DefaultPreference on %s', (platform) => {
|
||||
});
|
||||
|
||||
it('should set and get a value for the group instance', async () => {
|
||||
await DefaultPreference.setGroupName('group.reactnative.example');
|
||||
await DefaultPreference.setName('group.reactnative.example');
|
||||
await DefaultPreference.set('key1', 'value1');
|
||||
const value = await DefaultPreference.get('key1');
|
||||
expect(value).toBe('value1');
|
||||
@ -61,7 +61,7 @@ describe.each(['ios', 'android'])('DefaultPreference on %s', (platform) => {
|
||||
});
|
||||
|
||||
it('should clear a value for the group instance', async () => {
|
||||
await DefaultPreference.setGroupName('group.reactnative.example');
|
||||
await DefaultPreference.setName('group.reactnative.example');
|
||||
await DefaultPreference.set('key2', 'value2');
|
||||
await DefaultPreference.clear('key2');
|
||||
const value = await DefaultPreference.get('key2');
|
||||
@ -103,7 +103,7 @@ describe.each(['ios', 'android'])('DefaultPreference on %s', (platform) => {
|
||||
});
|
||||
|
||||
it('should set the name if a name is provided', async () => {
|
||||
await DefaultPreference.setGroupName('group.reactnative.example');
|
||||
await DefaultPreference.setName('group.reactnative.example');
|
||||
expect(RNDefaultPreference.setName).toHaveBeenCalledWith('group.reactnative.example');
|
||||
});
|
||||
|
||||
@ -112,16 +112,16 @@ describe.each(['ios', 'android'])('DefaultPreference on %s', (platform) => {
|
||||
});
|
||||
|
||||
it('should call setName if name is not default', async () => {
|
||||
await DefaultPreference.setGroupName('customName');
|
||||
await DefaultPreference.setName('customName');
|
||||
expect(RNDefaultPreference.setName).toHaveBeenCalledWith('customName');
|
||||
});
|
||||
|
||||
it('should handle multiple group names correctly', async () => {
|
||||
await DefaultPreference.setGroupName('group1');
|
||||
await DefaultPreference.setName('group1');
|
||||
await DefaultPreference.set('key1', 'value1');
|
||||
const value1 = await DefaultPreference.get('key1');
|
||||
|
||||
await DefaultPreference.setGroupName('group2');
|
||||
await DefaultPreference.setName('group2');
|
||||
await DefaultPreference.set('key1', 'value2');
|
||||
const value2 = await DefaultPreference.get('key1');
|
||||
|
||||
@ -135,7 +135,7 @@ describe.each(['ios', 'android'])('DefaultPreference on %s', (platform) => {
|
||||
mockDefaultPreference.getName.mockResolvedValue(currentGroupName);
|
||||
|
||||
// Act
|
||||
await DefaultPreference.setGroupName(currentGroupName);
|
||||
await DefaultPreference.setName(currentGroupName);
|
||||
const groupName = await DefaultPreference.getName();
|
||||
|
||||
// Assert
|
||||
|
||||
16
index.ts
16
index.ts
@ -17,35 +17,35 @@ class DefaultPreference {
|
||||
}
|
||||
|
||||
static async get(key: string): Promise<string | number | boolean | null> {
|
||||
return RNDefaultPreference.get(DefaultPreference.groupName, key);
|
||||
return RNDefaultPreference.get(key);
|
||||
}
|
||||
|
||||
static async set(key: string, value: string | number | boolean): Promise<void> {
|
||||
return RNDefaultPreference.set(DefaultPreference.groupName, key, value);
|
||||
return RNDefaultPreference.set(key, value);
|
||||
}
|
||||
|
||||
static async clear(key: string): Promise<void> {
|
||||
return RNDefaultPreference.clear(DefaultPreference.groupName, key);
|
||||
return RNDefaultPreference.clear(key);
|
||||
}
|
||||
|
||||
static async getMultiple(keys: string[]): Promise<(string | number | boolean | null)[]> {
|
||||
return RNDefaultPreference.getMultiple(DefaultPreference.groupName, keys);
|
||||
return RNDefaultPreference.getMultiple(keys);
|
||||
}
|
||||
|
||||
static async setMultiple(data: RNDefaultPreferenceKeys): Promise<void> {
|
||||
return RNDefaultPreference.setMultiple(DefaultPreference.groupName, data);
|
||||
return RNDefaultPreference.setMultiple(data);
|
||||
}
|
||||
|
||||
static async clearMultiple(keys: string[]): Promise<void> {
|
||||
return RNDefaultPreference.clearMultiple(DefaultPreference.groupName, keys);
|
||||
return RNDefaultPreference.clearMultiple(keys);
|
||||
}
|
||||
|
||||
static async getAll(): Promise<RNDefaultPreferenceKeys> {
|
||||
return RNDefaultPreference.getAll(DefaultPreference.groupName);
|
||||
return RNDefaultPreference.getAll();
|
||||
}
|
||||
|
||||
static async clearAll(): Promise<void> {
|
||||
return RNDefaultPreference.clearAll(DefaultPreference.groupName);
|
||||
return RNDefaultPreference.clearAll();
|
||||
}
|
||||
|
||||
static async getName(): Promise<string> {
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/kevinresol/react-native-default-preference#readme",
|
||||
"devDependencies": {
|
||||
"jest": "^27.0.0",
|
||||
"ts-jest": "^27.0.0",
|
||||
"@types/jest": "^27.0.0",
|
||||
"@testing-library/react-hooks": "^8.0.1",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user