// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import {Board, IPropertyOption, IPropertyTemplate, createBoard} from '../blocks/board' import {BoardView, createBoardView} from '../blocks/boardView' import {Card, createCard} from '../blocks/card' import {CommentBlock, createCommentBlock} from '../blocks/commentBlock' import {DividerBlock, createDividerBlock} from '../blocks/dividerBlock' import {createFilterClause} from '../blocks/filterClause' import {createFilterGroup} from '../blocks/filterGroup' import {ImageBlock, createImageBlock} from '../blocks/imageBlock' import {TextBlock, createTextBlock} from '../blocks/textBlock' import {Category, CategoryBoards} from '../store/sidebar' import {Utils} from '../utils' import {CheckboxBlock, createCheckboxBlock} from '../blocks/checkboxBlock' import {Block} from '../blocks/block' import {IUser} from '../user' class TestBlockFactory { static createBoard(): Board { const board = createBoard() board.title = 'board title' board.description = 'description' board.showDescription = true board.icon = 'i' for (let i = 0; i < 3; i++) { const propertyOption: IPropertyOption = { id: 'value1', value: 'value 1', color: 'propColorBrown', } const propertyTemplate: IPropertyTemplate = { id: `property${i + 1}`, name: `Property ${i + 1}`, type: 'select', options: [propertyOption], } board.cardProperties.push(propertyTemplate) } return board } static createBoardView(board?: Board): BoardView { const view = createBoardView() view.boardId = board ? board.id : 'board' view.title = 'view title' view.fields.viewType = 'board' view.fields.groupById = 'property1' view.fields.hiddenOptionIds = ['value1'] view.fields.cardOrder = ['card1', 'card2', 'card3'] view.fields.sortOptions = [ { propertyId: 'property1', reversed: true, }, { propertyId: 'property2', reversed: false, }, ] view.fields.columnWidths = { column1: 100, column2: 200, } // Filter const filterGroup = createFilterGroup() const filter = createFilterClause() filter.propertyId = 'property1' filter.condition = 'includes' filter.values = ['value1'] filterGroup.filters.push(filter) view.fields.filter = filterGroup return view } static createTableView(board?: Board): BoardView { const view = createBoardView() view.boardId = board ? board.id : 'board' view.title = 'view title' view.fields.viewType = 'table' view.fields.groupById = 'property1' view.fields.hiddenOptionIds = ['value1'] view.fields.cardOrder = ['card1', 'card2', 'card3'] view.fields.sortOptions = [ { propertyId: 'property1', reversed: true, }, { propertyId: 'property2', reversed: false, }, ] view.fields.columnWidths = { column1: 100, column2: 200, } // Filter const filterGroup = createFilterGroup() const filter = createFilterClause() filter.propertyId = 'property1' filter.condition = 'includes' filter.values = ['value1'] filterGroup.filters.push(filter) view.fields.filter = filterGroup return view } static createCard(board?: Board): Card { const card = createCard() card.boardId = board ? board.id : 'board' card.title = 'title' card.fields.icon = 'i' card.fields.properties.property1 = 'value1' return card } private static addToCard(block: BlockType, card: Card, isContent = true): BlockType { block.parentId = card.id block.boardId = card.boardId if (isContent) { card.fields.contentOrder.push(block.id) } return block } static createComment(card: Card): CommentBlock { const block = this.addToCard(createCommentBlock(), card, false) block.title = 'title' return block } static createText(card: Card): TextBlock { const block = this.addToCard(createTextBlock(), card) block.title = 'title' return block } static createImage(card: Card): ImageBlock { const block = this.addToCard(createImageBlock(), card) block.fields.fileId = 'fileId' return block } static createDivider(card: Card): DividerBlock { const block = this.addToCard(createDividerBlock(), card) block.title = 'title' return block } static createCheckbox(card: Card): CheckboxBlock { const block = this.addToCard(createCheckboxBlock(), card) block.title = 'title' return block } static createCategory(): Category { const now = Date.now() return { id: Utils.createGuid(Utils.blockTypeToIDType('7')), name: 'Category', createAt: now, updateAt: now, deleteAt: 0, userID: '', teamID: '', collapsed: false, type: 'custom', sortOrder: 0, isNew: false, } } static createCategoryBoards(): CategoryBoards { return { ...TestBlockFactory.createCategory(), boardMetadata: [], } } static createUser(): IUser { return { id: 'user-id-1', username: 'Dwight Schrute', email: 'dwight.schrute@dundermifflin.com', nickname: '', firstname: '', lastname: '', props: {}, create_at: Date.now(), update_at: Date.now(), is_bot: false, is_guest: false, roles: 'system_user', } } } export {TestBlockFactory}