/
see_also_controller_test.rb
227 lines (181 loc) · 5.61 KB
/
see_also_controller_test.rb
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
require 'test_helper'
class SeeAlsoControllerTest < ActionController::TestCase
include Authlogic::TestCase
setup :activate_authlogic
context "voting on see alsos" do
context "when not logged in" do
setup do
get :vote
end
should "respond with a json success: false" do
resp = JSON.parse(@response.body)
assert_equal resp["success"], false
end
end
context "when logged in" do
context "with the owner" do
setup do
UserSession.create(users(:zkim))
get :vote, :id => see_alsos(:map_to_dummy).id
end
should_have_json_prop 'success', false
end
context "with a non-existent see also" do
setup do
UserSession.create(users(:zkim))
get :vote, :id => 999999
end
should_have_json_prop 'success', false
end
context "with a non-owner" do
context "no vote" do
setup do
UserSession.create(users(:marick))
get :vote, :id => see_alsos(:map_to_dummy).id
end
should_have_json_prop 'success', false
end
context "already voted" do
setup do
UserSession.create(users(:zkim))
get :vote, :id => see_alsos(:map_to_dummy).id, :vote_action => "vote_up"
end
should_have_json_prop 'success', false
end
context "vote up" do
setup do
UserSession.create(users(:marick))
get :vote, :id => see_alsos(:map_to_dummy).id, :vote_action => "vote_up"
end
should_have_json_prop 'success', true
should_have_json_prop 'vote_score', 1
end
context "vote down" do
setup do
UserSession.create(users(:marick))
get :vote, :id => see_alsos(:map_to_dummy).id, :vote_action => "vote_down"
end
should_have_json_prop 'success', true
should_have_json_prop 'vote_score', -1
end
end
end
end
context "looking up vars for voting see also" do
context "with a missing query" do
setup do
get :lookup
end
should "respond with an empty json list" do
assert_equal @response.body, "[]"
end
end
context "with a no-match query" do
setup do
get :lookup, :q => 'no-match'
end
should "respond with an empty json list" do
assert_equal @response.body, "[]"
end
end
context "with a query matching an existing var name" do
setup do
get :lookup, :term => 'ma', :library => 'Clojure Core'
end
should "respond with the map var" do
resp = JSON.parse(@response.body)
assert_equal resp[0]["name"], "map"
end
end
end
context "deleting see alsos" do
#sucessful deletion
setup do
UserSession.create(users(:zkim))
get :delete, :id => see_alsos(:map_to_dummy).id
end
should_have_json_prop 'success', true
#error conditions
context "with a missing id" do
setup do
get :delete
end
should_have_json_prop 'success', false
end
context "with a non-existant id" do
setup do
get :delete, :id => 999999
end
should_have_json_prop 'success', false
end
context "with a user that dosen't own the see also" do
setup do
UserSession.create(users(:marick))
get :delete, :id => 1
end
should_have_json_prop 'success', false
end
end
context "adding see alsos" do
setup do
UserSession.create(users(:zkim))
get :add, :var_id => functions(:clojure_core_dummy).id, :v => "clojure.core/+"
end
should_have_json_prop 'success', true
should "respond with success:true and the to_var" do
resp = JSON.parse(@response.body)
assert_equal resp["to_var"]["name"], "+"
assert resp["content"]
end
#error conditions
context "without a current user session" do
setup do
get :add
end
should "respond with success:false" do
resp = JSON.parse(@response.body)
assert_equal resp["success"], false
end
end
context "without a from var" do
setup do
UserSession.create(users(:zkim))
get :add
end
should "respond with success:false" do
resp = JSON.parse(@response.body)
assert_equal resp["success"], false
end
end
context "without a to var" do
setup do
UserSession.create(users(:zkim))
get :add, :var_id => functions(:clojure_core_dummy).id
end
should "respond with success:false" do
resp = JSON.parse(@response.body)
assert_equal resp["success"], false
end
end
context "with a badly formatted to var" do
setup do
UserSession.create(users(:zkim))
get :add, :var_id => functions(:clojure_core_dummy).id, :v => "asdf asdf adsf"
end
should "respond with success:false" do
resp = JSON.parse(@response.body)
assert_equal resp["success"], false
end
end
context "With an already existent see also relationship" do
setup do
UserSession.create(users(:zkim))
get :add, :var_id => functions(:map).id, :v => "dummy.ns/dummyname"
end
should "respond with success:false" do
resp = JSON.parse(@response.body)
assert_equal resp["success"], false
end
end
end
end