github.com/jacekolszak/noteo@v0.5.0/tag/tag_test.go (about) 1 package tag_test 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/jacekolszak/noteo/date" 8 "github.com/jacekolszak/noteo/tag" 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestNew(t *testing.T) { 14 t.Run("should return error for invalid tag", func(t *testing.T) { 15 names := []string{ 16 "", " ", "foo bar", "\t", "foo\tbar", "\n", "foo\n", 17 } 18 for _, name := range names { 19 t.Run(name, func(t *testing.T) { 20 newTag, err := tag.New(name) 21 assert.Error(t, err) 22 assert.Equal(t, tag.Tag{}, newTag) 23 }) 24 } 25 }) 26 } 27 28 func TestName(t *testing.T) { 29 t.Run("diacritic characters", func(t *testing.T) { 30 tg, err := tag.New("ąę:1") 31 require.NoError(t, err) 32 assert.Equal(t, "ąę", tg.Name()) 33 }) 34 } 35 36 func TestTag_MakeDateAbsolute(t *testing.T) { 37 tests := map[string]struct { 38 tag string 39 expectedTag string 40 }{ 41 "now": { 42 tag: "deadline:now", 43 expectedTag: "deadline:2020-09-10T16:30:11+02:00", 44 }, 45 "today": { 46 tag: "deadline:today", 47 expectedTag: "deadline:2020-09-10", 48 }, 49 } 50 date.SetNow(func() time.Time { 51 return time.Date(2020, 9, 10, 16, 30, 11, 0, time.FixedZone("CEST", 60*60*2)) 52 }) 53 for name, test := range tests { 54 t.Run(name, func(t *testing.T) { 55 tg, err := tag.New(test.tag) 56 require.NoError(t, err) 57 tg, err = tg.MakeDateAbsolute() 58 require.NoError(t, err) 59 expectedTag, err := tag.New(test.expectedTag) 60 require.NoError(t, err) 61 assert.Equal(t, expectedTag, tg) 62 }) 63 } 64 }