main

mattermost/focalboard

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

sharing_test.go

TLDR

This file sharing_test.go contains test functions for the GetSharing and UpsertSharing methods of the App class in the app package. The test functions verify the behavior of these methods under different scenarios.

Methods

TestGetSharing

This method tests the GetSharing method of the App class. It verifies that the GetSharing method correctly retrieves a sharing object when it exists. It also tests the error scenarios when the sharing object is not found or when an error occurs while retrieving the sharing object.

TestUpsertSharing

This method tests the UpsertSharing method of the App class. It verifies that the UpsertSharing method successfully saves a sharing object. It also tests the error scenario when an error occurs while saving the sharing object.

package app

import (
	"database/sql"
	"testing"

	"github.com/mattermost/focalboard/server/model"
	"github.com/mattermost/focalboard/server/utils"
	"github.com/pkg/errors"
	"github.com/stretchr/testify/require"
)

func TestGetSharing(t *testing.T) {
	th, tearDown := SetupTestHelper(t)
	defer tearDown()

	t.Run("should get a sharing successfully", func(t *testing.T) {
		want := &model.Sharing{
			ID:         utils.NewID(utils.IDTypeBlock),
			Enabled:    true,
			Token:      "token",
			ModifiedBy: "otherid",
			UpdateAt:   utils.GetMillis(),
		}
		th.Store.EXPECT().GetSharing("test-id").Return(want, nil)

		result, err := th.App.GetSharing("test-id")
		require.NoError(t, err)

		require.Equal(t, result, want)
		require.NotNil(t, th.App)
	})

	t.Run("should fail to get a sharing", func(t *testing.T) {
		th.Store.EXPECT().GetSharing("test-id").Return(
			nil,
			errors.New("sharing not found"),
		)
		result, err := th.App.GetSharing("test-id")

		require.Nil(t, result)
		require.Error(t, err)
		require.Equal(t, "sharing not found", err.Error())
	})

	t.Run("should return a not found error", func(t *testing.T) {
		th.Store.EXPECT().GetSharing("test-id").Return(
			nil,
			sql.ErrNoRows,
		)
		result, err := th.App.GetSharing("test-id")
		require.Error(t, err)
		require.True(t, model.IsErrNotFound(err))
		require.Nil(t, result)
	})
}

func TestUpsertSharing(t *testing.T) {
	th, tearDown := SetupTestHelper(t)
	defer tearDown()

	sharing := model.Sharing{
		ID:         utils.NewID(utils.IDTypeBlock),
		Enabled:    true,
		Token:      "token",
		ModifiedBy: "otherid",
		UpdateAt:   utils.GetMillis(),
	}

	t.Run("should success to upsert sharing", func(t *testing.T) {
		th.Store.EXPECT().UpsertSharing(sharing).Return(nil)
		err := th.App.UpsertSharing(sharing)

		require.NoError(t, err)
	})

	t.Run("should fail to upsert a sharing", func(t *testing.T) {
		th.Store.EXPECT().UpsertSharing(sharing).Return(errors.New("sharing not found"))
		err := th.App.UpsertSharing(sharing)

		require.Error(t, err)
		require.Equal(t, "sharing not found", err.Error())
	})
}