timeago_test.go   A
last analyzed

Size/Duplication

Total Lines 105
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 15
eloc 70
dl 0
loc 105
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A timeago.TestParseFuncWillCalculateIntervalToFutureDate 0 25 5
B timeago.TestParseFunctionCanExceptTimestamp 0 31 5
B timeago.TestParseFunctionCanExceptTimePackage 0 30 5
1
package timeago
2
3
import (
4
	"testing"
5
	"time"
6
7
	"github.com/SerhiiCho/timeago/v3/internal/utils"
8
)
9
10
func TestParseFunctionCanExceptTimestamp(t *testing.T) {
11
	cases := []struct {
12
		date int
13
		res  string
14
	}{
15
		{utils.UnixFromPastDate(time.Minute), "1 minute ago"},
16
		{utils.UnixFromPastDate(time.Minute * 5), "5 minutes ago"},
17
		{utils.UnixFromPastDate(time.Hour), "1 hour ago"},
18
		{utils.UnixFromPastDate(time.Hour * 3), "3 hours ago"},
19
		{utils.UnixFromPastDate(time.Hour * 5), "5 hours ago"},
20
		{utils.UnixFromPastDate(time.Hour * 24), "1 day ago"},
21
		{utils.UnixFromPastDate(time.Hour * 24 * 2), "2 days ago"},
22
		{utils.UnixFromPastDate(time.Hour * 24 * 3), "3 days ago"},
23
		{utils.UnixFromPastDate(time.Hour * 24 * 4), "4 days ago"},
24
		{utils.UnixFromPastDate(time.Hour * 24 * 5), "5 days ago"},
25
		{utils.UnixFromPastDate(time.Hour * 24 * 6), "6 days ago"},
26
		{utils.UnixFromPastDate(time.Hour * 24 * 7), "1 week ago"},
27
	}
28
29
	Reconfigure(Config{Language: LangEn})
30
31
	for _, tc := range cases {
32
		t.Run(tc.res, func(t *testing.T) {
33
			res, err := Parse(tc.date)
34
35
			if err != nil {
36
				t.Errorf("Error must be nil, but got %q instead", err)
37
			}
38
39
			if res != tc.res {
40
				t.Errorf("Result must be %q, but got %q instead", tc.res, res)
41
			}
42
		})
43
	}
44
}
45
46
func TestParseFunctionCanExceptTimePackage(t *testing.T) {
47
	cases := []struct {
48
		date time.Time
49
		res  string
50
	}{
51
		{utils.SubMinutes(1), "1 minute ago"},
52
		{utils.SubMinutes(2), "2 minutes ago"},
53
		{utils.SubMinutes(3), "3 minutes ago"},
54
		{utils.SubMinutes(4), "4 minutes ago"},
55
		{utils.SubMinutes(5), "5 minutes ago"},
56
		{utils.SubMinutes(6), "6 minutes ago"},
57
		{utils.SubHours(7), "7 hours ago"},
58
		{utils.SubHours(8), "8 hours ago"},
59
		{utils.SubHours(9), "9 hours ago"},
60
		{utils.SubHours(10), "10 hours ago"},
61
		{utils.SubHours(11), "11 hours ago"},
62
	}
63
64
	Reconfigure(Config{Language: LangEn})
65
66
	for _, tc := range cases {
67
		t.Run("Test for date "+tc.date.String(), func(t *testing.T) {
68
			res, err := Parse(tc.date)
69
70
			if err != nil {
71
				t.Errorf("Error must be nil, but got %q instead", err)
72
			}
73
74
			if res != tc.res {
75
				t.Errorf("Result must be %q, but got %q instead", tc.res, res)
76
			}
77
		})
78
	}
79
}
80
81
func TestParseFuncWillCalculateIntervalToFutureDate(t *testing.T) {
82
	testCases := []struct {
83
		date time.Time
84
		res  string
85
	}{
86
		{utils.AddMinutes(2), "2 minutes"},
87
		{utils.AddMinutes(5), "5 minutes"},
88
		{utils.AddMinutes(10), "10 minutes"},
89
		{utils.AddHours(1), "1 hour"},
90
		{utils.AddHours(24), "1 day"},
91
		{utils.AddHours(48), "2 days"},
92
	}
93
94
	Reconfigure(Config{Language: LangEn})
95
96
	for _, tc := range testCases {
97
		t.Run("Test for date: "+tc.date.String(), func(t *testing.T) {
98
			res, err := Parse(tc.date)
99
100
			if err != nil {
101
				t.Errorf("Error must be nil, but got %q instead", err)
102
			}
103
104
			if res != tc.res {
105
				t.Errorf("Result must be %q, but got %q instead", tc.res, res)
106
			}
107
		})
108
	}
109
}
110