qwester 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/README.rdoc +51 -0
  2. data/app/controllers/qwester/application_controller.rb +1 -2
  3. data/app/controllers/qwester/questionnaires_controller.rb +1 -2
  4. data/app/models/qwester/presentation.rb +45 -0
  5. data/app/models/qwester/presentation_questionnaire.rb +8 -0
  6. data/app/models/qwester/questionnaire.rb +7 -0
  7. data/app/models/qwester/rule_set.rb +2 -2
  8. data/app/views/qwester/questionnaires/index.html.erb +3 -3
  9. data/db/migrate/20130315112847_create_qwester_presentations.rb +11 -0
  10. data/db/migrate/20130315113027_create_qwester_presentation_questionnaires.rb +10 -0
  11. data/db/migrate/20130318102537_add_presentation_to_rule_sets.rb +6 -0
  12. data/lib/active_admin/admin/answers.rb +1 -1
  13. data/lib/active_admin/admin/presentations.rb +51 -0
  14. data/lib/active_admin/admin/questionnaires.rb +2 -0
  15. data/lib/active_admin/admin/questions.rb +2 -0
  16. data/lib/active_admin/admin/rule_sets.rb +35 -0
  17. data/lib/qwester/version.rb +7 -1
  18. data/lib/rails/actionpack/lib/action_controller/base.rb +36 -3
  19. data/test/dummy/db/development.sqlite3 +0 -0
  20. data/test/dummy/db/migrate/20130315113346_create_qwester_presentations.qwester.rb +12 -0
  21. data/test/dummy/db/migrate/20130315113347_create_qwester_presentation_questionnaires.qwester.rb +11 -0
  22. data/test/dummy/db/migrate/20130318123540_add_presentation_to_rule_sets.qwester.rb +7 -0
  23. data/test/dummy/db/schema.rb +20 -3
  24. data/test/dummy/db/test.sqlite3 +0 -0
  25. data/test/dummy/log/development.log +9021 -0
  26. data/test/dummy/log/test.log +146429 -0
  27. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/commend_button.png +0 -0
  28. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/commend_button.png +0 -0
  29. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/commend_button.png +0 -0
  30. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/link/commend_button.gif +0 -0
  31. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/original/commend_button.gif +0 -0
  32. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/002/thumbnail/commend_button.gif +0 -0
  33. data/test/dummy/test/fixtures/qwester/presentation_questionnaires.yml +3 -0
  34. data/test/dummy/test/fixtures/qwester/presentations.yml +13 -0
  35. data/test/dummy/test/functional/qwester/questionnaires_controller_test.rb +68 -3
  36. data/test/unit/qwester/presentation_test.rb +61 -0
  37. data/test/unit/qwester/questionnaire_test.rb +5 -1
  38. data/test/unit/qwester/rule_set_test.rb +12 -0
  39. metadata +32 -2
@@ -0,0 +1,3 @@
1
+ one:
2
+ questionnaire_id: 1
3
+ presentation_id: 1
@@ -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['rule_sets'])
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 test_habtm_joins
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.9
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-14 00:00:00.000000000 Z
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