Unit test: WorkspaceTree
This commit is contained in:
parent
662441f29c
commit
832509c766
4 changed files with 234 additions and 216 deletions
|
@ -1,20 +1,19 @@
|
||||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||||
// See LICENSE.txt for license information.
|
// See LICENSE.txt for license information.
|
||||||
|
|
||||||
import {FilterClause} from '../filterClause'
|
import {TestBlockFactory} from '../test/block'
|
||||||
import {FilterGroup} from '../filterGroup'
|
|
||||||
import {Utils} from '../utils'
|
|
||||||
|
|
||||||
import {Board, IPropertyOption, IPropertyTemplate, MutableBoard} from './board'
|
import {MutableBoard} from './board'
|
||||||
import {BoardView, MutableBoardView} from './boardView'
|
import {MutableBoardView} from './boardView'
|
||||||
import {Card, MutableCard} from './card'
|
import {MutableCard} from './card'
|
||||||
import {CommentBlock, MutableCommentBlock} from './commentBlock'
|
import {MutableCommentBlock} from './commentBlock'
|
||||||
import {DividerBlock, MutableDividerBlock} from './dividerBlock'
|
import {MutableDividerBlock} from './dividerBlock'
|
||||||
import {ImageBlock, MutableImageBlock} from './imageBlock'
|
import {MutableImageBlock} from './imageBlock'
|
||||||
import {MutableTextBlock, TextBlock} from './textBlock'
|
import {MutableTextBlock} from './textBlock'
|
||||||
|
|
||||||
test('block: clone board', async () => {
|
test('block: clone board', async () => {
|
||||||
const boardA = createBoardTemplate()
|
const boardA = TestBlockFactory.createBoard()
|
||||||
|
boardA.isTemplate = true
|
||||||
const boardB = new MutableBoard(boardA)
|
const boardB = new MutableBoard(boardA)
|
||||||
|
|
||||||
expect(boardB).toEqual(boardA)
|
expect(boardB).toEqual(boardA)
|
||||||
|
@ -26,7 +25,7 @@ test('block: clone board', async () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
test('block: clone view', async () => {
|
test('block: clone view', async () => {
|
||||||
const viewA = createBoardView()
|
const viewA = TestBlockFactory.createBoardView()
|
||||||
const viewB = new MutableBoardView(viewA)
|
const viewB = new MutableBoardView(viewA)
|
||||||
|
|
||||||
expect(viewB).toEqual(viewA)
|
expect(viewB).toEqual(viewA)
|
||||||
|
@ -41,7 +40,8 @@ test('block: clone view', async () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
test('block: clone card', async () => {
|
test('block: clone card', async () => {
|
||||||
const cardA = createCardTemplate()
|
const cardA = TestBlockFactory.createCard()
|
||||||
|
cardA.isTemplate = true
|
||||||
const cardB = new MutableCard(cardA)
|
const cardB = new MutableCard(cardA)
|
||||||
|
|
||||||
expect(cardB).toEqual(cardA)
|
expect(cardB).toEqual(cardA)
|
||||||
|
@ -50,14 +50,16 @@ test('block: clone card', async () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
test('block: clone comment', async () => {
|
test('block: clone comment', async () => {
|
||||||
const blockA = createComment()
|
const card = TestBlockFactory.createCard()
|
||||||
|
const blockA = TestBlockFactory.createComment(card)
|
||||||
const blockB = new MutableCommentBlock(blockA)
|
const blockB = new MutableCommentBlock(blockA)
|
||||||
|
|
||||||
expect(blockB).toEqual(blockA)
|
expect(blockB).toEqual(blockA)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('block: clone text', async () => {
|
test('block: clone text', async () => {
|
||||||
const blockA = createText()
|
const card = TestBlockFactory.createCard()
|
||||||
|
const blockA = TestBlockFactory.createText(card)
|
||||||
const blockB = new MutableTextBlock(blockA)
|
const blockB = new MutableTextBlock(blockA)
|
||||||
|
|
||||||
expect(blockB).toEqual(blockA)
|
expect(blockB).toEqual(blockA)
|
||||||
|
@ -65,7 +67,8 @@ test('block: clone text', async () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
test('block: clone image', async () => {
|
test('block: clone image', async () => {
|
||||||
const blockA = createImage()
|
const card = TestBlockFactory.createCard()
|
||||||
|
const blockA = TestBlockFactory.createImage(card)
|
||||||
const blockB = new MutableImageBlock(blockA)
|
const blockB = new MutableImageBlock(blockA)
|
||||||
|
|
||||||
expect(blockB).toEqual(blockA)
|
expect(blockB).toEqual(blockA)
|
||||||
|
@ -75,124 +78,10 @@ test('block: clone image', async () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
test('block: clone divider', async () => {
|
test('block: clone divider', async () => {
|
||||||
const blockA = createDivider()
|
const card = TestBlockFactory.createCard()
|
||||||
|
const blockA = TestBlockFactory.createDivider(card)
|
||||||
const blockB = new MutableDividerBlock(blockA)
|
const blockB = new MutableDividerBlock(blockA)
|
||||||
|
|
||||||
expect(blockB).toEqual(blockA)
|
expect(blockB).toEqual(blockA)
|
||||||
expect(blockB.order).toEqual(blockA.order)
|
expect(blockB.order).toEqual(blockA.order)
|
||||||
})
|
})
|
||||||
|
|
||||||
function createBoardTemplate(): Board {
|
|
||||||
const board = new MutableBoard()
|
|
||||||
board.parentId = 'parent'
|
|
||||||
board.rootId = 'root'
|
|
||||||
board.title = 'title'
|
|
||||||
board.description = 'description'
|
|
||||||
board.showDescription = true
|
|
||||||
board.icon = 'i'
|
|
||||||
|
|
||||||
for (let i = 0; i < 5; i++) {
|
|
||||||
const propertyOption: IPropertyOption = {
|
|
||||||
id: 'property1',
|
|
||||||
value: 'value1',
|
|
||||||
color: 'color1',
|
|
||||||
}
|
|
||||||
const propertyTemplate: IPropertyTemplate = {
|
|
||||||
id: Utils.createGuid(),
|
|
||||||
name: 'Status',
|
|
||||||
type: 'select',
|
|
||||||
options: [propertyOption],
|
|
||||||
}
|
|
||||||
board.cardProperties.push(propertyTemplate)
|
|
||||||
}
|
|
||||||
board.isTemplate = true
|
|
||||||
|
|
||||||
return board
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBoardView(): BoardView {
|
|
||||||
const view = new MutableBoardView()
|
|
||||||
view.parentId = 'parent'
|
|
||||||
view.rootId = 'root'
|
|
||||||
view.title = 'title'
|
|
||||||
view.viewType = 'board'
|
|
||||||
view.groupById = 'groupId'
|
|
||||||
view.hiddenOptionIds = ['option1', 'option2', 'option3']
|
|
||||||
view.cardOrder = ['card1', 'card2', 'card3']
|
|
||||||
view.sortOptions = [
|
|
||||||
{
|
|
||||||
propertyId: 'property1',
|
|
||||||
reversed: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
propertyId: 'property2',
|
|
||||||
reversed: false,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
view.columnWidths = {
|
|
||||||
column1: 100,
|
|
||||||
column2: 200,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filter
|
|
||||||
const filterGroup = new FilterGroup()
|
|
||||||
const filter = new FilterClause()
|
|
||||||
filter.propertyId = 'property1'
|
|
||||||
filter.condition = 'includes'
|
|
||||||
filter.values = ['value1']
|
|
||||||
filterGroup.filters.push(filter)
|
|
||||||
view.filter = filterGroup
|
|
||||||
|
|
||||||
return view
|
|
||||||
}
|
|
||||||
|
|
||||||
function createCardTemplate(): Card {
|
|
||||||
const card = new MutableCard()
|
|
||||||
card.parentId = 'parent'
|
|
||||||
card.rootId = 'root'
|
|
||||||
card.title = 'title'
|
|
||||||
card.icon = 'i'
|
|
||||||
card.properties.property1 = 'value1'
|
|
||||||
card.isTemplate = true
|
|
||||||
|
|
||||||
return card
|
|
||||||
}
|
|
||||||
|
|
||||||
function createComment(): CommentBlock {
|
|
||||||
const block = new MutableCommentBlock()
|
|
||||||
block.parentId = 'parent'
|
|
||||||
block.rootId = 'root'
|
|
||||||
block.title = 'title'
|
|
||||||
|
|
||||||
return block
|
|
||||||
}
|
|
||||||
|
|
||||||
function createText(): TextBlock {
|
|
||||||
const block = new MutableTextBlock()
|
|
||||||
block.parentId = 'parent'
|
|
||||||
block.rootId = 'root'
|
|
||||||
block.title = 'title'
|
|
||||||
block.order = 100
|
|
||||||
|
|
||||||
return block
|
|
||||||
}
|
|
||||||
|
|
||||||
function createImage(): ImageBlock {
|
|
||||||
const block = new MutableImageBlock()
|
|
||||||
block.parentId = 'parent'
|
|
||||||
block.rootId = 'root'
|
|
||||||
block.url = 'url'
|
|
||||||
block.order = 100
|
|
||||||
|
|
||||||
return block
|
|
||||||
}
|
|
||||||
|
|
||||||
function createDivider(): DividerBlock {
|
|
||||||
const block = new MutableDividerBlock()
|
|
||||||
block.parentId = 'parent'
|
|
||||||
block.rootId = 'root'
|
|
||||||
block.title = 'title'
|
|
||||||
block.order = 100
|
|
||||||
|
|
||||||
return block
|
|
||||||
}
|
|
||||||
|
|
130
webapp/src/test/block.ts
Normal file
130
webapp/src/test/block.ts
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See LICENSE.txt for license information.
|
||||||
|
|
||||||
|
import {IPropertyOption, IPropertyTemplate, MutableBoard} from '../blocks/board'
|
||||||
|
import {MutableBoardView} from '../blocks/boardView'
|
||||||
|
import {Card, MutableCard} from '../blocks/card'
|
||||||
|
import {MutableCommentBlock} from '../blocks/commentBlock'
|
||||||
|
import {DividerBlock, MutableDividerBlock} from '../blocks/dividerBlock'
|
||||||
|
import {ImageBlock, MutableImageBlock} from '../blocks/imageBlock'
|
||||||
|
import {MutableTextBlock, TextBlock} from '../blocks/textBlock'
|
||||||
|
import {FilterClause} from '../filterClause'
|
||||||
|
import {FilterGroup} from '../filterGroup'
|
||||||
|
import {Utils} from '../utils'
|
||||||
|
|
||||||
|
class TestBlockFactory {
|
||||||
|
static createBoard(): MutableBoard {
|
||||||
|
const board = new MutableBoard()
|
||||||
|
board.parentId = 'parent'
|
||||||
|
board.rootId = 'root'
|
||||||
|
board.title = 'title'
|
||||||
|
board.description = 'description'
|
||||||
|
board.showDescription = true
|
||||||
|
board.icon = 'i'
|
||||||
|
|
||||||
|
for (let i = 0; i < 5; i++) {
|
||||||
|
const propertyOption: IPropertyOption = {
|
||||||
|
id: 'property1',
|
||||||
|
value: 'value1',
|
||||||
|
color: 'color1',
|
||||||
|
}
|
||||||
|
const propertyTemplate: IPropertyTemplate = {
|
||||||
|
id: Utils.createGuid(),
|
||||||
|
name: 'Status',
|
||||||
|
type: 'select',
|
||||||
|
options: [propertyOption],
|
||||||
|
}
|
||||||
|
board.cardProperties.push(propertyTemplate)
|
||||||
|
}
|
||||||
|
|
||||||
|
return board
|
||||||
|
}
|
||||||
|
|
||||||
|
static createBoardView(): MutableBoardView {
|
||||||
|
const view = new MutableBoardView()
|
||||||
|
view.parentId = 'parent'
|
||||||
|
view.rootId = 'root'
|
||||||
|
view.title = 'title'
|
||||||
|
view.viewType = 'board'
|
||||||
|
view.groupById = 'groupId'
|
||||||
|
view.hiddenOptionIds = ['option1', 'option2', 'option3']
|
||||||
|
view.cardOrder = ['card1', 'card2', 'card3']
|
||||||
|
view.sortOptions = [
|
||||||
|
{
|
||||||
|
propertyId: 'property1',
|
||||||
|
reversed: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
propertyId: 'property2',
|
||||||
|
reversed: false,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
view.columnWidths = {
|
||||||
|
column1: 100,
|
||||||
|
column2: 200,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter
|
||||||
|
const filterGroup = new FilterGroup()
|
||||||
|
const filter = new FilterClause()
|
||||||
|
filter.propertyId = 'property1'
|
||||||
|
filter.condition = 'includes'
|
||||||
|
filter.values = ['value1']
|
||||||
|
filterGroup.filters.push(filter)
|
||||||
|
view.filter = filterGroup
|
||||||
|
|
||||||
|
return view
|
||||||
|
}
|
||||||
|
|
||||||
|
static createCard(): MutableCard {
|
||||||
|
const card = new MutableCard()
|
||||||
|
card.parentId = 'parent'
|
||||||
|
card.rootId = 'root'
|
||||||
|
card.title = 'title'
|
||||||
|
card.icon = 'i'
|
||||||
|
card.properties.property1 = 'value1'
|
||||||
|
|
||||||
|
return card
|
||||||
|
}
|
||||||
|
|
||||||
|
static createComment(card: Card): MutableCommentBlock {
|
||||||
|
const block = new MutableCommentBlock()
|
||||||
|
block.parentId = card.id
|
||||||
|
block.rootId = card.rootId
|
||||||
|
block.title = 'title'
|
||||||
|
|
||||||
|
return block
|
||||||
|
}
|
||||||
|
|
||||||
|
static createText(card: Card): TextBlock {
|
||||||
|
const block = new MutableTextBlock()
|
||||||
|
block.parentId = card.id
|
||||||
|
block.rootId = card.rootId
|
||||||
|
block.title = 'title'
|
||||||
|
block.order = 100
|
||||||
|
|
||||||
|
return block
|
||||||
|
}
|
||||||
|
|
||||||
|
static createImage(card: Card): ImageBlock {
|
||||||
|
const block = new MutableImageBlock()
|
||||||
|
block.parentId = card.id
|
||||||
|
block.rootId = card.rootId
|
||||||
|
block.url = 'url'
|
||||||
|
block.order = 100
|
||||||
|
|
||||||
|
return block
|
||||||
|
}
|
||||||
|
|
||||||
|
static createDivider(card: Card): DividerBlock {
|
||||||
|
const block = new MutableDividerBlock()
|
||||||
|
block.parentId = card.id
|
||||||
|
block.rootId = card.rootId
|
||||||
|
block.title = 'title'
|
||||||
|
block.order = 100
|
||||||
|
|
||||||
|
return block
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export {TestBlockFactory}
|
|
@ -5,12 +5,7 @@
|
||||||
console.log = jest.fn()
|
console.log = jest.fn()
|
||||||
|
|
||||||
import 'isomorphic-fetch'
|
import 'isomorphic-fetch'
|
||||||
import {IBlock} from '../blocks/block'
|
import {TestBlockFactory} from '../test/block'
|
||||||
import {Card, MutableCard} from '../blocks/card'
|
|
||||||
import {MutableCommentBlock} from '../blocks/commentBlock'
|
|
||||||
import {DividerBlock, MutableDividerBlock} from '../blocks/dividerBlock'
|
|
||||||
import {ImageBlock, MutableImageBlock} from '../blocks/imageBlock'
|
|
||||||
import {MutableTextBlock, TextBlock} from '../blocks/textBlock'
|
|
||||||
|
|
||||||
import {MutableCardTree} from './cardTree'
|
import {MutableCardTree} from './cardTree'
|
||||||
|
|
||||||
|
@ -25,21 +20,15 @@ beforeEach(() => {
|
||||||
fetchMock.mockReset()
|
fetchMock.mockReset()
|
||||||
})
|
})
|
||||||
|
|
||||||
test('CardTree: sync', async () => {
|
test('CardTree', async () => {
|
||||||
const blocks: IBlock[] = []
|
const card = TestBlockFactory.createCard()
|
||||||
const card = createCard()
|
|
||||||
expect(card.id).not.toBeNull()
|
expect(card.id).not.toBeNull()
|
||||||
blocks.push(card)
|
const comment = TestBlockFactory.createComment(card)
|
||||||
const comment = createComment(card)
|
const text = TestBlockFactory.createText(card)
|
||||||
blocks.push(comment)
|
const image = TestBlockFactory.createImage(card)
|
||||||
const text = createText(card)
|
const divider = TestBlockFactory.createDivider(card)
|
||||||
blocks.push(text)
|
|
||||||
const image = createImage(card)
|
|
||||||
blocks.push(image)
|
|
||||||
const divider = createDivider(card)
|
|
||||||
blocks.push(divider)
|
|
||||||
|
|
||||||
fetchMock.mockReturnValueOnce(jsonResponse(JSON.stringify(blocks)))
|
fetchMock.mockReturnValueOnce(jsonResponse(JSON.stringify([card, comment, text, image, divider])))
|
||||||
const cardTree = new MutableCardTree(card.id)
|
const cardTree = new MutableCardTree(card.id)
|
||||||
await cardTree.sync()
|
await cardTree.sync()
|
||||||
|
|
||||||
|
@ -49,26 +38,19 @@ test('CardTree: sync', async () => {
|
||||||
expect(cardTree.contents).toEqual([text, image, divider])
|
expect(cardTree.contents).toEqual([text, image, divider])
|
||||||
|
|
||||||
// Incremental update
|
// Incremental update
|
||||||
const blocks2: IBlock[] = []
|
const comment2 = TestBlockFactory.createComment(card)
|
||||||
const comment2 = createComment(card)
|
const text2 = TestBlockFactory.createText(card)
|
||||||
blocks2.push(comment2)
|
const image2 = TestBlockFactory.createImage(card)
|
||||||
const text2 = createText(card)
|
const divider2 = TestBlockFactory.createDivider(card)
|
||||||
blocks2.push(text2)
|
|
||||||
const image2 = createImage(card)
|
|
||||||
blocks2.push(image2)
|
|
||||||
const divider2 = createDivider(card)
|
|
||||||
blocks2.push(divider2)
|
|
||||||
|
|
||||||
expect(cardTree.incrementalUpdate(blocks2)).toBe(true)
|
expect(cardTree.incrementalUpdate([comment2, text2, image2, divider2])).toBe(true)
|
||||||
expect(cardTree.comments).toEqual([comment, comment2])
|
expect(cardTree.comments).toEqual([comment, comment2])
|
||||||
expect(cardTree.contents).toEqual([text, image, divider, text2, image2, divider2])
|
expect(cardTree.contents).toEqual([text, image, divider, text2, image2, divider2])
|
||||||
|
|
||||||
// Incremental update: No change
|
// Incremental update: No change
|
||||||
const blocks3: IBlock[] = []
|
const anotherCard = TestBlockFactory.createCard()
|
||||||
const comment3 = createComment(card)
|
const comment3 = TestBlockFactory.createComment(anotherCard)
|
||||||
comment3.parentId = 'another parent'
|
expect(cardTree.incrementalUpdate([comment3])).toBe(false)
|
||||||
blocks3.push(comment3)
|
|
||||||
expect(cardTree.incrementalUpdate(blocks3)).toBe(false)
|
|
||||||
|
|
||||||
// Copy
|
// Copy
|
||||||
const cardTree2 = cardTree.mutableCopy()
|
const cardTree2 = cardTree.mutableCopy()
|
||||||
|
@ -80,53 +62,3 @@ async function jsonResponse(json: string) {
|
||||||
const response = new Response(json)
|
const response = new Response(json)
|
||||||
return response
|
return response
|
||||||
}
|
}
|
||||||
|
|
||||||
function createCard(): Card {
|
|
||||||
const card = new MutableCard()
|
|
||||||
card.parentId = 'parent'
|
|
||||||
card.rootId = 'root'
|
|
||||||
card.title = 'title'
|
|
||||||
card.icon = 'i'
|
|
||||||
card.properties.property1 = 'value1'
|
|
||||||
|
|
||||||
return card
|
|
||||||
}
|
|
||||||
|
|
||||||
function createComment(card: Card): MutableCommentBlock {
|
|
||||||
const block = new MutableCommentBlock()
|
|
||||||
block.parentId = card.id
|
|
||||||
block.rootId = card.rootId
|
|
||||||
block.title = 'title'
|
|
||||||
|
|
||||||
return block
|
|
||||||
}
|
|
||||||
|
|
||||||
function createText(card: Card): TextBlock {
|
|
||||||
const block = new MutableTextBlock()
|
|
||||||
block.parentId = card.id
|
|
||||||
block.rootId = card.rootId
|
|
||||||
block.title = 'title'
|
|
||||||
block.order = 100
|
|
||||||
|
|
||||||
return block
|
|
||||||
}
|
|
||||||
|
|
||||||
function createImage(card: Card): ImageBlock {
|
|
||||||
const block = new MutableImageBlock()
|
|
||||||
block.parentId = card.id
|
|
||||||
block.rootId = card.rootId
|
|
||||||
block.url = 'url'
|
|
||||||
block.order = 100
|
|
||||||
|
|
||||||
return block
|
|
||||||
}
|
|
||||||
|
|
||||||
function createDivider(card: Card): DividerBlock {
|
|
||||||
const block = new MutableDividerBlock()
|
|
||||||
block.parentId = card.id
|
|
||||||
block.rootId = card.rootId
|
|
||||||
block.title = 'title'
|
|
||||||
block.order = 100
|
|
||||||
|
|
||||||
return block
|
|
||||||
}
|
|
||||||
|
|
67
webapp/src/viewModel/workspaceTree.test.ts
Normal file
67
webapp/src/viewModel/workspaceTree.test.ts
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See LICENSE.txt for license information.
|
||||||
|
console.log = jest.fn()
|
||||||
|
|
||||||
|
import 'isomorphic-fetch'
|
||||||
|
import {TestBlockFactory} from '../test/block'
|
||||||
|
|
||||||
|
import {MutableWorkspaceTree} from './workspaceTree'
|
||||||
|
|
||||||
|
const fetchMock = jest.fn(async () => {
|
||||||
|
const response = new Response()
|
||||||
|
return response
|
||||||
|
})
|
||||||
|
|
||||||
|
global.fetch = fetchMock
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fetchMock.mockReset()
|
||||||
|
})
|
||||||
|
|
||||||
|
test('WorkspaceTree', async () => {
|
||||||
|
const board = TestBlockFactory.createBoard()
|
||||||
|
const boardTemplate = TestBlockFactory.createBoard()
|
||||||
|
boardTemplate.isTemplate = true
|
||||||
|
const view = TestBlockFactory.createBoardView()
|
||||||
|
|
||||||
|
// Sync
|
||||||
|
fetchMock.mockReturnValueOnce(jsonResponse(JSON.stringify([board, boardTemplate])))
|
||||||
|
fetchMock.mockReturnValueOnce(jsonResponse(JSON.stringify([view])))
|
||||||
|
const workspaceTree = new MutableWorkspaceTree()
|
||||||
|
await workspaceTree.sync()
|
||||||
|
|
||||||
|
expect(fetchMock).toBeCalledTimes(2)
|
||||||
|
expect(workspaceTree.boards).toEqual([board])
|
||||||
|
expect(workspaceTree.boardTemplates).toEqual([boardTemplate])
|
||||||
|
expect(workspaceTree.views).toEqual([view])
|
||||||
|
|
||||||
|
// Incremental update
|
||||||
|
const board2 = TestBlockFactory.createBoard()
|
||||||
|
const boardTemplate2 = TestBlockFactory.createBoard()
|
||||||
|
boardTemplate2.isTemplate = true
|
||||||
|
const view2 = TestBlockFactory.createBoardView()
|
||||||
|
|
||||||
|
expect(workspaceTree.incrementalUpdate([board2, boardTemplate2, view2])).toBe(true)
|
||||||
|
expect(workspaceTree.boards).toEqual([board, board2])
|
||||||
|
expect(workspaceTree.boardTemplates).toEqual([boardTemplate, boardTemplate2])
|
||||||
|
expect(workspaceTree.views).toEqual([view, view2])
|
||||||
|
|
||||||
|
// Incremental update: No change
|
||||||
|
const card = TestBlockFactory.createCard()
|
||||||
|
expect(workspaceTree.incrementalUpdate([card])).toBe(false)
|
||||||
|
expect(workspaceTree.boards).toEqual([board, board2])
|
||||||
|
expect(workspaceTree.boardTemplates).toEqual([boardTemplate, boardTemplate2])
|
||||||
|
expect(workspaceTree.views).toEqual([view, view2])
|
||||||
|
|
||||||
|
// Copy
|
||||||
|
const workspaceTree2 = workspaceTree.mutableCopy()
|
||||||
|
expect(workspaceTree2).toEqual(workspaceTree)
|
||||||
|
expect(workspaceTree2.boards).toEqual(workspaceTree.boards)
|
||||||
|
expect(workspaceTree2.boardTemplates).toEqual(workspaceTree.boardTemplates)
|
||||||
|
expect(workspaceTree2.views).toEqual(workspaceTree.views)
|
||||||
|
})
|
||||||
|
|
||||||
|
async function jsonResponse(json: string) {
|
||||||
|
const response = new Response(json)
|
||||||
|
return response
|
||||||
|
}
|
Loading…
Reference in a new issue