main

mattermost/focalboard

Last updated at: 29/12/2023 09:39

templates_test.go

TLDR

This file templates_test.go contains tests for the initializeTemplates function of the app package in the Demo Projects project. The test cases cover scenarios where template initialization is needed and where it can be skipped.

Methods

TestApp_initializeTemplates

This method contains tests for the initializeTemplates function. It sets up the necessary test environment and asserts the expected behavior of the function.

END

package app

import (
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/mattermost/focalboard/server/model"
	"github.com/mattermost/focalboard/server/utils"
	"github.com/stretchr/testify/require"

	"github.com/mattermost/mattermost-server/v6/plugin/plugintest/mock"
)

func TestApp_initializeTemplates(t *testing.T) {
	board := &model.Board{
		ID:              utils.NewID(utils.IDTypeBoard),
		TeamID:          model.GlobalTeamID,
		Type:            model.BoardTypeOpen,
		Title:           "test board",
		IsTemplate:      true,
		TemplateVersion: defaultTemplateVersion,
	}

	block := &model.Block{
		ID:       utils.NewID(utils.IDTypeBlock),
		ParentID: board.ID,
		BoardID:  board.ID,
		Type:     model.TypeText,
		Title:    "test text",
	}

	boardsAndBlocks := &model.BoardsAndBlocks{
		Boards: []*model.Board{board},
		Blocks: []*model.Block{block},
	}

	boardMember := &model.BoardMember{
		BoardID: board.ID,
		UserID:  "test-user",
	}

	t.Run("Needs template init", func(t *testing.T) {
		th, tearDown := SetupTestHelper(t)
		defer tearDown()

		th.Store.EXPECT().GetTemplateBoards(model.GlobalTeamID, "").Return([]*model.Board{}, nil)
		th.Store.EXPECT().RemoveDefaultTemplates([]*model.Board{}).Return(nil)
		th.Store.EXPECT().CreateBoardsAndBlocks(gomock.Any(), gomock.Any()).AnyTimes().Return(boardsAndBlocks, nil)
		th.Store.EXPECT().GetMembersForBoard(board.ID).AnyTimes().Return([]*model.BoardMember{}, nil)
		th.Store.EXPECT().GetBoard(board.ID).AnyTimes().Return(board, nil)
		th.Store.EXPECT().GetMemberForBoard(gomock.Any(), gomock.Any()).AnyTimes().Return(boardMember, nil)
		th.Store.EXPECT().SaveFileInfo(gomock.Any()).Return(nil).AnyTimes()

		th.FilesBackend.On("WriteFile", mock.Anything, mock.Anything).Return(int64(1), nil)

		done, err := th.App.initializeTemplates()
		require.NoError(t, err, "initializeTemplates should not error")
		require.True(t, done, "initialization was needed")
	})

	t.Run("Skip template init", func(t *testing.T) {
		th, tearDown := SetupTestHelper(t)
		defer tearDown()

		th.Store.EXPECT().GetTemplateBoards(model.GlobalTeamID, "").Return([]*model.Board{board}, nil)

		done, err := th.App.initializeTemplates()
		require.NoError(t, err, "initializeTemplates should not error")
		require.False(t, done, "initialization was not needed")
	})
}