/
check_test.exs
140 lines (114 loc) · 3.82 KB
/
check_test.exs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
defmodule CredoTodoOrDie.CheckTest do
use Credo.Test.Case
def assert_check_issue(code, message) do
code
|> assert_issue(fn issue ->
assert issue.message == message
assert issue.category == :design
end)
end
test "Invalid expressions" do
"# TODO(2021-09-2) Do something!!"
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, [])
|> assert_check_issue("Invalid expression: 2021-09-2")
"# TODO(Some text) Do something!!"
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, [])
|> assert_check_issue("Invalid expression: Some text")
"# TODO(2020-15-01) Do something!!"
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, [])
|> assert_check_issue("Invalid expression: Expected `2 digit month` at line 1, column 6.")
end
test "Default behavior" do
code =
"""
defmodule CredoSampleModule do
@somedoc "This is somedoc"
# TODO(2021-09-20) Do something!!
end
"""
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, current_datetime: ~U[2021-09-19 23:59:59.999999Z])
|> refute_issues()
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, current_datetime: ~U[2021-09-20 00:00:00.000000Z])
|> assert_check_issue("Found a TODO tag: Do something!! (today is the day!)")
code =
"""
defmodule CredoSampleModule do
@somedoc "This is somedoc"
# TODO(2021-09-20 04:00) Do something!!
end
"""
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, current_datetime: ~U[2021-09-20 03:59:59.999999Z])
|> refute_issues()
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, current_datetime: ~U[2021-09-20 04:00:00.000000Z])
|> assert_issue(fn issue ->
assert issue.message == "Found a TODO tag: Do something!! (0 microseconds past)"
assert issue.category == :design
end)
end
test "Custom tag" do
code =
"""
defmodule CredoSampleModule do
@somedoc "This is somedoc"
# TEST_TAG(2021-09-20) Do something!!
end
"""
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, tag_name: "TEST_TAG", current_datetime: ~U[2021-09-19 23:59:59.999999Z])
|> refute_issues()
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, tag_name: "TEST_TAG", current_datetime: ~U[2021-09-20 00:00:00.000000Z])
|> assert_check_issue("Found a TEST_TAG tag: Do something!! (today is the day!)")
end
test "Uses the timezone param" do
code =
"""
defmodule CredoSampleModule do
@somedoc "This is somedoc"
# TODO(2021-09-20) Do something!!
end
"""
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, timezone: "Europe/Stockholm", current_datetime: ~U[2021-09-19 21:59:59.999999Z])
|> refute_issues()
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, timezone: "Europe/Stockholm", current_datetime: ~U[2021-09-19 22:00:00.000000Z])
|> assert_issue(fn issue ->
assert issue.message == "Found a TODO tag: Do something!! (today is the day!)"
assert issue.category == :design
end)
code =
"""
defmodule CredoSampleModule do
@somedoc "This is somedoc"
# TODO(2021-09-20 04:00) Do something!!
end
"""
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, timezone: "Europe/Stockholm", current_datetime: ~U[2021-09-19 01:59:59.999999Z])
|> refute_issues()
code
|> to_source_file()
|> run_check(CredoTodoOrDie.Check, timezone: "Europe/Stockholm", current_datetime: ~U[2021-09-20 02:00:00.000000Z])
|> assert_issue(fn issue ->
assert issue.message == "Found a TODO tag: Do something!! (0 microseconds past)"
assert issue.category == :design
end)
end
end