mattermost-mobile/app/screens/edit_post/index.test.tsx
Rajat Dabade b5969fdfb4
Edit mode when no text and no attachment on save calls delete post (#8984)
* Edit mode when no text and no attachment on save calls delete post

* Removed the hasAttachment and isPost props to use shouldDirectlyReact props
2025-07-14 17:55:27 +05:30

75 lines
2.7 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React from 'react';
import {Screens} from '@constants';
import {SYSTEM_IDENTIFIERS} from '@constants/database';
import DatabaseManager from '@database/manager';
import {renderWithEverything, waitFor} from '@test/intl-test-helper';
import TestHelper from '@test/test_helper';
import EditPost from './edit_post';
import EnhancedEditPost from './index';
import type ServerDataOperator from '@database/operator/server_data_operator';
import type {Database} from '@nozbe/watermelondb';
jest.mock('./edit_post', () => ({
__esModule: true,
default: jest.fn(),
}));
jest.mocked(EditPost).mockImplementation((props) => React.createElement('EditPost', {...props, testID: 'edit-post'}));
describe('EditPost', () => {
const serverUrl = 'server-1';
const teamId = 'team1';
let database: Database;
let operator: ServerDataOperator;
const baseProps: Parameters<typeof EnhancedEditPost>[0] = {
componentId: Screens.EDIT_POST,
closeButtonId: 'close-button',
post: TestHelper.fakePostModel({id: 'post-1'}),
canDelete: true,
files: [],
};
beforeEach(async () => {
await DatabaseManager.init([serverUrl]);
const serverDatabaseAndOperator = DatabaseManager.getServerDatabaseAndOperator(serverUrl);
database = serverDatabaseAndOperator.database;
operator = serverDatabaseAndOperator.operator;
await operator.handleSystem({systems: [{id: SYSTEM_IDENTIFIERS.CURRENT_TEAM_ID, value: teamId}], prepareRecordsOnly: false});
await operator.handleTeam({teams: [TestHelper.fakeTeam({id: teamId})], prepareRecordsOnly: false});
await operator.handleConfigs({
configs: [
{id: 'Version', value: '10.6.0'},
{id: 'MaxFileCount', value: '10'},
{id: 'MaxFileSize', value: '1000'},
{id: 'CanUploadFiles', value: 'true'},
],
configsToDelete: [],
prepareRecordsOnly: false,
});
});
afterEach(async () => {
await DatabaseManager.destroyServerDatabase(serverUrl);
});
it('should pass props to the edit post component', async () => {
const {getByTestId} = renderWithEverything(<EnhancedEditPost {...baseProps}/>, {database, serverUrl});
await waitFor(() => {
const editPost = getByTestId('edit-post');
expect(editPost).toBeDefined();
expect(editPost.props.maxFileCount).toBe(10);
expect(editPost.props.maxFileSize).toBe(1000);
expect(editPost.props.canUploadFiles).toBe(true);
});
});
});