From da66599fa39ddbff96b0844fabac161e130a2bc4 Mon Sep 17 00:00:00 2001 From: hmhealey Date: Thu, 1 Oct 2015 10:56:07 -0400 Subject: Added Preferences table to store user preferences --- store/sql_preference_store_test.go | 170 +++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 store/sql_preference_store_test.go (limited to 'store/sql_preference_store_test.go') diff --git a/store/sql_preference_store_test.go b/store/sql_preference_store_test.go new file mode 100644 index 000000000..d7ef26374 --- /dev/null +++ b/store/sql_preference_store_test.go @@ -0,0 +1,170 @@ +// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// See License.txt for license information. + +package store + +import ( + "github.com/mattermost/platform/model" + "testing" +) + +func TestPreferenceStoreSave(t *testing.T) { + Setup() + + p1 := model.Preference{ + UserId: model.NewId(), + Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, + Name: model.PREFERENCE_NAME_SHOWHIDE, + 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_SHOWHIDE, + 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_SHOWHIDE, + 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_SHOWHIDE, + 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) { + Setup() + + id := model.NewId() + + p1 := model.Preference{ + UserId: id, + Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, + Name: model.PREFERENCE_NAME_SHOWHIDE, + } + Must(store.Preference().Save(&p1)) + + p1.Value = "1234garbage" + if err := (<-store.Preference().Update(&p1)).Err; err != nil { + t.Fatal(err) + } + + p1.UserId = model.NewId() + if err := (<-store.Preference().Update(&p1)).Err; err == nil { + t.Fatal("update should have failed because of changed user id") + } + + p1.UserId = id + p1.Category = model.PREFERENCE_CATEGORY_TEST + if err := (<-store.Preference().Update(&p1)).Err; err == nil { + t.Fatal("update should have failed because of changed category") + } + + p1.Category = model.PREFERENCE_CATEGORY_DIRECT_CHANNELS + p1.Name = model.PREFERENCE_NAME_TEST + if err := (<-store.Preference().Update(&p1)).Err; err == nil { + t.Fatal("update should have failed because of changed name") + } + + p1.Name = model.PREFERENCE_NAME_SHOWHIDE + p1.AltId = model.NewId() + if err := (<-store.Preference().Update(&p1)).Err; err == nil { + t.Fatal("update should have failed because of changed alternate id") + } +} + +func TestPreferenceGetByName(t *testing.T) { + Setup() + + p1 := model.Preference{ + UserId: model.NewId(), + Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, + Name: model.PREFERENCE_NAME_SHOWHIDE, + 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 { + t.Fatal(result.Err) + } else if data := result.Data.([]*model.Preference); 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)) { + t.Fatal("got incorrect preferences") + } +} -- cgit v1.2.3-1-g7c22