Implement preference service (#47870)

* Implement preference service

* Adjust wire.go

* Fix integration test user

* Fix api pref tests

* Fix a11y error

Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
This commit is contained in:
idafurjes
2022-04-21 15:03:17 +02:00
committed by GitHub
parent 03cf38e659
commit dbcaedac6c
18 changed files with 132 additions and 629 deletions
+5 -2
View File
@@ -15,7 +15,7 @@ type Service struct {
cfg *setting.Cfg
}
func ProvideService(db db.DB, cfg *setting.Cfg) *Service {
func ProvideService(db db.DB, cfg *setting.Cfg) pref.Service {
return &Service{
store: &sqlStore{
db: db,
@@ -64,7 +64,10 @@ func (s *Service) Get(ctx context.Context, query *pref.GetPreferenceQuery) (*pre
TeamID: query.TeamID,
}
prefs, err := s.store.Get(ctx, getPref)
if err != nil && !errors.Is(err, pref.ErrPrefNotFound) {
if errors.Is(err, pref.ErrPrefNotFound) {
return &pref.Preference{}, nil
}
if err != nil {
return nil, err
}
return prefs, nil
+20 -8
View File
@@ -73,30 +73,42 @@ func TestPreferencesService(t *testing.T) {
Navbar: team1NavbarPreferences,
}
t.Run("Get should return nothing", func(t *testing.T) {
prefStoreFake.ExpectedGetError = pref.ErrPrefNotFound
preference, err := prefService.Get(context.Background(), &pref.GetPreferenceQuery{})
require.NoError(t, err)
expected := &pref.Preference{}
if diff := cmp.Diff(expected, preference); diff != "" {
t.Fatalf("Result mismatch (-want +got):\n%s", diff)
}
prefStoreFake.ExpectedError = nil
})
t.Run("GetDefaults should return defaults", func(t *testing.T) {
prefService.cfg = setting.NewCfg()
prefService.cfg.DefaultTheme = "light"
prefService.cfg.DateFormats.DefaultTimezone = "UTC"
preferences := prefService.GetDefaults()
preference := prefService.GetDefaults()
expected := &pref.Preference{
Theme: "light",
Timezone: "UTC",
HomeDashboardID: 0,
JSONData: &pref.PreferenceJSONData{},
}
if diff := cmp.Diff(expected, preferences); diff != "" {
if diff := cmp.Diff(expected, preference); diff != "" {
t.Fatalf("Result mismatch (-want +got):\n%s", diff)
}
})
t.Run("GetDefaults with no saved preferences should return defaults", func(t *testing.T) {
prefStoreFake.ExpectedError = nil
prefStoreFake.ExpectedPreference = &pref.Preference{
Theme: "light",
Timezone: "UTC",
}
query := &pref.GetPreferenceWithDefaultsQuery{}
preferences, err := prefService.GetWithDefaults(context.Background(), query)
preference, err := prefService.GetWithDefaults(context.Background(), query)
require.NoError(t, err)
expected := &pref.Preference{
Theme: "light",
@@ -104,7 +116,7 @@ func TestPreferencesService(t *testing.T) {
HomeDashboardID: 0,
JSONData: &emptyPreferencesJsonData,
}
if diff := cmp.Diff(expected, preferences); diff != "" {
if diff := cmp.Diff(expected, preference); diff != "" {
t.Fatalf("Result mismatch (-want +got):\n%s", diff)
}
})
@@ -127,7 +139,7 @@ func TestPreferencesService(t *testing.T) {
},
}
query := &pref.GetPreferenceWithDefaultsQuery{OrgID: 1, UserID: 1}
preferences, err := prefService.GetWithDefaults(context.Background(), query)
preference, err := prefService.GetWithDefaults(context.Background(), query)
require.NoError(t, err)
expected := &pref.Preference{
Theme: "light",
@@ -136,7 +148,7 @@ func TestPreferencesService(t *testing.T) {
HomeDashboardID: 4,
JSONData: &pref.PreferenceJSONData{},
}
if diff := cmp.Diff(expected, preferences); diff != "" {
if diff := cmp.Diff(expected, preference); diff != "" {
t.Fatalf("Result mismatch (-want +got):\n%s", diff)
}
})
@@ -162,7 +174,7 @@ func TestPreferencesService(t *testing.T) {
}
prefService.GetDefaults().HomeDashboardID = 1
query := &pref.GetPreferenceWithDefaultsQuery{OrgID: 1, UserID: 2}
preferences, err := prefService.GetWithDefaults(context.Background(), query)
preference, err := prefService.GetWithDefaults(context.Background(), query)
require.NoError(t, err)
expected := &pref.Preference{
Theme: "light",
@@ -171,7 +183,7 @@ func TestPreferencesService(t *testing.T) {
HomeDashboardID: 4,
JSONData: &pref.PreferenceJSONData{},
}
if diff := cmp.Diff(expected, preferences); diff != "" {
if diff := cmp.Diff(expected, preference); diff != "" {
t.Fatalf("Result mismatch (-want +got):\n%s", diff)
}
})