-
-
Notifications
You must be signed in to change notification settings - Fork 66
/
Copy pathremove_test.go
83 lines (68 loc) · 2.36 KB
/
remove_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package tag
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/traggo/server/test"
"github.com/traggo/server/test/fake"
)
func TestGQL_RemoveTag_succeeds_removesTag(t *testing.T) {
db := test.InMemoryDB(t)
defer db.Close()
user := db.User(3)
user.NewTagDefinition("existing")
resolver := ResolverForTag{DB: db.DB}
_, err := resolver.RemoveTag(fake.User(3), "existing")
require.Nil(t, err)
user.AssertHasTagDefinition("existing", false)
}
func TestRemove_referencedInDashboardEntry(t *testing.T) {
db := test.InMemoryDB(t)
defer db.Close()
left := db.User(5)
left.NewTagDefinition("coolio")
dashboard := left.Dashboard("yeah")
dashboard.Entry("entry")
entry := dashboard.Dashboard.Entries[0]
entry.Keys = "abc,coolio,chicken"
db.Save(&entry)
resolver := ResolverForTag{DB: db.DB}
_, err := resolver.RemoveTag(fake.User(left.User.ID), "coolio")
require.EqualError(t, err, "tag 'coolio' is used in dashboard 'yeah' entry 'entry', remove this reference before deleting the tag")
}
func TestGQL_RemoveTag_succeeds_removesTimespans(t *testing.T) {
db := test.InMemoryDB(t)
defer db.Close()
left := db.User(3)
right := db.User(4)
left.NewTagDefinition("tag")
right.NewTagDefinition("tag")
leftTs := left.TimeSpan("2009-06-30T18:30:00Z", "2009-06-30T18:40:00Z")
leftTs.Tag("tag", "def")
rightTs := right.TimeSpan("2009-06-30T18:30:00Z", "2009-06-30T18:40:00Z")
rightTs.Tag("tag", "def")
resolver := ResolverForTag{DB: db.DB}
_, err := resolver.RemoveTag(fake.User(left.User.ID), "tag")
require.Nil(t, err)
assertTagCount(t, db, 1)
left.AssertHasTagDefinition("tag", false)
right.AssertHasTagDefinition("tag", true)
leftTs.AssertExists(true).AssertHasTag("tag", "def", false)
rightTs.AssertExists(true).AssertHasTag("tag", "def", true)
}
func TestGQL_RemoveTag_fails_notExistingTag(t *testing.T) {
db := test.InMemoryDB(t)
defer db.Close()
db.User(3)
resolver := ResolverForTag{DB: db.DB}
_, err := resolver.RemoveTag(fake.User(3), "not existing")
require.EqualError(t, err, "tag with key 'not existing' does not exist")
}
func TestGQL_RemoveTag_fails_notPermission(t *testing.T) {
db := test.InMemoryDB(t)
defer db.Close()
db.User(3).NewTagDefinition("existing")
db.User(5)
resolver := ResolverForTag{DB: db.DB}
_, err := resolver.RemoveTag(fake.User(5), "existing")
require.EqualError(t, err, "tag with key 'existing' does not exist")
}