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:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user