Passed
Push — master ( 3df1d0...111a66 )
by Serhii
02:56 queued 01:25
created

tests.TestTakeEn   B

Complexity

Conditions 4

Size

Total Lines 54
Code Lines 50

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 50
dl 0
loc 54
rs 8.6363
c 0
b 0
f 0
nop 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
package tests
2
3
import (
4
	"testing"
5
	"time"
6
7
	"github.com/SerhiiCho/timeago"
8
)
9
10
func TestTakeEn(t *testing.T) {
11
	cases := []struct {
12
		date   string
13
		result string
14
		lang   string
15
	}{
16
		{smallSubTime(-60 * time.Second), "1 minute ago", "en"},
17
		{smallSubTime(-1 * time.Minute), "1 minute ago", "en"},
18
		{smallSubTime(-2 * time.Minute), "2 minutes ago", "en"},
19
		{smallSubTime(-5 * time.Minute), "5 minutes ago", "en"},
20
		{smallSubTime(-9 * time.Minute), "9 minutes ago", "en"},
21
		{smallSubTime(-10 * time.Minute), "10 minutes ago", "en"},
22
		{smallSubTime(-11 * time.Minute), "11 minutes ago", "en"},
23
		{smallSubTime(-20 * time.Minute), "20 minutes ago", "en"},
24
		{smallSubTime(-21 * time.Minute), "21 minutes ago", "en"},
25
		{smallSubTime(-22 * time.Minute), "22 minutes ago", "en"},
26
		{smallSubTime(-30 * time.Minute), "30 minutes ago", "en"},
27
		{smallSubTime(-31 * time.Minute), "31 minutes ago", "en"},
28
		{smallSubTime(-59 * time.Minute), "59 minutes ago", "en"},
29
		{smallSubTime(-60 * time.Minute), "1 hour ago", "en"},
30
		{smallSubTime(-1 * time.Hour), "1 hour ago", "en"},
31
		{smallSubTime(-2 * time.Hour), "2 hours ago", "en"},
32
		{smallSubTime(-9 * time.Hour), "9 hours ago", "en"},
33
		{smallSubTime(-10 * time.Hour), "10 hours ago", "en"},
34
		{smallSubTime(-11 * time.Hour), "11 hours ago", "en"},
35
		{smallSubTime(-20 * time.Hour), "20 hours ago", "en"},
36
		{smallSubTime(-21 * time.Hour), "21 hours ago", "en"},
37
		{smallSubTime(-23 * time.Hour), "23 hours ago", "en"},
38
		{smallSubTime(-24 * time.Hour), "1 day ago", "en"},
39
		{smallSubTime(-30 * time.Hour), "1 day ago", "en"},
40
		{smallSubTime((-24 * 2) * time.Hour), "2 days ago", "en"},
41
		{smallSubTime((-24 * 6) * time.Hour), "6 days ago", "en"},
42
		{smallSubTime((-24 * 7) * time.Hour), "1 week ago", "en"},
43
		{smallSubTime((-24 * 14) * time.Hour), "2 weeks ago", "en"},
44
		{smallSubTime((-24 * 21) * time.Hour), "3 weeks ago", "en"},
45
		{bigSubTime(0, 1, 1), "1 month ago", "en"},
46
		{bigSubTime(0, 2, 1), "2 months ago", "en"},
47
		{bigSubTime(0, 9, 1), "9 months ago", "en"},
48
		{bigSubTime(0, 11, 1), "11 months ago", "en"},
49
		{bigSubTime(0, 12, 1), "1 year ago", "en"},
50
		{bigSubTime(1, 0, 1), "1 year ago", "en"},
51
		{bigSubTime(2, 0, 1), "2 years ago", "en"},
52
		{bigSubTime(21, 0, 1), "21 years ago", "en"},
53
		{bigSubTime(31, 0, 1), "31 years ago", "en"},
54
		{bigSubTime(100, 0, 1), "100 years ago", "en"},
55
	}
56
57
	for _, tc := range cases {
58
		t.Run("result for "+tc.date, func(test *testing.T) {
59
			timeago.Set("language", tc.lang)
60
			timeago.Set("location", "Europe/Kiev")
61
62
			if res := timeago.Take(tc.date); res != tc.result {
63
				test.Errorf("Result must be %s, but got %s instead", tc.result, res)
64
			}
65
		})
66
	}
67
}
68
69
func TestTakeEnWithOnlineFlag(t *testing.T) {
70
	cases := []struct {
71
		date   string
72
		result string
73
		lang   string
74
	}{
75
		{smallSubTime(time.Second * 2), "Online", "en"},
76
		{smallSubTime(time.Second), "Online", "en"},
77
		{smallSubTime(-1 * time.Second), "Online", "en"},
78
		{smallSubTime(-2 * time.Second), "Online", "en"},
79
		{smallSubTime(-9 * time.Second), "Online", "en"},
80
		{smallSubTime(-10 * time.Second), "Online", "en"},
81
		{smallSubTime(-11 * time.Second), "Online", "en"},
82
		{smallSubTime(-20 * time.Second), "Online", "en"},
83
		{smallSubTime(-21 * time.Second), "Online", "en"},
84
		{smallSubTime(-22 * time.Second), "Online", "en"},
85
		{smallSubTime(-30 * time.Second), "Online", "en"},
86
		{smallSubTime(-31 * time.Second), "Online", "en"},
87
		{smallSubTime(-60 * time.Second), "1 minute ago", "en"},
88
		{smallSubTime(-1 * time.Minute), "1 minute ago", "en"},
89
		{smallSubTime(-2 * time.Minute), "2 minutes ago", "en"},
90
		{smallSubTime(-9 * time.Minute), "9 minutes ago", "en"},
91
		{smallSubTime(-10 * time.Minute), "10 minutes ago", "en"},
92
		{smallSubTime(-11 * time.Minute), "11 minutes ago", "en"},
93
		{smallSubTime(-20 * time.Minute), "20 minutes ago", "en"},
94
		{smallSubTime(-21 * time.Minute), "21 minutes ago", "en"},
95
		{smallSubTime(-22 * time.Minute), "22 minutes ago", "en"},
96
		{smallSubTime(-30 * time.Minute), "30 minutes ago", "en"},
97
		{smallSubTime(-31 * time.Minute), "31 minutes ago", "en"},
98
		{smallSubTime(-60 * time.Minute), "1 hour ago", "en"},
99
		{smallSubTime(-1 * time.Hour), "1 hour ago", "en"},
100
		{smallSubTime(-2 * time.Hour), "2 hours ago", "en"},
101
		{smallSubTime(-9 * time.Hour), "9 hours ago", "en"},
102
		{smallSubTime(-10 * time.Hour), "10 hours ago", "en"},
103
		{smallSubTime(-11 * time.Hour), "11 hours ago", "en"},
104
		{smallSubTime(-20 * time.Hour), "20 hours ago", "en"},
105
		{smallSubTime(-21 * time.Hour), "21 hours ago", "en"},
106
		{smallSubTime(-23 * time.Hour), "23 hours ago", "en"},
107
		{smallSubTime(-24 * time.Hour), "1 day ago", "en"},
108
		{smallSubTime(-30 * time.Hour), "1 day ago", "en"},
109
		{smallSubTime((-24 * 2) * time.Hour), "2 days ago", "en"},
110
		{smallSubTime((-24 * 6) * time.Hour), "6 days ago", "en"},
111
		{smallSubTime((-24 * 7) * time.Hour), "1 week ago", "en"},
112
		{smallSubTime((-24 * 14) * time.Hour), "2 weeks ago", "en"},
113
		{smallSubTime((-24 * 21) * time.Hour), "3 weeks ago", "en"},
114
		{bigSubTime(0, 1, 1), "1 month ago", "en"},
115
		{bigSubTime(0, 2, 1), "2 months ago", "en"},
116
		{bigSubTime(0, 9, 1), "9 months ago", "en"},
117
		{bigSubTime(0, 11, 1), "11 months ago", "en"},
118
		{bigSubTime(0, 12, 1), "1 year ago", "en"},
119
		{bigSubTime(1, 0, 1), "1 year ago", "en"},
120
		{bigSubTime(2, 0, 1), "2 years ago", "en"},
121
		{bigSubTime(21, 0, 1), "21 years ago", "en"},
122
		{bigSubTime(31, 0, 1), "31 years ago", "en"},
123
		{bigSubTime(100, 0, 1), "100 years ago", "en"},
124
	}
125
126
	for _, tc := range cases {
127
		t.Run("result for "+tc.date+"|online", func(test *testing.T) {
128
			timeago.Set("language", tc.lang)
129
130
			if res := timeago.Take(tc.date + "|online"); res != tc.result {
131
				test.Errorf("Result must be %s, but got %s instead", tc.result, res)
132
			}
133
		})
134
	}
135
}
136
137
func TestTakeEnWithSeconds(t *testing.T) {
138
	cases := []struct {
139
		date   string
140
		result []string
141
		lang   string
142
	}{
143
		{smallSubTime(time.Second * 2), []string{"0 seconds ago", "1 second ago"}, "en"},
144
		{smallSubTime(time.Second), []string{"0 seconds ago", "1 second ago"}, "en"},
145
		{smallSubTime(-1 * time.Second), []string{"1 second ago", "2 seconds ago"}, "en"},
146
		{smallSubTime(-2 * time.Second), []string{"2 seconds ago", "3 seconds ago"}, "en"},
147
		{smallSubTime(-9 * time.Second), []string{"9 seconds ago", "10 seconds ago"}, "en"},
148
		{smallSubTime(-10 * time.Second), []string{"10 seconds ago", "11 seconds ago"}, "en"},
149
		{smallSubTime(-11 * time.Second), []string{"11 seconds ago", "12 seconds ago"}, "en"},
150
		{smallSubTime(-20 * time.Second), []string{"20 seconds ago", "21 seconds ago"}, "en"},
151
		{smallSubTime(-21 * time.Second), []string{"21 seconds ago", "22 seconds ago"}, "en"},
152
		{smallSubTime(-22 * time.Second), []string{"22 seconds ago", "23 seconds ago"}, "en"},
153
		{smallSubTime(-30 * time.Second), []string{"30 seconds ago", "31 seconds ago"}, "en"},
154
		{smallSubTime(-31 * time.Second), []string{"31 seconds ago", "32 seconds ago"}, "en"},
155
	}
156
157
	for _, tc := range cases {
158
		t.Run("result for "+tc.date, func(test *testing.T) {
159
			timeago.Set("language", tc.lang)
160
			timeago.Set("location", "Europe/Kiev")
161
162
			if res := timeago.Take(tc.date); res != tc.result[0] && res != tc.result[1] {
163
				test.Errorf("Result must be %s or %s, but got %s instead", tc.result[0], tc.result[1], res)
164
			}
165
		})
166
	}
167
}
168