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  }