github.com/siglens/siglens@v0.0.0-20240328180423-f7ce9ae441ed/pkg/dashboards/dashboard_test.go (about)

     1  /*
     2  Copyright 2023.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package dashboards
    18  
    19  import (
    20  	"os"
    21  	"strings"
    22  	"testing"
    23  
    24  	"github.com/siglens/siglens/pkg/config"
    25  	"github.com/stretchr/testify/assert"
    26  )
    27  
    28  func Test_dashboard_storage_methods(t *testing.T) {
    29  
    30  	config.InitializeDefaultConfig()
    31  
    32  	_ = InitDashboards()
    33  
    34  	_, err := createDashboard("dashboard-1", 0)
    35  	assert.Nil(t, err)
    36  
    37  	_, err = createDashboard("dashboard-2", 0)
    38  	assert.Nil(t, err)
    39  
    40  	dIds, err := getAllDashboardIds(0)
    41  	expected := []string{}
    42  
    43  	for id := range dIds {
    44  		expected = append(expected, id)
    45  	}
    46  
    47  	assert.Nil(t, err)
    48  	assert.Equal(t, len(expected), len(dIds))
    49  
    50  	for id := range dIds {
    51  		assert.Contains(t, expected, id)
    52  	}
    53  
    54  	eDashboardDetails := make(map[string]interface{})
    55  
    56  	eDashboardDetails["description"] = "Dashboard type"
    57  	eDashboardDetails["note"] = "mydashboard"
    58  	dashboardId := expected[0]
    59  	dashboardName := "upd-dashboard-1"
    60  
    61  	err = updateDashboard(dashboardId, dashboardName, eDashboardDetails, 0)
    62  	assert.Nil(t, err)
    63  
    64  	aDashBoardDetails, err := getDashboard(expected[0])
    65  
    66  	assert.Nil(t, err)
    67  	assert.Equal(t, eDashboardDetails["description"], aDashBoardDetails["description"])
    68  	assert.Equal(t, eDashboardDetails["note"], aDashBoardDetails["note"])
    69  
    70  	// Test toggleFavorite with non-existing dashboard
    71  	_, err = toggleFavorite("non-existing-id")
    72  	assert.NotNil(t, err)
    73  
    74  	// Test isDashboardFavorite with non-existing dashboard
    75  	_, err = isDashboardFavorite("non-existing-id")
    76  	assert.NotNil(t, err)
    77  
    78  	isFavorite, err := toggleFavorite(expected[0])
    79  	assert.Nil(t, err)
    80  	assert.True(t, isFavorite)
    81  
    82  	// Test isDashboardFavorite
    83  	isFavorite, err = isDashboardFavorite(expected[0])
    84  	assert.Nil(t, err)
    85  	assert.True(t, isFavorite)
    86  
    87  	// Test isDashboardFavorite for non-favorite dashboard
    88  	isFavorite, err = isDashboardFavorite(expected[1])
    89  	assert.Nil(t, err)
    90  	assert.False(t, isFavorite)
    91  
    92  	// Test getAllFavoriteDashboardIds
    93  	favoriteDashboards, err := getAllFavoriteDashboardIds(0)
    94  	assert.Nil(t, err)
    95  	assert.Equal(t, 1, len(favoriteDashboards))
    96  	assert.Contains(t, favoriteDashboards, expected[0])
    97  
    98  	// Toggle favorite off
    99  	isFavorite, err = toggleFavorite(expected[0])
   100  	assert.Nil(t, err)
   101  	assert.False(t, isFavorite)
   102  
   103  	// Test isDashboardFavorite
   104  	isFavorite, err = isDashboardFavorite(expected[0])
   105  	assert.Nil(t, err)
   106  	assert.False(t, isFavorite)
   107  
   108  	// Test getAllFavoriteDashboardIds
   109  	favoriteDashboards, err = getAllFavoriteDashboardIds(0)
   110  	assert.Nil(t, err)
   111  	assert.Equal(t, 0, len(favoriteDashboards))
   112  
   113  	// Test toggleFavorite with multiple dashboards
   114  	isFavorite, err = toggleFavorite(expected[0])
   115  	assert.Nil(t, err)
   116  	assert.True(t, isFavorite)
   117  
   118  	isFavorite, err = toggleFavorite(expected[1])
   119  	assert.Nil(t, err)
   120  	assert.True(t, isFavorite)
   121  
   122  	// Test getAllFavoriteDashboardIds with multiple favorite dashboards
   123  	favoriteDashboards, err = getAllFavoriteDashboardIds(0)
   124  	assert.Nil(t, err)
   125  	assert.Equal(t, 2, len(favoriteDashboards))
   126  	assert.Contains(t, favoriteDashboards, expected[0])
   127  	assert.Contains(t, favoriteDashboards, expected[1])
   128  
   129  	err = deleteDashboard(expected[0], 0)
   130  	assert.Nil(t, err)
   131  
   132  	dIds, err = getAllDashboardIds(0)
   133  	assert.Nil(t, err)
   134  	assert.Equal(t, len(expected)-1, len(dIds))
   135  
   136  	// Delete the files created in the test
   137  	var sb strings.Builder
   138  	sb.WriteString(config.GetDataPath() + "querynodes/" + config.GetHostID() + "/dashboards")
   139  	baseDir := sb.String()
   140  	err = os.RemoveAll(baseDir)
   141  	assert.Nil(t, err)
   142  }
   143  
   144  /*
   145  func Test_dashboard_storage_methods_multiple_orgs(t *testing.T) {
   146  	config.InitializeDefaultConfig()
   147  	_ = InitDashboards()
   148  
   149  	_, err := createDashboard("new-dashboard-1", 0)
   150  	assert.Nil(t, err)
   151  
   152  	_, err = createDashboard("new-dashboard-1", 1)
   153  	assert.Nil(t, err)
   154  
   155  	dIds, err := getAllDashboardIds(0)
   156  	expected := []string{}
   157  
   158  	for id := range dIds {
   159  		expected = append(expected, id)
   160  	}
   161  
   162  	assert.Nil(t, err)
   163  	assert.Equal(t, len(expected), len(dIds))
   164  
   165  	for id := range dIds {
   166  		assert.Contains(t, expected, id)
   167  	}
   168  
   169  	eDashboardDetails := make(map[string]interface{})
   170  
   171  	eDashboardDetails["description"] = "Dashboard type"
   172  	eDashboardDetails["note"] = "mydashboard"
   173  	dashboardId := expected[0]
   174  	dashboardName := "updated-dashboard-1"
   175  
   176  	err = updateDashboard(dashboardId, dashboardName, eDashboardDetails, 0)
   177  	assert.Nil(t, err)
   178  
   179  	aDashBoardDetails, err := getDashboard(expected[0])
   180  
   181  	assert.Nil(t, err)
   182  	assert.Equal(t, eDashboardDetails["description"], aDashBoardDetails["description"])
   183  	assert.Equal(t, eDashboardDetails["note"], aDashBoardDetails["note"])
   184  
   185  	err = deleteDashboard(expected[0], 0)
   186  	assert.Nil(t, err)
   187  
   188  	dIds, err = getAllDashboardIds(0)
   189  	assert.Nil(t, err)
   190  	assert.Equal(t, len(expected)-1, len(dIds))
   191  
   192  	dIds, err = getAllDashboardIds(1)
   193  	expected = []string{}
   194  
   195  	for id := range dIds {
   196  		expected = append(expected, id)
   197  	}
   198  
   199  	assert.Nil(t, err)
   200  	assert.Equal(t, len(expected), len(dIds))
   201  
   202  	for id := range dIds {
   203  		assert.Contains(t, expected, id)
   204  	}
   205  
   206  	dashboardId = expected[0]
   207  	dashboardName = "updated-dashboard"
   208  	err = updateDashboard(dashboardId, dashboardName, eDashboardDetails, 1)
   209  	assert.Nil(t, err)
   210  
   211  	aDashBoardDetails, err = getDashboard(expected[0])
   212  
   213  	assert.Nil(t, err)
   214  	assert.Equal(t, eDashboardDetails["description"], aDashBoardDetails["description"])
   215  	assert.Equal(t, eDashboardDetails["note"], aDashBoardDetails["note"])
   216  
   217  	err = deleteDashboard(expected[0], 1)
   218  	assert.Nil(t, err)
   219  
   220  	dIds, err = getAllDashboardIds(1)
   221  	assert.Nil(t, err)
   222  	assert.Equal(t, len(expected)-1, len(dIds))
   223  
   224  	// Delete the files created in the test
   225  	var sb strings.Builder
   226  	sb.WriteString(config.GetDataPath() + "querynodes/" + config.GetHostname() + "/dashboards")
   227  	baseDir := sb.String()
   228  	err = os.RemoveAll(baseDir)
   229  	assert.Nil(t, err)
   230  }
   231  */