main

mattermost/focalboard

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

migration37_test.go

TLDR

This file is a test file for migration 37 in the Demo Projects project. It contains test cases for different scenarios related to hidden boards.

Methods

There are no methods in this file.

Classes

There are no classes in this file.

package migrationstests

import (
	"testing"

	"github.com/stretchr/testify/require"
)

func Test37MigrateHiddenBoardIDTest(t *testing.T) {
	t.Run("no existing hidden boards exist", func(t *testing.T) {
		th, tearDown := SetupTestHelper(t)
		defer tearDown()
		th.f.MigrateToStep(37)
	})

	t.Run("SQLite - existsing category boards with some hidden boards", func(t *testing.T) {
		th, tearDown := SetupTestHelper(t)
		defer tearDown()

		if th.IsMySQL() || th.IsPostgres() {
			return
		}

		th.f.MigrateToStep(36).
			ExecFile("./fixtures/test37_valid_data_sqlite.sql")

		th.f.MigrateToStep(37)

		type categoryBoard struct {
			User_ID     string
			Category_ID string
			Board_ID    string
			Hidden      bool
		}

		var hiddenCategoryBoards []categoryBoard

		query := "SELECT user_id, category_id, board_id, hidden FROM focalboard_category_boards WHERE hidden = true"
		err := th.f.DB().Select(&hiddenCategoryBoards, query)
		require.NoError(t, err)
		require.Equal(t, 3, len(hiddenCategoryBoards))
		require.Contains(t, hiddenCategoryBoards, categoryBoard{User_ID: "user-id-1", Category_ID: "category-id-1", Board_ID: "board-id-1", Hidden: true})
		require.Contains(t, hiddenCategoryBoards, categoryBoard{User_ID: "user-id-2", Category_ID: "category-id-3", Board_ID: "board-id-3", Hidden: true})
		require.Contains(t, hiddenCategoryBoards, categoryBoard{User_ID: "user-id-2", Category_ID: "category-id-3", Board_ID: "board-id-4", Hidden: true})
	})

	t.Run("MySQL and PostgreSQL - existsing category boards with some hidden boards", func(t *testing.T) {
		th, tearDown := SetupPluginTestHelper(t)
		defer tearDown()

		if th.IsSQLite() {
			return
		}

		th.f.MigrateToStep(36).
			ExecFile("./fixtures/test37_valid_data.sql")

		th.f.MigrateToStep(37)

		type categoryBoard struct {
			User_ID     string
			Category_ID string
			Board_ID    string
			Hidden      bool
		}

		var hiddenCategoryBoards []categoryBoard

		query := "SELECT user_id, category_id, board_id, hidden FROM focalboard_category_boards WHERE hidden = true"
		err := th.f.DB().Select(&hiddenCategoryBoards, query)
		require.NoError(t, err)
		require.Equal(t, 3, len(hiddenCategoryBoards))
		require.Contains(t, hiddenCategoryBoards, categoryBoard{User_ID: "user-id-1", Category_ID: "category-id-1", Board_ID: "board-id-1", Hidden: true})
		require.Contains(t, hiddenCategoryBoards, categoryBoard{User_ID: "user-id-2", Category_ID: "category-id-3", Board_ID: "board-id-3", Hidden: true})
		require.Contains(t, hiddenCategoryBoards, categoryBoard{User_ID: "user-id-2", Category_ID: "category-id-3", Board_ID: "board-id-4", Hidden: true})
	})

	t.Run("no hidden boards", func(t *testing.T) {
		th, tearDown := SetupPluginTestHelper(t)
		defer tearDown()

		th.f.MigrateToStep(36).
			ExecFile("./fixtures/test37_valid_data_no_hidden_boards.sql")

		th.f.MigrateToStep(37)

		var count int
		query := "SELECT count(*) FROM focalboard_category_boards WHERE hidden = true"
		err := th.f.DB().Get(&count, query)
		require.NoError(t, err)
		require.Equal(t, 0, count)
	})

	t.Run("SQLite - preference but no hidden board", func(t *testing.T) {
		th, tearDown := SetupTestHelper(t)
		defer tearDown()

		if th.IsMySQL() || th.IsPostgres() {
			return
		}

		th.f.MigrateToStep(36).
			ExecFile("./fixtures/test37_valid_data_sqlite_preference_but_no_hidden_board.sql")

		th.f.MigrateToStep(37)

		var count int
		query := "SELECT count(*) FROM focalboard_category_boards WHERE hidden = true"
		err := th.f.DB().Get(&count, query)
		require.NoError(t, err)
		require.Equal(t, 0, count)
	})

	t.Run("MySQL and PostgreSQL - preference but no hidden board", func(t *testing.T) {
		th, tearDown := SetupPluginTestHelper(t)
		defer tearDown()

		if th.IsSQLite() {
			return
		}

		th.f.MigrateToStep(36).
			ExecFile("./fixtures/test37_valid_data_preference_but_no_hidden_board.sql")

		th.f.MigrateToStep(37)

		var count int
		query := "SELECT count(*) FROM focalboard_category_boards WHERE hidden = true"
		err := th.f.DB().Get(&count, query)
		require.NoError(t, err)
		require.Equal(t, 0, count)
	})

}