qwester 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +51 -0
- data/app/controllers/qwester/application_controller.rb +1 -2
- data/app/controllers/qwester/questionnaires_controller.rb +1 -2
- data/app/models/qwester/presentation.rb +45 -0
- data/app/models/qwester/presentation_questionnaire.rb +8 -0
- data/app/models/qwester/questionnaire.rb +7 -0
- data/app/models/qwester/rule_set.rb +2 -2
- data/app/views/qwester/questionnaires/index.html.erb +3 -3
- data/db/migrate/20130315112847_create_qwester_presentations.rb +11 -0
- data/db/migrate/20130315113027_create_qwester_presentation_questionnaires.rb +10 -0
- data/db/migrate/20130318102537_add_presentation_to_rule_sets.rb +6 -0
- data/lib/active_admin/admin/answers.rb +1 -1
- data/lib/active_admin/admin/presentations.rb +51 -0
- data/lib/active_admin/admin/questionnaires.rb +2 -0
- data/lib/active_admin/admin/questions.rb +2 -0
- data/lib/active_admin/admin/rule_sets.rb +35 -0
- data/lib/qwester/version.rb +7 -1
- data/lib/rails/actionpack/lib/action_controller/base.rb +36 -3
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20130315113346_create_qwester_presentations.qwester.rb +12 -0
- data/test/dummy/db/migrate/20130315113347_create_qwester_presentation_questionnaires.qwester.rb +11 -0
- data/test/dummy/db/migrate/20130318123540_add_presentation_to_rule_sets.qwester.rb +7 -0
- data/test/dummy/db/schema.rb +20 -3
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +9021 -0
- data/test/dummy/log/test.log +146429 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/commend_button.png +0 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/commend_button.png +0 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/commend_button.png +0 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/link/commend_button.gif +0 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/original/commend_button.gif +0 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/thumbnail/commend_button.gif +0 -0
- data/test/dummy/test/fixtures/qwester/presentation_questionnaires.yml +3 -0
- data/test/dummy/test/fixtures/qwester/presentations.yml +13 -0
- data/test/dummy/test/functional/qwester/questionnaires_controller_test.rb +68 -3
- data/test/unit/qwester/presentation_test.rb +61 -0
- data/test/unit/qwester/questionnaire_test.rb +5 -1
- data/test/unit/qwester/rule_set_test.rb +12 -0
- metadata +32 -2
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
|
2
|
+
|
3
|
+
one:
|
4
|
+
id: 1
|
5
|
+
name: Start
|
6
|
+
title: The starting point
|
7
|
+
description: This is the first set of questionnaires
|
8
|
+
|
9
|
+
two:
|
10
|
+
id: 2
|
11
|
+
name: Main
|
12
|
+
title: Main set of questionnaires
|
13
|
+
description: This is another set of questionnaires
|
@@ -6,10 +6,12 @@ module Qwester
|
|
6
6
|
@questionnaire = Questionnaire.find(1)
|
7
7
|
@question = Question.find(1)
|
8
8
|
@answer = @question.answers.find(1)
|
9
|
+
@presentation = Presentation.find(1)
|
9
10
|
end
|
10
11
|
|
11
12
|
def test_setup
|
12
13
|
assert_equal(2, @question.answers.count)
|
14
|
+
assert_not_equal(@presentation.questionnaires, Questionnaire.all)
|
13
15
|
end
|
14
16
|
|
15
17
|
def test_index
|
@@ -17,6 +19,38 @@ module Qwester
|
|
17
19
|
assert_response :success
|
18
20
|
assert_equal(Questionnaire.all, assigns('questionnaires'))
|
19
21
|
end
|
22
|
+
|
23
|
+
def test_index_with_presentation
|
24
|
+
get :index, {:use_route => :qwester}, :presentations => [@presentation.name]
|
25
|
+
assert_response :success
|
26
|
+
assert_equal([@presentation.name], session[:presentations])
|
27
|
+
assert_equal(@presentation.questionnaires, assigns('questionnaires'))
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_index_with_presentation_and_history_of_other_presentation
|
31
|
+
names = [other_presentation.name, @presentation.name]
|
32
|
+
get :index, {:use_route => :qwester}, :presentations => names
|
33
|
+
assert_response :success
|
34
|
+
assert_equal(names, session[:presentations])
|
35
|
+
assert_equal(@presentation.questionnaires, assigns('questionnaires'))
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_index_with_other_presentation_and_history_of_presentation
|
39
|
+
other = other_presentation
|
40
|
+
names = [@presentation.name, other.name]
|
41
|
+
get :index, {:use_route => :qwester}, :presentations => names
|
42
|
+
assert_response :success
|
43
|
+
assert_equal(names, session[:presentations])
|
44
|
+
assert_equal(other.questionnaires, assigns('questionnaires'))
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_index_with_default_presentation
|
48
|
+
@presentation.update_attribute :default, true
|
49
|
+
get :index, {:use_route => :qwester}
|
50
|
+
assert_response :success
|
51
|
+
assert_equal(@presentation.questionnaires, assigns('questionnaires'))
|
52
|
+
assert_equal(nil, session[:presentations])
|
53
|
+
end
|
20
54
|
|
21
55
|
def test_show
|
22
56
|
get :show, :id => @questionnaire.id, :use_route => :qwester
|
@@ -108,7 +142,7 @@ module Qwester
|
|
108
142
|
rule_set.answers << AnswerStore.last.answers.first
|
109
143
|
rule_set.save
|
110
144
|
get :index, :use_route => :qwester
|
111
|
-
assert_equal([rule_set], assigns['
|
145
|
+
assert_equal([rule_set], assigns['qwester_rule_sets'])
|
112
146
|
end
|
113
147
|
|
114
148
|
def test_reset
|
@@ -135,8 +169,39 @@ module Qwester
|
|
135
169
|
test_update
|
136
170
|
end
|
137
171
|
end
|
138
|
-
|
139
|
-
|
172
|
+
|
173
|
+
def test_transition_from_default_to_final_via_submission_of_questionnaire
|
174
|
+
@target_presentation = Presentation.find(2)
|
175
|
+
@target_presentation.questionnaires = [Questionnaire.find(2)]
|
176
|
+
@target_presentation.save
|
177
|
+
@rule_set = RuleSet.find(1)
|
178
|
+
@rule_set.answers = [@answer]
|
179
|
+
@rule_set.presentation = @target_presentation.name
|
180
|
+
@rule_set.save
|
181
|
+
@presentation.update_attribute :default, true
|
182
|
+
get :index, :use_route => :qwester
|
183
|
+
assert_equal(@presentation.questionnaires, assigns[:questionnaires])
|
184
|
+
put(
|
185
|
+
:update,
|
186
|
+
:id => @questionnaire.id,
|
187
|
+
:question_id => {
|
188
|
+
@question.id.to_s => {
|
189
|
+
:answer_ids => [@answer.id.to_s]
|
190
|
+
}
|
191
|
+
},
|
192
|
+
:use_route => :qwester
|
193
|
+
)
|
194
|
+
assert_response :redirect
|
195
|
+
get :index, :use_route => :qwester
|
196
|
+
assert_equal(@target_presentation.questionnaires, assigns[:questionnaires])
|
197
|
+
end
|
198
|
+
|
199
|
+
private
|
200
|
+
def other_presentation
|
201
|
+
presentation = Presentation.find(2)
|
202
|
+
presentation.questionnaires << Questionnaire.find(2)
|
203
|
+
return presentation
|
204
|
+
end
|
140
205
|
end
|
141
206
|
|
142
207
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Qwester
|
4
|
+
class PresentationTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@questionnaire = Questionnaire.find(1)
|
8
|
+
@presentation = Presentation.find(1)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_questionnaires
|
12
|
+
assert(@presentation.questionnaires.include? @questionnaire)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_empty_questionnaires
|
16
|
+
assert_equal([], empty_presentation.questionnaires)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_valid_names
|
20
|
+
valid = %w{this that foo_bar HeyHo this1 that2 123}
|
21
|
+
valid.each do |name|
|
22
|
+
@presentation.name = name
|
23
|
+
assert(@presentation.save, "#{name} should be a valid presentation name #{@presentation.errors.full_messages}")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_invalid_names
|
28
|
+
invalid = ['This and that', 'foo bar', '$this', '@that']
|
29
|
+
invalid.each do |name|
|
30
|
+
@presentation.name = name
|
31
|
+
assert(!@presentation.save, "'#{name}' should be an invalid presentation name")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_title_created_from_name
|
36
|
+
@presentation.name = "foo_bar"
|
37
|
+
@presentation.title = nil
|
38
|
+
@presentation.save
|
39
|
+
assert_equal('Foo bar', @presentation.title)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_set_as_default
|
43
|
+
assert !@presentation.default?, "Presentation should not be default at start"
|
44
|
+
@presentation.update_attribute(:default, true)
|
45
|
+
assert @presentation.default?, "Presentation should be default"
|
46
|
+
assert !empty_presentation.reload.default?, "Empty presentation should not be default"
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_set_as_default_when_other_presentation_default
|
50
|
+
test_set_as_default
|
51
|
+
empty_presentation.update_attribute(:default, true)
|
52
|
+
assert !@presentation.reload.default?, "Presentation should not be default"
|
53
|
+
assert empty_presentation.default?, "Empty presentation should be default"
|
54
|
+
end
|
55
|
+
|
56
|
+
def empty_presentation
|
57
|
+
@empty_presentation ||= Presentation.find(2)
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -14,9 +14,13 @@ module Qwester
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def test_habtm_joins_to_answer_store
|
18
18
|
@questionnaire.answer_stores << AnswerStore.first
|
19
19
|
end
|
20
|
+
|
21
|
+
def test_presentation
|
22
|
+
assert_equal([Presentation.find(1)], @questionnaire.presentations)
|
23
|
+
end
|
20
24
|
end
|
21
25
|
|
22
26
|
end
|
@@ -114,6 +114,18 @@ module Qwester
|
|
114
114
|
@rule_set.save
|
115
115
|
assert(@rule_set.errors[:rule].present?, "there should be an error against the rule field")
|
116
116
|
end
|
117
|
+
|
118
|
+
def test_rule_has_url
|
119
|
+
@rule_set.url = nil
|
120
|
+
assert(@rule_set.invalid?, "RuleSet should be invalid if no url")
|
121
|
+
assert(@rule_set.errors[:url], "Error should be on url field")
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_rule_valid_without_url_if_presentation_set
|
125
|
+
@rule_set.presentation = 'something'
|
126
|
+
@rule_set.url = nil
|
127
|
+
assert(@rule_set.valid?, "RuleSet should be valid")
|
128
|
+
end
|
117
129
|
|
118
130
|
private
|
119
131
|
def assert_no_rule_set_match(answers = nil)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qwester
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -117,10 +117,12 @@ extra_rdoc_files: []
|
|
117
117
|
files:
|
118
118
|
- app/helpers/qwester/application_helper.rb
|
119
119
|
- app/helpers/qwester/questionnaires_helper.rb
|
120
|
+
- app/models/qwester/presentation.rb
|
120
121
|
- app/models/qwester/answer_store.rb
|
121
122
|
- app/models/qwester/rule_set.rb
|
122
123
|
- app/models/qwester/answer.rb
|
123
124
|
- app/models/qwester/questionnaires_question.rb
|
125
|
+
- app/models/qwester/presentation_questionnaire.rb
|
124
126
|
- app/models/qwester/questionnaire.rb
|
125
127
|
- app/models/qwester/question.rb
|
126
128
|
- app/views/qwester/questionnaires/show.html.erb
|
@@ -134,7 +136,10 @@ files:
|
|
134
136
|
- db/migrate/20121204100803_add_link_text_to_rule_sets.rb
|
135
137
|
- db/migrate/20121009080219_create_questionnaires.rb
|
136
138
|
- db/migrate/20121009095600_create_answer_stores.rb
|
139
|
+
- db/migrate/20130315112847_create_qwester_presentations.rb
|
137
140
|
- db/migrate/20121008152106_create_answers.rb
|
141
|
+
- db/migrate/20130315113027_create_qwester_presentation_questionnaires.rb
|
142
|
+
- db/migrate/20130318102537_add_presentation_to_rule_sets.rb
|
138
143
|
- db/migrate/20121122141628_remove_questionnaire_from_answer.rb
|
139
144
|
- db/migrate/20121122130930_add_position_to_answers.rb
|
140
145
|
- db/migrate/20121126152146_add_rule_to_rule_sets.rb
|
@@ -153,6 +158,7 @@ files:
|
|
153
158
|
- lib/qwester/engine.rb
|
154
159
|
- lib/rails/actionpack/lib/action_controller/base.rb
|
155
160
|
- lib/qwester.rb
|
161
|
+
- lib/active_admin/admin/presentations.rb
|
156
162
|
- lib/active_admin/admin/rule_sets.rb
|
157
163
|
- lib/active_admin/admin/questions.rb
|
158
164
|
- lib/active_admin/admin/answers.rb
|
@@ -182,6 +188,7 @@ files:
|
|
182
188
|
- test/dummy/db/migrate/20130314103658_add_rule_to_rule_sets.qwester.rb
|
183
189
|
- test/dummy/db/migrate/20130314103661_add_link_text_to_rule_sets.qwester.rb
|
184
190
|
- test/dummy/db/migrate/20130314103652_add_button_image_to_questionnaires.qwester.rb
|
191
|
+
- test/dummy/db/migrate/20130318123540_add_presentation_to_rule_sets.qwester.rb
|
185
192
|
- test/dummy/db/migrate/20130314103645_create_questions.qwester.rb
|
186
193
|
- test/dummy/db/migrate/20130314103659_add_multi_answer_to_questions.qwester.rb
|
187
194
|
- test/dummy/db/migrate/20130314103648_create_questionnaires.qwester.rb
|
@@ -196,6 +203,8 @@ files:
|
|
196
203
|
- test/dummy/db/migrate/20130314103657_remove_questionnaire_from_answer.qwester.rb
|
197
204
|
- test/dummy/db/migrate/20130314103660_create_answer_stores_questionnaires.qwester.rb
|
198
205
|
- test/dummy/db/migrate/20130314103653_create_ckeditor_assets.qwester.rb
|
206
|
+
- test/dummy/db/migrate/20130315113347_create_qwester_presentation_questionnaires.qwester.rb
|
207
|
+
- test/dummy/db/migrate/20130315113346_create_qwester_presentations.qwester.rb
|
199
208
|
- test/dummy/db/migrate/20130314103647_create_rule_sets.qwester.rb
|
200
209
|
- test/dummy/db/migrate/20130314103650_add_questionnaire_id_to_answers.qwester.rb
|
201
210
|
- test/dummy/db/test.sqlite3
|
@@ -204,9 +213,15 @@ files:
|
|
204
213
|
- test/dummy/db/development.sqlite3
|
205
214
|
- test/dummy/db/schema.rb
|
206
215
|
- test/dummy/config.ru
|
216
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/original/commend_button.gif
|
217
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/link/commend_button.gif
|
218
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/thumbnail/commend_button.gif
|
207
219
|
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/NewGitGui.png
|
220
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/commend_button.png
|
208
221
|
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/NewGitGui.png
|
222
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/commend_button.png
|
209
223
|
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/NewGitGui.png
|
224
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/commend_button.png
|
210
225
|
- test/dummy/public/422.html
|
211
226
|
- test/dummy/public/favicon.ico
|
212
227
|
- test/dummy/public/404.html
|
@@ -214,6 +229,8 @@ files:
|
|
214
229
|
- test/dummy/test/fixtures/qwester/questionnaires.yml
|
215
230
|
- test/dummy/test/fixtures/qwester/questions.yml
|
216
231
|
- test/dummy/test/fixtures/qwester/answers.yml
|
232
|
+
- test/dummy/test/fixtures/qwester/presentation_questionnaires.yml
|
233
|
+
- test/dummy/test/fixtures/qwester/presentations.yml
|
217
234
|
- test/dummy/test/fixtures/qwester/questionnaires_questions.yml
|
218
235
|
- test/dummy/test/fixtures/qwester/rule_sets.yml
|
219
236
|
- test/dummy/test/fixtures/qwester/answer_stores.yml
|
@@ -397,6 +414,7 @@ files:
|
|
397
414
|
- test/unit/qwester/rule_set_test.rb
|
398
415
|
- test/unit/qwester/questionnaires_question_test.rb
|
399
416
|
- test/unit/qwester/question_test.rb
|
417
|
+
- test/unit/qwester/presentation_test.rb
|
400
418
|
- test/unit/qwester/questionnaire_test.rb
|
401
419
|
- test/unit/qwester/answer_store_test.rb
|
402
420
|
- test/unit/qwester_test.rb
|
@@ -445,6 +463,7 @@ test_files:
|
|
445
463
|
- test/dummy/db/migrate/20130314103658_add_rule_to_rule_sets.qwester.rb
|
446
464
|
- test/dummy/db/migrate/20130314103661_add_link_text_to_rule_sets.qwester.rb
|
447
465
|
- test/dummy/db/migrate/20130314103652_add_button_image_to_questionnaires.qwester.rb
|
466
|
+
- test/dummy/db/migrate/20130318123540_add_presentation_to_rule_sets.qwester.rb
|
448
467
|
- test/dummy/db/migrate/20130314103645_create_questions.qwester.rb
|
449
468
|
- test/dummy/db/migrate/20130314103659_add_multi_answer_to_questions.qwester.rb
|
450
469
|
- test/dummy/db/migrate/20130314103648_create_questionnaires.qwester.rb
|
@@ -459,6 +478,8 @@ test_files:
|
|
459
478
|
- test/dummy/db/migrate/20130314103657_remove_questionnaire_from_answer.qwester.rb
|
460
479
|
- test/dummy/db/migrate/20130314103660_create_answer_stores_questionnaires.qwester.rb
|
461
480
|
- test/dummy/db/migrate/20130314103653_create_ckeditor_assets.qwester.rb
|
481
|
+
- test/dummy/db/migrate/20130315113347_create_qwester_presentation_questionnaires.qwester.rb
|
482
|
+
- test/dummy/db/migrate/20130315113346_create_qwester_presentations.qwester.rb
|
462
483
|
- test/dummy/db/migrate/20130314103647_create_rule_sets.qwester.rb
|
463
484
|
- test/dummy/db/migrate/20130314103650_add_questionnaire_id_to_answers.qwester.rb
|
464
485
|
- test/dummy/db/test.sqlite3
|
@@ -467,9 +488,15 @@ test_files:
|
|
467
488
|
- test/dummy/db/development.sqlite3
|
468
489
|
- test/dummy/db/schema.rb
|
469
490
|
- test/dummy/config.ru
|
491
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/original/commend_button.gif
|
492
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/link/commend_button.gif
|
493
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/thumbnail/commend_button.gif
|
470
494
|
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/NewGitGui.png
|
495
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/commend_button.png
|
471
496
|
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/NewGitGui.png
|
497
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/commend_button.png
|
472
498
|
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/NewGitGui.png
|
499
|
+
- test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/commend_button.png
|
473
500
|
- test/dummy/public/422.html
|
474
501
|
- test/dummy/public/favicon.ico
|
475
502
|
- test/dummy/public/404.html
|
@@ -477,6 +504,8 @@ test_files:
|
|
477
504
|
- test/dummy/test/fixtures/qwester/questionnaires.yml
|
478
505
|
- test/dummy/test/fixtures/qwester/questions.yml
|
479
506
|
- test/dummy/test/fixtures/qwester/answers.yml
|
507
|
+
- test/dummy/test/fixtures/qwester/presentation_questionnaires.yml
|
508
|
+
- test/dummy/test/fixtures/qwester/presentations.yml
|
480
509
|
- test/dummy/test/fixtures/qwester/questionnaires_questions.yml
|
481
510
|
- test/dummy/test/fixtures/qwester/rule_sets.yml
|
482
511
|
- test/dummy/test/fixtures/qwester/answer_stores.yml
|
@@ -660,6 +689,7 @@ test_files:
|
|
660
689
|
- test/unit/qwester/rule_set_test.rb
|
661
690
|
- test/unit/qwester/questionnaires_question_test.rb
|
662
691
|
- test/unit/qwester/question_test.rb
|
692
|
+
- test/unit/qwester/presentation_test.rb
|
663
693
|
- test/unit/qwester/questionnaire_test.rb
|
664
694
|
- test/unit/qwester/answer_store_test.rb
|
665
695
|
- test/unit/qwester_test.rb
|