This commit is contained in:
Marcos Rodriguez Velez 2024-11-19 22:25:32 -04:00
parent 20c807a49c
commit db5bdbf3b0
5 changed files with 37 additions and 37 deletions

View File

@ -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 = {};
}),

View File

@ -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) {

View File

@ -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

View File

@ -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> {

View File

@ -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",