You've already forked focalboard
							
							
				mirror of
				https://github.com/mattermost/focalboard.git
				synced 2025-10-31 00:17:42 +02:00 
			
		
		
		
	* Replace Block references to use pointers throughout all application layers * lint fixes * gofmt file, lint fix Co-authored-by: Mattermod <mattermod@users.noreply.github.com> Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
		
			
				
	
	
		
			153 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package integrationtests
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/mattermost/focalboard/server/client"
 | |
| 	"github.com/mattermost/focalboard/server/model"
 | |
| 	"github.com/mattermost/focalboard/server/utils"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| )
 | |
| 
 | |
| func createTestSubscriptions(client *client.Client, num int) ([]*model.Subscription, string, error) {
 | |
| 	newSubs := make([]*model.Subscription, 0, num)
 | |
| 
 | |
| 	user, resp := client.GetMe()
 | |
| 	if resp.Error != nil {
 | |
| 		return nil, "", fmt.Errorf("cannot get current user: %w", resp.Error)
 | |
| 	}
 | |
| 
 | |
| 	board := &model.Board{
 | |
| 		TeamID:   "0",
 | |
| 		Type:     model.BoardTypeOpen,
 | |
| 		CreateAt: 1,
 | |
| 		UpdateAt: 1,
 | |
| 	}
 | |
| 	board, resp = client.CreateBoard(board)
 | |
| 	if resp.Error != nil {
 | |
| 		return nil, "", fmt.Errorf("cannot insert test board block: %w", resp.Error)
 | |
| 	}
 | |
| 
 | |
| 	for n := 0; n < num; n++ {
 | |
| 		newBlock := &model.Block{
 | |
| 			ID:       utils.NewID(utils.IDTypeCard),
 | |
| 			BoardID:  board.ID,
 | |
| 			CreateAt: 1,
 | |
| 			UpdateAt: 1,
 | |
| 			Type:     model.TypeCard,
 | |
| 		}
 | |
| 
 | |
| 		newBlocks, resp := client.InsertBlocks(board.ID, []*model.Block{newBlock}, false)
 | |
| 		if resp.Error != nil {
 | |
| 			return nil, "", fmt.Errorf("cannot insert test card block: %w", resp.Error)
 | |
| 		}
 | |
| 		newBlock = newBlocks[0]
 | |
| 
 | |
| 		sub := &model.Subscription{
 | |
| 			BlockType:      newBlock.Type,
 | |
| 			BlockID:        newBlock.ID,
 | |
| 			SubscriberType: model.SubTypeUser,
 | |
| 			SubscriberID:   user.ID,
 | |
| 		}
 | |
| 
 | |
| 		subNew, resp := client.CreateSubscription(sub)
 | |
| 		if resp.Error != nil {
 | |
| 			return nil, "", resp.Error
 | |
| 		}
 | |
| 		newSubs = append(newSubs, subNew)
 | |
| 	}
 | |
| 	return newSubs, user.ID, nil
 | |
| }
 | |
| 
 | |
| func TestCreateSubscription(t *testing.T) {
 | |
| 	th := SetupTestHelper(t).InitBasic()
 | |
| 	defer th.TearDown()
 | |
| 
 | |
| 	t.Run("Create valid subscription", func(t *testing.T) {
 | |
| 		subs, userID, err := createTestSubscriptions(th.Client, 5)
 | |
| 		require.NoError(t, err)
 | |
| 		require.Len(t, subs, 5)
 | |
| 
 | |
| 		// fetch the newly created subscriptions and compare
 | |
| 		subsFound, resp := th.Client.GetSubscriptions(userID)
 | |
| 		require.NoError(t, resp.Error)
 | |
| 		require.Len(t, subsFound, 5)
 | |
| 		assert.ElementsMatch(t, subs, subsFound)
 | |
| 	})
 | |
| 
 | |
| 	t.Run("Create invalid subscription", func(t *testing.T) {
 | |
| 		user, resp := th.Client.GetMe()
 | |
| 		require.NoError(t, resp.Error)
 | |
| 
 | |
| 		sub := &model.Subscription{
 | |
| 			SubscriberID: user.ID,
 | |
| 		}
 | |
| 		_, resp = th.Client.CreateSubscription(sub)
 | |
| 		require.Error(t, resp.Error)
 | |
| 	})
 | |
| 
 | |
| 	t.Run("Create subscription for another user", func(t *testing.T) {
 | |
| 		sub := &model.Subscription{
 | |
| 			SubscriberID: utils.NewID(utils.IDTypeUser),
 | |
| 		}
 | |
| 		_, resp := th.Client.CreateSubscription(sub)
 | |
| 		require.Error(t, resp.Error)
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func TestGetSubscriptions(t *testing.T) {
 | |
| 	th := SetupTestHelper(t).InitBasic()
 | |
| 	defer th.TearDown()
 | |
| 
 | |
| 	t.Run("Get subscriptions for user", func(t *testing.T) {
 | |
| 		mySubs, user1ID, err := createTestSubscriptions(th.Client, 5)
 | |
| 		require.NoError(t, err)
 | |
| 		require.Len(t, mySubs, 5)
 | |
| 
 | |
| 		// create more subscriptions with different user
 | |
| 		otherSubs, _, err := createTestSubscriptions(th.Client2, 10)
 | |
| 		require.NoError(t, err)
 | |
| 		require.Len(t, otherSubs, 10)
 | |
| 
 | |
| 		// fetch the newly created subscriptions for current user, making sure only
 | |
| 		// the ones created for the current user are returned.
 | |
| 		subsFound, resp := th.Client.GetSubscriptions(user1ID)
 | |
| 		require.NoError(t, resp.Error)
 | |
| 		require.Len(t, subsFound, 5)
 | |
| 		assert.ElementsMatch(t, mySubs, subsFound)
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func TestDeleteSubscription(t *testing.T) {
 | |
| 	th := SetupTestHelper(t).InitBasic()
 | |
| 	defer th.TearDown()
 | |
| 
 | |
| 	t.Run("Delete valid subscription", func(t *testing.T) {
 | |
| 		subs, userID, err := createTestSubscriptions(th.Client, 3)
 | |
| 		require.NoError(t, err)
 | |
| 		require.Len(t, subs, 3)
 | |
| 
 | |
| 		resp := th.Client.DeleteSubscription(subs[1].BlockID, userID)
 | |
| 		require.NoError(t, resp.Error)
 | |
| 
 | |
| 		// fetch the subscriptions and ensure the list is correct
 | |
| 		subsFound, resp := th.Client.GetSubscriptions(userID)
 | |
| 		require.NoError(t, resp.Error)
 | |
| 		require.Len(t, subsFound, 2)
 | |
| 
 | |
| 		assert.Contains(t, subsFound, subs[0])
 | |
| 		assert.Contains(t, subsFound, subs[2])
 | |
| 		assert.NotContains(t, subsFound, subs[1])
 | |
| 	})
 | |
| 
 | |
| 	t.Run("Delete invalid subscription", func(t *testing.T) {
 | |
| 		user, resp := th.Client.GetMe()
 | |
| 		require.NoError(t, resp.Error)
 | |
| 
 | |
| 		resp = th.Client.DeleteSubscription("bogus", user.ID)
 | |
| 		require.Error(t, resp.Error)
 | |
| 	})
 | |
| }
 |