package integrationtests

import (
	"testing"

	"github.com/mattermost/focalboard/server/client"
	"github.com/mattermost/focalboard/server/model"
	"github.com/stretchr/testify/require"
)

func TestStatisticsLocalMode(t *testing.T) {
	th := SetupTestHelper(t).InitBasic()
	defer th.TearDown()

	t.Run("an unauthenticated client should not be able to get statistics", func(t *testing.T) {
		th.Logout(th.Client)

		stats, resp := th.Client.GetStatistics()
		th.CheckUnauthorized(resp)
		require.Nil(t, stats)
	})

	t.Run("Check authenticated user, not admin", func(t *testing.T) {
		th.Login1()

		stats, resp := th.Client.GetStatistics()
		th.CheckNotImplemented(resp)
		require.Nil(t, stats)
	})
}

func TestStatisticsPluginMode(t *testing.T) {
	th := SetupTestHelperPluginMode(t)
	defer th.TearDown()

	// Permissions are tested in permissions_test.go
	// This tests the functionality.
	t.Run("Check authenticated user, admin", func(t *testing.T) {
		th.Client = client.NewClient(th.Server.Config().ServerRoot, "")
		th.Client.HTTPHeader["Mattermost-User-Id"] = userAdmin

		stats, resp := th.Client.GetStatistics()
		th.CheckOK(resp)
		require.NotNil(t, stats)

		numberCards := 2
		th.CreateBoardAndCards("testTeam", model.BoardTypeOpen, numberCards)

		stats, resp = th.Client.GetStatistics()
		th.CheckOK(resp)
		require.NotNil(t, stats)
		require.Equal(t, 1, stats.Boards)
		require.Equal(t, numberCards, stats.Cards)
	})
}