main

mattermost/focalboard

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

system.go

TLDR

This file contains test functions for the store package in the Demo Projects project. It includes a test for setting and getting system settings.

Methods

addBaseSettings

This method adds the system settings from dataMigrationSystemSettings and an additional set of settings to a map and returns the result.

StoreTestSystemStore

This method is a wrapper function for setting up and running tests for the system store. It takes a testing object and a setup function as parameters.

testSetGetSystemSettings

This method contains sub-tests for getting empty settings, setting and updating multiple settings, and getting a single setting.

END

package storetests

import (
	"testing"

	"github.com/mattermost/focalboard/server/services/store"
	"github.com/stretchr/testify/require"
)

// these system settings are created when running the data migrations,
// so they will be present after the tests setup.
var dataMigrationSystemSettings = map[string]string{
	"UniqueIDsMigrationComplete":            "true",
	"CategoryUuidIdMigrationComplete":       "true",
	"DeDuplicateCategoryBoardTableComplete": "true",
}

func addBaseSettings(m map[string]string) map[string]string {
	r := map[string]string{}
	for k, v := range dataMigrationSystemSettings {
		r[k] = v
	}
	for k, v := range m {
		r[k] = v
	}
	return r
}

func StoreTestSystemStore(t *testing.T, setup func(t *testing.T) (store.Store, func())) {
	t.Run("SetGetSystemSettings", func(t *testing.T) {
		store, tearDown := setup(t)
		defer tearDown()
		testSetGetSystemSettings(t, store)
	})
}

func testSetGetSystemSettings(t *testing.T, store store.Store) {
	t.Run("Get empty settings", func(t *testing.T) {
		settings, err := store.GetSystemSettings()
		require.NoError(t, err)
		require.Equal(t, dataMigrationSystemSettings, settings)
	})

	t.Run("Set, update and get multiple settings", func(t *testing.T) {
		err := store.SetSystemSetting("test-1", "test-value-1")
		require.NoError(t, err)
		err = store.SetSystemSetting("test-2", "test-value-2")
		require.NoError(t, err)
		settings, err := store.GetSystemSettings()
		require.NoError(t, err)
		require.Equal(t, addBaseSettings(map[string]string{"test-1": "test-value-1", "test-2": "test-value-2"}), settings)

		err = store.SetSystemSetting("test-2", "test-value-updated-2")
		require.NoError(t, err)
		settings, err = store.GetSystemSettings()
		require.NoError(t, err)
		require.Equal(t, addBaseSettings(map[string]string{"test-1": "test-value-1", "test-2": "test-value-updated-2"}), settings)
	})

	t.Run("Get a single setting", func(t *testing.T) {
		value, err := store.GetSystemSetting("test-1")
		require.NoError(t, err)
		require.Equal(t, "test-value-1", value)
	})
}