qwester 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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