op_create_test.go

 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}