You've already forked focalboard
							
							
				mirror of
				https://github.com/mattermost/focalboard.git
				synced 2025-10-31 00:17:42 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			155 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package app
 | |
| 
 | |
| import (
 | |
| 	"database/sql"
 | |
| 	"errors"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/golang/mock/gomock"
 | |
| 	"github.com/mattermost/focalboard/server/model"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| )
 | |
| 
 | |
| var errInvalidTeam = errors.New("invalid team id")
 | |
| 
 | |
| var mockTeam = &model.Team{
 | |
| 	ID:    "mock-team-id",
 | |
| 	Title: "MockTeam",
 | |
| }
 | |
| 
 | |
| var errUpsertSignupToken = errors.New("upsert error")
 | |
| 
 | |
| func TestGetRootTeam(t *testing.T) {
 | |
| 	var newRootTeam = &model.Team{
 | |
| 		ID:    "0",
 | |
| 		Title: "NewRootTeam",
 | |
| 	}
 | |
| 
 | |
| 	testCases := []struct {
 | |
| 		title                    string
 | |
| 		teamToReturnBeforeUpsert *model.Team
 | |
| 		teamToReturnAfterUpsert  *model.Team
 | |
| 		isError                  bool
 | |
| 	}{
 | |
| 		{
 | |
| 			"Success, Return new root team, when root team returned by mockstore is nil",
 | |
| 			nil,
 | |
| 			newRootTeam,
 | |
| 			false,
 | |
| 		},
 | |
| 		{
 | |
| 			"Success, Return existing root team, when root team returned by mockstore is notnil",
 | |
| 			newRootTeam,
 | |
| 			nil,
 | |
| 			false,
 | |
| 		},
 | |
| 		{
 | |
| 			"Fail, Return nil, when root team returned by mockstore is nil, and upsert new root team fails",
 | |
| 			nil,
 | |
| 			nil,
 | |
| 			true,
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, tc := range testCases {
 | |
| 		t.Run(tc.title, func(t *testing.T) {
 | |
| 			th, tearDown := SetupTestHelper(t)
 | |
| 			defer tearDown()
 | |
| 			th.Store.EXPECT().GetTeam("0").Return(tc.teamToReturnBeforeUpsert, nil)
 | |
| 			if tc.teamToReturnBeforeUpsert == nil {
 | |
| 				th.Store.EXPECT().UpsertTeamSignupToken(gomock.Any()).DoAndReturn(
 | |
| 					func(arg0 model.Team) error {
 | |
| 						if tc.isError {
 | |
| 							return errUpsertSignupToken
 | |
| 						}
 | |
| 						th.Store.EXPECT().GetTeam("0").Return(tc.teamToReturnAfterUpsert, nil)
 | |
| 						return nil
 | |
| 					})
 | |
| 			}
 | |
| 			rootTeam, err := th.App.GetRootTeam()
 | |
| 
 | |
| 			if tc.isError {
 | |
| 				require.Error(t, err)
 | |
| 			} else {
 | |
| 				assert.NotNil(t, rootTeam.ID)
 | |
| 				assert.NotNil(t, rootTeam.SignupToken)
 | |
| 				assert.Equal(t, "", rootTeam.ModifiedBy)
 | |
| 				assert.Equal(t, int64(0), rootTeam.UpdateAt)
 | |
| 				assert.Equal(t, "NewRootTeam", rootTeam.Title)
 | |
| 				require.NoError(t, err)
 | |
| 				require.NotNil(t, rootTeam)
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestGetTeam(t *testing.T) {
 | |
| 	th, tearDown := SetupTestHelper(t)
 | |
| 	defer tearDown()
 | |
| 
 | |
| 	testCases := []struct {
 | |
| 		title   string
 | |
| 		teamID  string
 | |
| 		isError bool
 | |
| 	}{
 | |
| 		{
 | |
| 			"Success, Return new root team, when team returned by mockstore is not nil",
 | |
| 			"mock-team-id",
 | |
| 			false,
 | |
| 		},
 | |
| 		{
 | |
| 			"Success, Return nil, when get team returns an sql error",
 | |
| 			"team-not-available-id",
 | |
| 			false,
 | |
| 		},
 | |
| 		{
 | |
| 			"Fail, Return nil, when get team by mockstore returns an error",
 | |
| 			"invalid-team-id",
 | |
| 			true,
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	th.Store.EXPECT().GetTeam("mock-team-id").Return(mockTeam, nil)
 | |
| 	th.Store.EXPECT().GetTeam("invalid-team-id").Return(nil, errInvalidTeam)
 | |
| 	th.Store.EXPECT().GetTeam("team-not-available-id").Return(nil, sql.ErrNoRows)
 | |
| 	for _, tc := range testCases {
 | |
| 		t.Run(tc.title, func(t *testing.T) {
 | |
| 			t.Log(tc.title)
 | |
| 			team, err := th.App.GetTeam(tc.teamID)
 | |
| 
 | |
| 			if tc.isError {
 | |
| 				require.Error(t, err)
 | |
| 			} else if tc.teamID != "team-not-available-id" {
 | |
| 				assert.NotNil(t, team.ID)
 | |
| 				assert.NotNil(t, team.SignupToken)
 | |
| 				assert.Equal(t, "mock-team-id", team.ID)
 | |
| 				assert.Equal(t, "", team.ModifiedBy)
 | |
| 				assert.Equal(t, int64(0), team.UpdateAt)
 | |
| 				assert.Equal(t, "MockTeam", team.Title)
 | |
| 				require.NoError(t, err)
 | |
| 				require.NotNil(t, team)
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestTeamOperations(t *testing.T) {
 | |
| 	th, tearDown := SetupTestHelper(t)
 | |
| 	defer tearDown()
 | |
| 
 | |
| 	th.Store.EXPECT().UpsertTeamSettings(*mockTeam).Return(nil)
 | |
| 	th.Store.EXPECT().UpsertTeamSignupToken(*mockTeam).Return(nil)
 | |
| 	th.Store.EXPECT().GetTeamCount().Return(int64(10), nil)
 | |
| 
 | |
| 	errUpsertTeamSettings := th.App.UpsertTeamSettings(*mockTeam)
 | |
| 	assert.NoError(t, errUpsertTeamSettings)
 | |
| 
 | |
| 	errUpsertTeamSignupToken := th.App.UpsertTeamSignupToken(*mockTeam)
 | |
| 	assert.NoError(t, errUpsertTeamSignupToken)
 | |
| 
 | |
| 	count, errGetTeamCount := th.App.GetTeamCount()
 | |
| 	assert.NoError(t, errGetTeamCount)
 | |
| 	assert.Equal(t, int64(10), count)
 | |
| }
 |