102 lines
3.3 KiB
TypeScript
102 lines
3.3 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import RNUtils from '@mattermost/rnutils';
|
|
import {Platform} from 'react-native';
|
|
|
|
import {
|
|
getIOSAppGroupDetails,
|
|
deleteIOSDatabase,
|
|
renameIOSDatabase,
|
|
deleteEntitiesFile,
|
|
} from './mattermost_managed';
|
|
|
|
jest.mock('@mattermost/rnutils', () => ({
|
|
getConstants: jest.fn(),
|
|
deleteDatabaseDirectory: jest.fn(),
|
|
renameDatabase: jest.fn(),
|
|
deleteEntitiesFile: jest.fn(),
|
|
}));
|
|
|
|
describe('iOS Utilities', () => {
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
describe('getIOSAppGroupDetails', () => {
|
|
test('retrieves iOS AppGroup details correctly', () => {
|
|
const constantsMock = {
|
|
appGroupIdentifier: 'group.com.example.app',
|
|
appGroupSharedDirectory: {sharedDirectory: '/shared', databasePath: '/shared/database'},
|
|
};
|
|
|
|
//@ts-expect-error mockReturnValue
|
|
RNUtils.getConstants.mockReturnValue(constantsMock);
|
|
|
|
const details = getIOSAppGroupDetails();
|
|
|
|
expect(details).toEqual({
|
|
appGroupIdentifier: 'group.com.example.app',
|
|
appGroupSharedDirectory: '/shared',
|
|
appGroupDatabase: '/shared/database',
|
|
});
|
|
expect(RNUtils.getConstants).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
describe('deleteIOSDatabase', () => {
|
|
test('deletes iOS database with given parameters', async () => {
|
|
//@ts-expect-error mockReturnValue
|
|
const deleteMock = RNUtils.deleteDatabaseDirectory.mockResolvedValue(true);
|
|
|
|
const result = await deleteIOSDatabase({databaseName: 'test.db', shouldRemoveDirectory: true});
|
|
|
|
expect(deleteMock).toHaveBeenCalledWith('test.db', true);
|
|
expect(result).toBe(true);
|
|
});
|
|
|
|
test('deletes iOS database with default parameters', async () => {
|
|
//@ts-expect-error mockReturnValue
|
|
const deleteMock = RNUtils.deleteDatabaseDirectory.mockResolvedValue(true);
|
|
|
|
const result = await deleteIOSDatabase({});
|
|
|
|
expect(deleteMock).toHaveBeenCalledWith('', false);
|
|
expect(result).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('renameIOSDatabase', () => {
|
|
test('renames iOS database with given parameters', () => {
|
|
//@ts-expect-error mockReturnValue
|
|
const renameMock = RNUtils.renameDatabase.mockResolvedValue(true);
|
|
|
|
const result = renameIOSDatabase('old.db', 'new.db');
|
|
|
|
expect(renameMock).toHaveBeenCalledWith('old.db', 'new.db');
|
|
expect(result).resolves.toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('deleteEntitiesFile', () => {
|
|
test('deletes entities file on iOS', () => {
|
|
Platform.OS = 'ios';
|
|
|
|
//@ts-expect-error mockReturnValue
|
|
const deleteMock = RNUtils.deleteEntitiesFile.mockResolvedValue(true);
|
|
|
|
const result = deleteEntitiesFile();
|
|
|
|
expect(deleteMock).toHaveBeenCalled();
|
|
expect(result).resolves.toBe(true);
|
|
});
|
|
|
|
test('resolves true on non-iOS platforms', () => {
|
|
Platform.OS = 'android';
|
|
|
|
const result = deleteEntitiesFile();
|
|
|
|
expect(result).resolves.toBe(true);
|
|
});
|
|
});
|
|
});
|