mutator.test.ts
TLDR
This file (mutator.test.ts
) contains tests for the mutator
module in the project. It tests the functionality of the changePropertyValue
and duplicateCard
methods.
Methods
changePropertyValue
This method tests the behavior of the changePropertyValue
function in the mutator
module. It creates a test board and card, and then calls changePropertyValue
with different property values. The test verifies that the API is not called when the property value doesn't change, and that the API is called once when the property value does change.
duplicateCard
This method tests the behavior of the duplicateCard
function in the mutator
module. It creates a test board and card, and then calls duplicateCard
with the card ID and board ID. The test verifies that the returned blocks contain the duplicated card with the correct properties.
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import mutator from './mutator'
import {TestBlockFactory} from './test/testBlockFactory'
import 'isomorphic-fetch'
import {FetchMock} from './test/fetchMock'
import {mockDOM} from './testUtils'
global.fetch = FetchMock.fn
beforeEach(() => {
FetchMock.fn.mockReset()
})
beforeAll(() => {
mockDOM()
})
describe('Mutator', () => {
test('changePropertyValue', async () => {
const board = TestBlockFactory.createBoard()
const card = TestBlockFactory.createCard()
card.boardId = board.id
card.fields.properties.property_1 = 'hello'
await mutator.changePropertyValue(board.id, card, 'property_1', 'hello')
// No API call should be made as property value DIDN'T CHANGE
expect(FetchMock.fn).toBeCalledTimes(0)
await mutator.changePropertyValue(board.id, card, 'property_1', 'hello world')
// 1 API call should be made as property value DID CHANGE
expect(FetchMock.fn).toBeCalledTimes(1)
})
test('duplicateCard', async () => {
const board = TestBlockFactory.createBoard()
const card = TestBlockFactory.createCard(board)
FetchMock.fn.mockReturnValueOnce(FetchMock.jsonResponse(JSON.stringify([card])))
const [newBlocks, newCardID] = await mutator.duplicateCard(card.id, board.id)
expect(newBlocks).toHaveLength(1)
const duplicatedCard = newBlocks[0]
expect(duplicatedCard.type).toBe('card')
expect(duplicatedCard.id).toBe(newCardID)
expect(duplicatedCard.fields.icon).toBe(card.fields.icon)
expect(duplicatedCard.fields.contentOrder).toHaveLength(card.fields.contentOrder.length)
expect(duplicatedCard.boardId).toBe(board.id)
})
})