diff options
Diffstat (limited to 'store/sql_preference_store_test.go')
-rw-r--r-- | store/sql_preference_store_test.go | 270 |
1 files changed, 86 insertions, 184 deletions
diff --git a/store/sql_preference_store_test.go b/store/sql_preference_store_test.go index 0574ee954..6d5ec0ecd 100644 --- a/store/sql_preference_store_test.go +++ b/store/sql_preference_store_test.go @@ -8,202 +8,104 @@ import ( "testing" ) -func TestPreferenceStoreSave(t *testing.T) { - Setup() - - p1 := model.Preference{ - UserId: model.NewId(), - Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, - Name: model.PREFERENCE_NAME_SHOW, - AltId: model.NewId(), - } - - if err := (<-store.Preference().Save(&p1)).Err; err != nil { - t.Fatal("couldn't save preference", err) - } - - if err := (<-store.Preference().Save(&p1)).Err; err == nil { - t.Fatal("shouldn't be able to save duplicate preference") - } - - p2 := model.Preference{ - UserId: model.NewId(), - Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, - Name: model.PREFERENCE_NAME_SHOW, - AltId: p1.AltId, - } - - if err := (<-store.Preference().Save(&p2)).Err; err != nil { - t.Fatal("couldn't save preference with duplicate category, name, alternate id", err) - } - - p3 := model.Preference{ - UserId: p1.UserId, - Category: model.PREFERENCE_CATEGORY_TEST, - Name: model.PREFERENCE_NAME_SHOW, - AltId: p1.AltId, - } - - if err := (<-store.Preference().Save(&p3)).Err; err != nil { - t.Fatal("couldn't save preference with duplicate user id, name, alternate id", err) - } - - p4 := model.Preference{ - UserId: p1.UserId, - Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, - Name: model.PREFERENCE_NAME_TEST, - AltId: p1.AltId, - } - - if err := (<-store.Preference().Save(&p4)).Err; err != nil { - t.Fatal("couldn't save preference with duplicate user id, category, alternate id", err) - } - - p5 := model.Preference{ - UserId: p1.UserId, - Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, - Name: model.PREFERENCE_NAME_SHOW, - AltId: model.NewId(), - } - - if err := (<-store.Preference().Save(&p5)).Err; err != nil { - t.Fatal("couldn't save preference with duplicate user id, category, name", err) - } -} - -func TestPreferenceStoreUpdate(t *testing.T) { +func TestPreferenceSave(t *testing.T) { Setup() id := model.NewId() - p1 := model.Preference{ - UserId: id, - Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, - Name: model.PREFERENCE_NAME_SHOW, - } - Must(store.Preference().Save(&p1)) - - p1.Value = "1234garbage" - if result := (<-store.Preference().Update(&p1)); result.Err != nil { - t.Fatal(result.Err) - } else if result.Data.(int64) != 1 { - t.Fatal("update should have changed only 1 row") - } - - p1.UserId = model.NewId() - if result := (<-store.Preference().Update(&p1)); result.Err != nil { - t.Fatal(result.Err) - } else if result.Data.(int64) != 0 { - t.Fatal("update shouldn't have made changes because of changed user id") - } - - p1.UserId = id - p1.Category = model.PREFERENCE_CATEGORY_TEST - if result := (<-store.Preference().Update(&p1)); result.Err != nil { - t.Fatal(result.Err) - } else if result.Data.(int64) != 0 { - t.Fatal("update shouldn't have made changes because of changed category") - } - - p1.Category = model.PREFERENCE_CATEGORY_DIRECT_CHANNELS - p1.Name = model.PREFERENCE_NAME_TEST - if result := (<-store.Preference().Update(&p1)); result.Err != nil { - t.Fatal(result.Err) - } else if result.Data.(int64) != 0 { - t.Fatal("update shouldn't have made changes because of changed name") - } - - p1.Name = model.PREFERENCE_NAME_SHOW - p1.AltId = model.NewId() - if result := (<-store.Preference().Update(&p1)); result.Err != nil { - t.Fatal(result.Err) - } else if result.Data.(int64) != 0 { - t.Fatal("update shouldn't have made changes because of changed alt id") - } -} - -func TestPreferenceSaveOrUpdate(t *testing.T) { - Setup() - - id := model.NewId() - - p1 := model.Preference{ - UserId: id, - Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, - Name: model.PREFERENCE_NAME_SHOW, - Value: "value1", - } - Must(store.Preference().SaveOrUpdate(&p1)) - - if preferences := Must(store.Preference().GetByName(p1.UserId, p1.Category, p1.Name)).([]*model.Preference); len(preferences) != 1 { - t.Fatal("got incorrect number of preferences after SaveOrUpdate") - } else if preferences[0].Value != "value1" { - t.Fatal("should have received value1 after SaveOrUpdate") - } - - p1.Value = "value2" - Must(store.Preference().SaveOrUpdate(&p1)) - - if preferences := Must(store.Preference().GetByName(p1.UserId, p1.Category, p1.Name)).([]*model.Preference); len(preferences) != 1 { - t.Fatal("got incorrect number of preferences after second SaveOrUpdate") - } else if preferences[0].Value != "value2" { - t.Fatal("should have received value2 after SaveOrUpdate") + preferences := model.Preferences{ + { + UserId: id, + Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, + Name: model.PREFERENCE_NAME_SHOW, + Value: "value1a", + }, + { + UserId: id, + Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, + Name: model.PREFERENCE_NAME_TEST, + Value: "value1b", + }, + } + if count := Must(store.Preference().Save(&preferences)); count != 2 { + t.Fatal("got incorrect number of rows saved") + } + + for _, preference := range preferences { + if data := Must(store.Preference().GetByName(preference.UserId, preference.Category, preference.Name)).(model.Preferences); len(data) != 1 { + t.Fatal("got incorrect number of preferences after first Save") + } else if *preference != *data[0] { + t.Fatal("got incorrect preference after first Save") + } + } + + preferences[0].Value = "value2a" + preferences[1].Value = "value2b" + if count := Must(store.Preference().Save(&preferences)); count != 2 { + t.Fatal("got incorrect number of rows saved") + } + + for _, preference := range preferences { + if data := Must(store.Preference().GetByName(preference.UserId, preference.Category, preference.Name)).(model.Preferences); len(data) != 1 { + t.Fatal("got incorrect number of preferences after second Save") + } else if *preference != *data[0] { + t.Fatal("got incorrect preference after second Save") + } } } func TestPreferenceGetByName(t *testing.T) { Setup() - p1 := model.Preference{ - UserId: model.NewId(), - Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, - Name: model.PREFERENCE_NAME_SHOW, - AltId: model.NewId(), - } - - // same user/category/name, different alt id - p2 := model.Preference{ - UserId: p1.UserId, - Category: p1.Category, - Name: p1.Name, - AltId: model.NewId(), - } - - // same user/category/alt id, different name - p3 := model.Preference{ - UserId: p1.UserId, - Category: p1.Category, - Name: model.PREFERENCE_NAME_TEST, - AltId: p1.AltId, - } - - // same user/name/alt id, different category - p4 := model.Preference{ - UserId: p1.UserId, - Category: model.PREFERENCE_CATEGORY_TEST, - Name: p1.Name, - AltId: p1.AltId, - } - - // same name/category/alt id, different user - p5 := model.Preference{ - UserId: model.NewId(), - Category: p1.Category, - Name: p1.Name, - AltId: p1.AltId, - } - - Must(store.Preference().Save(&p1)) - Must(store.Preference().Save(&p2)) - Must(store.Preference().Save(&p3)) - Must(store.Preference().Save(&p4)) - Must(store.Preference().Save(&p5)) - - if result := <-store.Preference().GetByName(p1.UserId, p1.Category, p1.Name); result.Err != nil { + userId := model.NewId() + category := model.PREFERENCE_CATEGORY_DIRECT_CHANNELS + name := model.PREFERENCE_NAME_SHOW + altId := model.NewId() + + preferences := model.Preferences{ + { + UserId: userId, + Category: category, + Name: name, + AltId: altId, + }, + // same user/category/name, different alt id + { + UserId: userId, + Category: category, + Name: name, + AltId: model.NewId(), + }, + // same user/category/alt id, different name + { + UserId: userId, + Category: category, + Name: model.PREFERENCE_NAME_TEST, + AltId: altId, + }, + // same user/name/alt id, different category + { + UserId: userId, + Category: model.PREFERENCE_CATEGORY_TEST, + Name: name, + AltId: altId, + }, + // same name/category/alt id, different user + { + UserId: model.NewId(), + Category: category, + Name: name, + AltId: altId, + }, + } + + Must(store.Preference().Save(&preferences)) + + if result := <-store.Preference().GetByName(userId, category, name); result.Err != nil { t.Fatal(result.Err) - } else if data := result.Data.([]*model.Preference); len(data) != 2 { + } else if data := result.Data.(model.Preferences); len(data) != 2 { t.Fatal("got the wrong number of preferences") - } else if !((*data[0] == p1 && *data[1] == p2) || (*data[0] == p2 && *data[1] == p1)) { + } else if !((*data[0] == *preferences[0] && *data[1] == *preferences[1]) || (*data[0] == *preferences[1] && *data[1] == *preferences[0])) { t.Fatal("got incorrect preferences") } } |