1package board
2
3import (
4 "testing"
5 "time"
6
7 "github.com/stretchr/testify/require"
8
9 "github.com/MichaelMure/git-bug/entities/identity"
10 "github.com/MichaelMure/git-bug/entity/dag"
11 "github.com/MichaelMure/git-bug/repository"
12)
13
14func TestCreate(t *testing.T) {
15 snap := Snapshot{}
16
17 repo := repository.NewMockRepo()
18
19 rene, err := identity.NewIdentity(repo, "René Descartes", "rene@descartes.fr")
20 require.NoError(t, err)
21
22 unix := time.Now().Unix()
23
24 create := NewCreateOp(rene, unix, "title", "description", DefaultColumns)
25 create.Apply(&snap)
26
27 id := create.Id()
28 require.NoError(t, id.Validate())
29
30 require.Equal(t, id, snap.Id())
31 require.Equal(t, "title", snap.Title)
32 require.Equal(t, "description", snap.Description)
33 require.Len(t, snap.Columns, len(DefaultColumns))
34 for i, column := range DefaultColumns {
35 require.Equal(t, column, snap.Columns[i].Name)
36 }
37
38 // Make sure an extra Create Op doesn't mess things
39 isaac, err := identity.NewIdentity(repo, "Isaac Newton", "isaac@newton.uk")
40 require.NoError(t, err)
41 create2 := NewCreateOp(isaac, unix, "title2", "description2", DefaultColumns)
42 create2.Apply(&snap)
43
44 require.Equal(t, id, snap.Id())
45 require.Equal(t, "title", snap.Title)
46 require.Equal(t, "description", snap.Description)
47 require.Len(t, snap.Columns, len(DefaultColumns))
48 for i, column := range DefaultColumns {
49 require.Equal(t, column, snap.Columns[i].Name)
50 }
51}
52
53func TestCreateSerialize(t *testing.T) {
54 dag.SerializeRoundTripTest(t, func(author identity.Interface, unixTime int64) *CreateOperation {
55 return NewCreateOp(author, unixTime, "title", "description", DefaultColumns)
56 })
57}