92 lines
3.2 KiB
TypeScript
92 lines
3.2 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import DatabaseManager from '@database/manager';
|
|
import NetworkManager from '@managers/network_manager';
|
|
import {getCurrentUser} from '@queries/servers/user';
|
|
|
|
import {fetchTermsOfService, updateTermsOfServiceStatus} from './terms_of_service';
|
|
|
|
const serverUrl = 'terms-of-service.test.com';
|
|
|
|
const mockTerms: TermsOfService = {
|
|
create_at: 1234567890,
|
|
id: 'terms123',
|
|
text: 'Test Terms of Service',
|
|
user_id: 'user123',
|
|
};
|
|
|
|
const mockClient = {
|
|
getTermsOfService: jest.fn(),
|
|
updateMyTermsOfServiceStatus: jest.fn(),
|
|
} as any;
|
|
|
|
jest.mock('@queries/servers/user');
|
|
|
|
describe('terms_of_service', () => {
|
|
beforeEach(async () => {
|
|
NetworkManager.getClient = () => mockClient;
|
|
await DatabaseManager.init([serverUrl]);
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await DatabaseManager.destroyServerDatabase(serverUrl);
|
|
});
|
|
|
|
describe('fetchTermsOfService', () => {
|
|
it('should fetch terms of service successfully', async () => {
|
|
mockClient.getTermsOfService.mockResolvedValueOnce(mockTerms);
|
|
|
|
const result = await fetchTermsOfService(serverUrl);
|
|
|
|
expect(result.terms).toBeDefined();
|
|
expect(result.terms).toEqual(mockTerms);
|
|
expect(mockClient.getTermsOfService).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('should handle fetch error', async () => {
|
|
const error = new Error('Network error');
|
|
mockClient.getTermsOfService.mockRejectedValueOnce(error);
|
|
|
|
const result = await fetchTermsOfService(serverUrl);
|
|
|
|
expect(result.error).toBeDefined();
|
|
expect(result.terms).toBeUndefined();
|
|
expect(mockClient.getTermsOfService).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|
|
|
|
describe('updateTermsOfServiceStatus', () => {
|
|
const mockGetCurrentUser = jest.mocked(getCurrentUser);
|
|
const mockUser = {
|
|
id: 'user123',
|
|
prepareUpdate: jest.fn((fn) => fn({})),
|
|
} as any;
|
|
|
|
it('should update terms of service status successfully', async () => {
|
|
mockGetCurrentUser.mockResolvedValue(mockUser);
|
|
const termsId = 'terms123';
|
|
const accepted = true;
|
|
const mockResponse = {status: 'ok'};
|
|
mockClient.updateMyTermsOfServiceStatus.mockResolvedValueOnce(mockResponse);
|
|
|
|
const result = await updateTermsOfServiceStatus(serverUrl, termsId, accepted);
|
|
|
|
expect(result.resp).toEqual(mockResponse);
|
|
expect(mockClient.updateMyTermsOfServiceStatus).toHaveBeenCalledWith(termsId, accepted);
|
|
expect(mockUser.prepareUpdate).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should handle update error', async () => {
|
|
const error = new Error('Network error');
|
|
mockClient.updateMyTermsOfServiceStatus.mockRejectedValueOnce(error);
|
|
|
|
const result = await updateTermsOfServiceStatus(serverUrl, 'terms123', true);
|
|
|
|
expect(result.error).toBeDefined();
|
|
expect(result.resp).toBeUndefined();
|
|
expect(mockClient.updateMyTermsOfServiceStatus).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|
|
});
|