qwester 0.0.1

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 (259) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +29 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/qwester/application.js +15 -0
  5. data/app/assets/stylesheets/qwester/application.css +13 -0
  6. data/app/controllers/qwester/application_controller.rb +4 -0
  7. data/app/helpers/qwester/application_helper.rb +4 -0
  8. data/app/models/qwester/answer.rb +44 -0
  9. data/app/models/qwester/answer_store.rb +38 -0
  10. data/app/models/qwester/question.rb +36 -0
  11. data/app/models/qwester/questionnaire.rb +77 -0
  12. data/app/models/qwester/questionnaires_question.rb +10 -0
  13. data/app/models/qwester/rule_set.rb +81 -0
  14. data/app/views/layouts/qwester/application.html.erb +14 -0
  15. data/config/routes.rb +2 -0
  16. data/db/migrate/20121008151526_create_questions.rb +13 -0
  17. data/db/migrate/20121008152106_create_answers.rb +9 -0
  18. data/db/migrate/20121008153758_create_rule_sets.rb +15 -0
  19. data/db/migrate/20121009080219_create_questionnaires.rb +14 -0
  20. data/db/migrate/20121009095600_create_answer_stores.rb +13 -0
  21. data/db/migrate/20121009160807_add_questionnaire_id_to_answers.rb +5 -0
  22. data/db/migrate/20121009161206_change_answers_value_to_string.rb +9 -0
  23. data/db/migrate/20121019111051_add_button_image_to_questionnaires.rb +7 -0
  24. data/db/migrate/20121114084347_create_ckeditor_assets.rb +26 -0
  25. data/db/migrate/20121115114408_add_ref_to_questions.rb +5 -0
  26. data/db/migrate/20121120092108_add_ids_to_questionnaires_questions.rb +25 -0
  27. data/db/migrate/20121122130930_add_cope_index_and_position_to_answers.rb +6 -0
  28. data/db/migrate/20121122141628_remove_questionnaire_from_answer.rb +9 -0
  29. data/db/migrate/20121126152146_add_rule_to_rule_sets.rb +5 -0
  30. data/db/migrate/20121203150555_add_multi_answer_to_questions.rb +5 -0
  31. data/db/migrate/20121204082213_create_answer_stores_questionnaires.rb +10 -0
  32. data/db/migrate/20121204100803_add_link_text_to_rule_sets.rb +5 -0
  33. data/lib/active_admin/admin/answers.rb +73 -0
  34. data/lib/active_admin/admin/questionnaires.rb +76 -0
  35. data/lib/active_admin/admin/questions.rb +74 -0
  36. data/lib/active_admin/admin/rule_sets.rb +176 -0
  37. data/lib/qwester/engine.rb +5 -0
  38. data/lib/qwester/version.rb +3 -0
  39. data/lib/qwester.rb +26 -0
  40. data/lib/random_string.rb +20 -0
  41. data/lib/tasks/qwester_tasks.rake +28 -0
  42. data/test/dummy/README.rdoc +261 -0
  43. data/test/dummy/Rakefile +7 -0
  44. data/test/dummy/app/admin/admin_user.rb +21 -0
  45. data/test/dummy/app/admin/dashboard.rb +33 -0
  46. data/test/dummy/app/assets/javascripts/active_admin.js +25 -0
  47. data/test/dummy/app/assets/javascripts/application.js +15 -0
  48. data/test/dummy/app/assets/stylesheets/active_admin.css.scss +92 -0
  49. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  50. data/test/dummy/app/controllers/application_controller.rb +3 -0
  51. data/test/dummy/app/helpers/application_helper.rb +2 -0
  52. data/test/dummy/app/models/admin_user.rb +20 -0
  53. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  54. data/test/dummy/config/application.rb +59 -0
  55. data/test/dummy/config/boot.rb +10 -0
  56. data/test/dummy/config/database.yml +25 -0
  57. data/test/dummy/config/environment.rb +5 -0
  58. data/test/dummy/config/environments/development.rb +37 -0
  59. data/test/dummy/config/environments/production.rb +67 -0
  60. data/test/dummy/config/environments/test.rb +37 -0
  61. data/test/dummy/config/initializers/active_admin.rb +160 -0
  62. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  63. data/test/dummy/config/initializers/devise.rb +240 -0
  64. data/test/dummy/config/initializers/inflections.rb +15 -0
  65. data/test/dummy/config/initializers/mime_types.rb +5 -0
  66. data/test/dummy/config/initializers/qwester.rb +2 -0
  67. data/test/dummy/config/initializers/secret_token.rb +7 -0
  68. data/test/dummy/config/initializers/session_store.rb +8 -0
  69. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  70. data/test/dummy/config/locales/devise.en.yml +60 -0
  71. data/test/dummy/config/locales/en.yml +5 -0
  72. data/test/dummy/config/routes.rb +9 -0
  73. data/test/dummy/config.ru +4 -0
  74. data/test/dummy/db/development.sqlite3 +0 -0
  75. data/test/dummy/db/migrate/20130110115938_devise_create_admin_users.rb +47 -0
  76. data/test/dummy/db/migrate/20130110115940_create_admin_comments.rb +17 -0
  77. data/test/dummy/db/migrate/20130111112924_create_questions.qwester.rb +14 -0
  78. data/test/dummy/db/migrate/20130111112925_create_answers.qwester.rb +10 -0
  79. data/test/dummy/db/migrate/20130111112926_create_rule_sets.qwester.rb +16 -0
  80. data/test/dummy/db/migrate/20130111112927_create_questionnaires.qwester.rb +15 -0
  81. data/test/dummy/db/migrate/20130111112928_create_answer_stores.qwester.rb +14 -0
  82. data/test/dummy/db/migrate/20130111112929_add_questionnaire_id_to_answers.qwester.rb +6 -0
  83. data/test/dummy/db/migrate/20130111112930_change_answers_value_to_string.qwester.rb +10 -0
  84. data/test/dummy/db/migrate/20130111112931_add_button_image_to_questionnaires.qwester.rb +8 -0
  85. data/test/dummy/db/migrate/20130111112932_create_ckeditor_assets.qwester.rb +27 -0
  86. data/test/dummy/db/migrate/20130111112933_add_ref_to_questions.qwester.rb +6 -0
  87. data/test/dummy/db/migrate/20130111112934_add_cope_index_and_position_to_answers.qwester.rb +7 -0
  88. data/test/dummy/db/migrate/20130111112935_remove_questionnaire_from_answer.qwester.rb +10 -0
  89. data/test/dummy/db/migrate/20130111112936_add_rule_to_rule_sets.qwester.rb +6 -0
  90. data/test/dummy/db/migrate/20130111112937_add_multi_answer_to_questions.qwester.rb +6 -0
  91. data/test/dummy/db/migrate/20130111112938_create_answer_stores_questionnaires.qwester.rb +11 -0
  92. data/test/dummy/db/migrate/20130111112939_add_link_text_to_rule_sets.qwester.rb +6 -0
  93. data/test/dummy/db/migrate/20130111121500_add_ids_to_questionnaires_questions.qwester.rb +26 -0
  94. data/test/dummy/db/schema.rb +136 -0
  95. data/test/dummy/db/seeds.rb +15 -0
  96. data/test/dummy/db/test.sqlite3 +0 -0
  97. data/test/dummy/log/development.log +30161 -0
  98. data/test/dummy/log/test.log +27080 -0
  99. data/test/dummy/public/404.html +26 -0
  100. data/test/dummy/public/422.html +26 -0
  101. data/test/dummy/public/500.html +25 -0
  102. data/test/dummy/public/favicon.ico +0 -0
  103. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/NewGitGui.png +0 -0
  104. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/NewGitGui.png +0 -0
  105. data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/NewGitGui.png +0 -0
  106. data/test/dummy/script/rails +6 -0
  107. data/test/dummy/test/fixtures/admin_users.yml +5 -0
  108. data/test/dummy/test/fixtures/qwester/answer_stores.yml +4 -0
  109. data/test/dummy/test/fixtures/qwester/answers.yml +11 -0
  110. data/test/dummy/test/fixtures/qwester/questionnaires.yml +8 -0
  111. data/test/dummy/test/fixtures/qwester/questionnaires_questions.yml +5 -0
  112. data/test/dummy/test/fixtures/qwester/questions.yml +8 -0
  113. data/test/dummy/test/fixtures/qwester/rule_sets.yml +5 -0
  114. data/test/dummy/test/unit/admin_user_test.rb +9 -0
  115. data/test/dummy/tmp/cache/assets/C4C/010/sprockets%2F54b8f935fa0154a496735945134b201c +0 -0
  116. data/test/dummy/tmp/cache/assets/C6B/340/sprockets%2Fac675153e3c112d081881cb5b0193343 +0 -0
  117. data/test/dummy/tmp/cache/assets/C98/130/sprockets%2Fac989787df92df5f053582229580052f +0 -0
  118. data/test/dummy/tmp/cache/assets/C9F/BF0/sprockets%2F74327e193051ca314d7f40d949aa0f01 +0 -0
  119. data/test/dummy/tmp/cache/assets/CB3/400/sprockets%2F0778280cf7cd9842623b4a47c3636eb0 +0 -0
  120. data/test/dummy/tmp/cache/assets/CB3/7B0/sprockets%2F8acda6f91309162736a905e927b791b0 +0 -0
  121. data/test/dummy/tmp/cache/assets/CB7/210/sprockets%2Fd75d7926600f009b7bc12f299575af61 +0 -0
  122. data/test/dummy/tmp/cache/assets/CBE/9C0/sprockets%2F21d85716322c5b339f859cc7d9517b6e +0 -0
  123. data/test/dummy/tmp/cache/assets/CC9/6B0/sprockets%2F3df521832967357b1c7b16678fc8e8f7 +0 -0
  124. data/test/dummy/tmp/cache/assets/CC9/FB0/sprockets%2F255d9f63b60b2f99705d9ece86410996 +0 -0
  125. data/test/dummy/tmp/cache/assets/CD6/AE0/sprockets%2F18183d077906f0468bdaa021e5944daa +0 -0
  126. data/test/dummy/tmp/cache/assets/CDB/040/sprockets%2Fc732474e67003a4eb840eb44c5ca9385 +0 -0
  127. data/test/dummy/tmp/cache/assets/CE4/280/sprockets%2F99d4bf693c83b5093ab8702160c1d6e5 +0 -0
  128. data/test/dummy/tmp/cache/assets/CF4/190/sprockets%2F15945979ce0f558e72219220cdf8e5ee +0 -0
  129. data/test/dummy/tmp/cache/assets/D16/CB0/sprockets%2Fb0e226708d5f9958bbaf5639fd402e50 +0 -0
  130. data/test/dummy/tmp/cache/assets/D18/9A0/sprockets%2F790d9164fe7b9cb772271a0e2ddf2646 +0 -0
  131. data/test/dummy/tmp/cache/assets/D1C/6A0/sprockets%2F39f774b8adbce198362541931e4e80fc +0 -0
  132. data/test/dummy/tmp/cache/assets/D22/7F0/sprockets%2Fb0746263298bc88dffc3faa791d44786 +0 -0
  133. data/test/dummy/tmp/cache/assets/D25/BA0/sprockets%2F0fa25091225221bc828ca4abb28cb5c8 +0 -0
  134. data/test/dummy/tmp/cache/assets/D33/D50/sprockets%2Ff8d0dac22223755ab4bae6c44180e829 +0 -0
  135. data/test/dummy/tmp/cache/assets/D36/C80/sprockets%2Ff5ef17012cd57c01767028aba0593fcf +0 -0
  136. data/test/dummy/tmp/cache/assets/D37/F40/sprockets%2F34ae0821bc15772a27ca08fc3682fe7d +0 -0
  137. data/test/dummy/tmp/cache/assets/D38/540/sprockets%2F86e1ad844bc9df4491a2a52b870421db +0 -0
  138. data/test/dummy/tmp/cache/assets/D3E/330/sprockets%2F45f2fada4467c9ac38a41d9463b822c4 +0 -0
  139. data/test/dummy/tmp/cache/assets/D3F/EB0/sprockets%2Fad2888184b513b29cc27bda05be8c396 +0 -0
  140. data/test/dummy/tmp/cache/assets/D48/640/sprockets%2F9f4f18d910b678b1d0777e04cdaf6f24 +0 -0
  141. data/test/dummy/tmp/cache/assets/D4A/310/sprockets%2Fdd19e98ed3ea33cd27397508b0e34e74 +0 -0
  142. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  143. data/test/dummy/tmp/cache/assets/D4F/930/sprockets%2F593ef7a6dd9e164ce9156637a079eba2 +0 -0
  144. data/test/dummy/tmp/cache/assets/D52/2B0/sprockets%2Fcaba6996d3b0ce9425a2d4918e6e8797 +0 -0
  145. data/test/dummy/tmp/cache/assets/D59/D70/sprockets%2Fed9f0de1b65ae8d7ef89087c83728461 +0 -0
  146. data/test/dummy/tmp/cache/assets/D61/190/sprockets%2Faece940f39e2ac68033f05b15fe10c16 +0 -0
  147. data/test/dummy/tmp/cache/assets/D61/6B0/sprockets%2F5f51d0141dcc429477e6169aabb1f2ad +0 -0
  148. data/test/dummy/tmp/cache/assets/D63/760/sprockets%2F03bf27ec3f65ed19bc131123a59b3d6f +0 -0
  149. data/test/dummy/tmp/cache/assets/D64/6D0/sprockets%2Fefc35e335323b974c3e1bbbb13693ea4 +0 -0
  150. data/test/dummy/tmp/cache/assets/D66/3A0/sprockets%2F02491a6027da7d0caa9c2282fd3f7e6f +0 -0
  151. data/test/dummy/tmp/cache/assets/D69/E90/sprockets%2F14aed5aa2792db4162f05688f04dfa5e +0 -0
  152. data/test/dummy/tmp/cache/assets/D6C/5B0/sprockets%2F4cd5cd94a5b8ce62e7635a63df0103e5 +0 -0
  153. data/test/dummy/tmp/cache/assets/D6E/160/sprockets%2F589e06b575fdb89ccc10373f40ba2bf3 +0 -0
  154. data/test/dummy/tmp/cache/assets/D76/CB0/sprockets%2Fbcaf3567253694bc09a79858c7bdad2a +0 -0
  155. data/test/dummy/tmp/cache/assets/D81/D40/sprockets%2Faa5b982ce995ea3c817a93f8c847a52e +0 -0
  156. data/test/dummy/tmp/cache/assets/D93/4C0/sprockets%2F857ecd2092cee11f740b3cf2e373ad2a +0 -0
  157. data/test/dummy/tmp/cache/assets/D9E/BC0/sprockets%2F92b1852c4b3d97cf5a18fb9b171cdc3d +0 -0
  158. data/test/dummy/tmp/cache/assets/DA3/9B0/sprockets%2Fa2bdb6a97d41e3cca6465c59cd5929b5 +0 -0
  159. data/test/dummy/tmp/cache/assets/DA9/B40/sprockets%2Ff028f8a00eb67fbe213ef8fce8c97218 +0 -0
  160. data/test/dummy/tmp/cache/assets/DB3/6A0/sprockets%2F5fbfb11cd54686a98ffe386339a9ddc4 +0 -0
  161. data/test/dummy/tmp/cache/assets/DDA/830/sprockets%2Fde697cb19a97c9cdda00773d54e43ded +0 -0
  162. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  163. data/test/dummy/tmp/cache/assets/DDE/420/sprockets%2Ffb8b186d5bf0307f86f65fc787d2adeb +0 -0
  164. data/test/dummy/tmp/cache/assets/DFD/E80/sprockets%2Fb6ba4f337e14c4942a8e68bfaed03bff +0 -0
  165. data/test/dummy/tmp/cache/assets/E03/CE0/sprockets%2Fee7fdb52ea0ff7e5426102ee68beeb47 +0 -0
  166. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  167. data/test/dummy/tmp/cache/assets/E31/7C0/sprockets%2F306cef7b76fd0633afd6eecde15d7ab7 +0 -0
  168. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_all.css.scssc +0 -0
  169. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_buttons.css.scssc +0 -0
  170. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_gradients.css.scssc +0 -0
  171. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_icons.css.scssc +0 -0
  172. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_reset.css.scssc +0 -0
  173. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_rounded.css.scssc +0 -0
  174. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_sections.css.scssc +0 -0
  175. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_shadows.css.scssc +0 -0
  176. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_typography.scssc +0 -0
  177. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_utilities.scssc +0 -0
  178. data/test/dummy/tmp/cache/sass/1b985f49f4ef70efe7765896dd6d11dc84e592e3/_variables.css.scssc +0 -0
  179. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_compact.scssc +0 -0
  180. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_deprecated-webkit-gradient.scssc +0 -0
  181. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_flex-grid.scssc +0 -0
  182. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_grid-width.scssc +0 -0
  183. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_linear-gradient.scssc +0 -0
  184. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_modular-scale.scssc +0 -0
  185. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_radial-gradient.scssc +0 -0
  186. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_render-gradients.scssc +0 -0
  187. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_tint-shade.scssc +0 -0
  188. data/test/dummy/tmp/cache/sass/2355fa6dab0aa429d9df289512dc0da905fd8dbf/_transition-property-name.scssc +0 -0
  189. data/test/dummy/tmp/cache/sass/2abdd63474180b8efbb2fe4a96c7d4e58de1b07d/_button.scssc +0 -0
  190. data/test/dummy/tmp/cache/sass/2abdd63474180b8efbb2fe4a96c7d4e58de1b07d/_clearfix.scssc +0 -0
  191. data/test/dummy/tmp/cache/sass/2abdd63474180b8efbb2fe4a96c7d4e58de1b07d/_font-family.scssc +0 -0
  192. data/test/dummy/tmp/cache/sass/2abdd63474180b8efbb2fe4a96c7d4e58de1b07d/_hide-text.scssc +0 -0
  193. data/test/dummy/tmp/cache/sass/2abdd63474180b8efbb2fe4a96c7d4e58de1b07d/_html5-input-types.scssc +0 -0
  194. data/test/dummy/tmp/cache/sass/2abdd63474180b8efbb2fe4a96c7d4e58de1b07d/_position.scssc +0 -0
  195. data/test/dummy/tmp/cache/sass/2abdd63474180b8efbb2fe4a96c7d4e58de1b07d/_prefixer.scssc +0 -0
  196. data/test/dummy/tmp/cache/sass/2abdd63474180b8efbb2fe4a96c7d4e58de1b07d/_timing-functions.scssc +0 -0
  197. data/test/dummy/tmp/cache/sass/2fd9c76d84cefb666046113b053d85103e19230b/active_admin.css.scssc +0 -0
  198. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_batch_actions.css.scssc +0 -0
  199. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_blank_slates.scssc +0 -0
  200. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_breadcrumbs.scssc +0 -0
  201. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_buttons.scssc +0 -0
  202. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_columns.scssc +0 -0
  203. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_comments.css.scssc +0 -0
  204. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_date_picker.css.scssc +0 -0
  205. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_dropdown_menu.scssc +0 -0
  206. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_flash_messages.css.scssc +0 -0
  207. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_grid.scssc +0 -0
  208. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_links.scssc +0 -0
  209. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_pagination.scssc +0 -0
  210. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_panels.scssc +0 -0
  211. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_popovers.css.scssc +0 -0
  212. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_scopes.scssc +0 -0
  213. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_status_tags.scssc +0 -0
  214. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_table_tools.css.scssc +0 -0
  215. data/test/dummy/tmp/cache/sass/42367c0b8e97cd09844c3165386e8db541b5d479/_tables.css.scssc +0 -0
  216. data/test/dummy/tmp/cache/sass/6d829b1892146f93bc53d024914f97a49c36b400/_bourbon-deprecated-upcoming.scssc +0 -0
  217. data/test/dummy/tmp/cache/sass/6d829b1892146f93bc53d024914f97a49c36b400/_bourbon.scssc +0 -0
  218. data/test/dummy/tmp/cache/sass/c7c7191f5bd579910d0a21a37cd1dab835baea9d/_dashboard.scssc +0 -0
  219. data/test/dummy/tmp/cache/sass/c7c7191f5bd579910d0a21a37cd1dab835baea9d/_logged_out.scssc +0 -0
  220. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_animation.scssc +0 -0
  221. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_appearance.scssc +0 -0
  222. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_background-image.scssc +0 -0
  223. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_background-size.scssc +0 -0
  224. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_background.scssc +0 -0
  225. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_border-image.scssc +0 -0
  226. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_border-radius.scssc +0 -0
  227. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_box-shadow.scssc +0 -0
  228. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_box-sizing.scssc +0 -0
  229. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_columns.scssc +0 -0
  230. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_flex-box.scssc +0 -0
  231. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_font-face.scssc +0 -0
  232. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_hidpi-media-query.scssc +0 -0
  233. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_image-rendering.scssc +0 -0
  234. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_inline-block.scssc +0 -0
  235. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_linear-gradient.scssc +0 -0
  236. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_perspective.scssc +0 -0
  237. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_radial-gradient.scssc +0 -0
  238. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_transform.scssc +0 -0
  239. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_transition.scssc +0 -0
  240. data/test/dummy/tmp/cache/sass/d58df6bafe26696bc29be9546a2c3f69fc2cbc33/_user-select.scssc +0 -0
  241. data/test/dummy/tmp/cache/sass/d883993f4a35b9fb9fb68f2951234bfae10b809e/_footer.scssc +0 -0
  242. data/test/dummy/tmp/cache/sass/d883993f4a35b9fb9fb68f2951234bfae10b809e/_main_structure.scssc +0 -0
  243. data/test/dummy/tmp/cache/sass/d883993f4a35b9fb9fb68f2951234bfae10b809e/_title_bar.scssc +0 -0
  244. data/test/dummy/tmp/cache/sass/ec74dbbd041d002f29da87d31c42c67a52577d7d/_base.css.scssc +0 -0
  245. data/test/dummy/tmp/cache/sass/ec74dbbd041d002f29da87d31c42c67a52577d7d/_forms.css.scssc +0 -0
  246. data/test/dummy/tmp/cache/sass/ec74dbbd041d002f29da87d31c42c67a52577d7d/_header.css.scssc +0 -0
  247. data/test/dummy/tmp/cache/sass/ec74dbbd041d002f29da87d31c42c67a52577d7d/_mixins.css.scssc +0 -0
  248. data/test/dummy/tmp/cache/sass/ec74dbbd041d002f29da87d31c42c67a52577d7d/_typography.css.scssc +0 -0
  249. data/test/dummy/tmp/cache/sass/ec74dbbd041d002f29da87d31c42c67a52577d7d/print.css.scssc +0 -0
  250. data/test/integration/navigation_test.rb +10 -0
  251. data/test/test_helper.rb +21 -0
  252. data/test/unit/qwester/answer_store_test.rb +49 -0
  253. data/test/unit/qwester/answer_test.rb +47 -0
  254. data/test/unit/qwester/question_test.rb +42 -0
  255. data/test/unit/qwester/questionnaire_test.rb +18 -0
  256. data/test/unit/qwester/questionnaires_question_test.rb +62 -0
  257. data/test/unit/qwester/rule_set_test.rb +134 -0
  258. data/test/unit/qwester_test.rb +33 -0
  259. metadata +617 -0
@@ -0,0 +1,47 @@
1
+ require 'test_helper'
2
+
3
+ module Qwester
4
+
5
+ class AnswerTest < ActiveSupport::TestCase
6
+ def setup
7
+ @answer = Answer.find(1)
8
+ end
9
+
10
+ def test_find_first_or_create
11
+ answer = Answer.find_first_or_create(
12
+ :value => @answer.value,
13
+ :question_id => @answer.question_id
14
+ )
15
+ assert_equal(@answer, answer)
16
+ end
17
+
18
+ def test_find_first_or_create_when_answer_does_not_exist
19
+ new_value = 'something'
20
+ assert_difference 'Answer.count' do
21
+ answer = Answer.find_first_or_create(
22
+ :value => 'something',
23
+ :question_id => Question.first.id
24
+ )
25
+ end
26
+ assert_equal(new_value, Answer.last.value)
27
+ end
28
+
29
+ def test_destroy
30
+ rule_set = RuleSet.first
31
+ answer_store = AnswerStore.first
32
+ @answer.rule_sets = [rule_set]
33
+ @answer.answer_stores = [answer_store]
34
+ assert_difference 'Answer.count', -1 do
35
+ assert_difference 'rule_set.answers.count', -1 do
36
+ assert_difference 'answer_store.answers.count', -1 do
37
+ @answer.destroy
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ def test_rule_label
44
+ assert_equal("a#{@answer.id}", @answer.rule_label)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../../test_helper'
2
+ module Qwester
3
+
4
+ class QuestionTest < ActiveSupport::TestCase
5
+
6
+ def setup
7
+ @question = Question.find(2)
8
+ end
9
+
10
+ def test_setup
11
+ assert_equal(0, @question.answers.count)
12
+ end
13
+
14
+ def test_build_standard_answers
15
+ assert_no_difference 'Answer.count' do
16
+ @question.build_standard_answers
17
+ assert_question_has_standard_answers
18
+ end
19
+ end
20
+
21
+ def test_create_standard_answers
22
+ assert_difference 'Answer.count', Answer.standard_values.length do
23
+ @question.create_standard_answers
24
+ assert_question_has_standard_answers
25
+ end
26
+ end
27
+
28
+ def test_destroy
29
+ test_create_standard_answers
30
+ assert_difference 'Question.count', -1 do
31
+ assert_difference 'Answer.count', -(Answer.standard_values.length) do
32
+ @question.destroy
33
+ end
34
+ end
35
+ end
36
+
37
+ private
38
+ def assert_question_has_standard_answers
39
+ assert_equal(Answer.standard_values, @question.answers.collect(&:value))
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../test_helper'
2
+ module Qwester
3
+
4
+ class QuestionnaireTest < ActiveSupport::TestCase
5
+ def setup
6
+ @questionnaire = Questionnaire.find(1)
7
+ end
8
+
9
+ # Overriding this method, so want to make sure default behaviour still works
10
+ # Tests for methods over-riding this are in other test, e.g. questionnaires_question_test.rb
11
+ def test_method_missing
12
+ assert_raise NoMethodError do
13
+ @questionnaire.no_such_method
14
+ end
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,62 @@
1
+ require_relative '../../test_helper'
2
+ module Qwester
3
+
4
+ class QuestionnairesQuestionTest < ActiveSupport::TestCase
5
+ def setup
6
+ @questionnaires_question = QuestionnairesQuestion.find(1)
7
+ @questionnaire = @questionnaires_question.questionnaire
8
+ @question = Question.find(2)
9
+ end
10
+
11
+ def test_setup
12
+ assert_not_equal(@questionnaires_question.question, @question)
13
+ end
14
+
15
+ def test_position
16
+ @questionnaire.questions << @question
17
+ assert_equal(1, @questionnaires_question.position)
18
+ assert_equal(2, QuestionnairesQuestion.last.position)
19
+ end
20
+
21
+ def test_move_question_up
22
+ test_position
23
+ @questionnaire.move_higher(@question)
24
+ assert_equal(2, @questionnaires_question.reload.position)
25
+ assert_equal(1, QuestionnairesQuestion.last.position)
26
+ end
27
+
28
+ def test_second_questionnaire_not_affected_by_positioning_in_first
29
+ questionnaire = Questionnaire.find(2)
30
+ question = Question.find(1)
31
+ questionnaire.questions << question
32
+ questionnaire.questions << @question
33
+ assert_not_equal(@questionnaire, questionnaire, "should be working with two questionnaires")
34
+ assert_equal([question, @question], questionnaire.questions)
35
+ assert_equal([question], @questionnaire.questions)
36
+ test_move_question_up
37
+ assert_equal([question, @question], questionnaire.reload.questions)
38
+ assert_equal([@question, question], @questionnaire.reload.questions)
39
+ end
40
+
41
+ def test_adding_question_again_does_not_create_duplicates
42
+ @questionnaire.questions << @question
43
+ assert_no_difference '@questionnaire.questions.count' do
44
+ @questionnaire.reload.questions << @question
45
+ end
46
+ end
47
+
48
+ def test_removing_quesition
49
+ test_adding_question_again_does_not_create_duplicates
50
+ @questionnaire.questions.delete(@question)
51
+ assert_equal(1, @questionnaire.questions.count)
52
+ end
53
+
54
+ def test_removing_question_deletes_questionnaires_question_but_does_not_delete_question
55
+ assert_no_difference 'Question.count' do
56
+ assert_difference 'QuestionnairesQuestion.count', -1 do
57
+ @questionnaire.questions.delete(@questionnaire.questions.first)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,134 @@
1
+ require_relative '../../test_helper'
2
+ module Qwester
3
+
4
+ class RuleSetTest < ActiveSupport::TestCase
5
+ def setup
6
+ @rule_set = RuleSet.find(1)
7
+ @answer = Answer.find(1)
8
+ @other_answer = Answer.find(2)
9
+ @rule_set.answers << @answer
10
+ end
11
+
12
+ def test_match
13
+ assert(@rule_set.match(@rule_set.answers), "should match if rule_set.answers equal answers passed in")
14
+ end
15
+
16
+ def test_match_when_additional_answers_passed_in
17
+ assert(@rule_set.match([@rule_set.answers, @other_answer].flatten), "should match as long as answers passed in include ruleset.answers")
18
+ end
19
+
20
+ def test_match_failure
21
+ assert_no_rule_set_match([@other_answer])
22
+ end
23
+
24
+ def test_partial_match
25
+ @rule_set.answers << @other_answer
26
+ assert(@rule_set.match([@other_answer]), "should match as long as answers includes @other_answer")
27
+ end
28
+
29
+ def test_match_when_no_answers_passed_in
30
+ assert_no_rule_set_match([])
31
+ end
32
+
33
+ def test_match_when_nil_passed_in
34
+ assert_no_rule_set_match(nil)
35
+ end
36
+
37
+ def test_matches
38
+ create_more_rule_sets
39
+ rule_sets = RuleSet.matching([@answer])
40
+ assert_equal(2, rule_sets.length)
41
+ assert(rule_sets.include?(@rule_set), "RuleSet @rule_set should be included")
42
+ assert(rule_sets.include?(@rule_set_one), "RuleSet one should be included")
43
+ assert(!rule_sets.include?(@rule_set_two), "RuleSet two should not be included")
44
+ end
45
+
46
+ def test_matchs_with_where
47
+ create_more_rule_sets
48
+ rule_sets = RuleSet.where(:title => @rule_set.title).matching([@answer])
49
+ assert_equal([@rule_set], rule_sets)
50
+ end
51
+
52
+ def test_custom_rule
53
+ create_custom_rule_set('a1 and a2')
54
+ assert(@rule_set.match([@answer, @other_answer]), "Should match as both answers present")
55
+ assert(!@rule_set.match([@answer]), "Should not match as other answer missing")
56
+ end
57
+
58
+ def test_custom_rule_or
59
+ create_custom_rule_set('a1 or a2')
60
+ assert(@rule_set.match([@answer, @other_answer]), "Should match as both answers present")
61
+ assert(@rule_set.match([@answer]), "Should match as answer present")
62
+ end
63
+
64
+ def test_custom_rule_in
65
+ create_custom_rule_set('2 in a1 a2')
66
+ assert(@rule_set.match([@answer, @other_answer]), "Should match as both answers present")
67
+ assert(!@rule_set.match([@answer]), "Should not match as only one answer present")
68
+ end
69
+
70
+ def test_matching_answer_sets
71
+ create_custom_rule_set('a1 and a2')
72
+ assert_equal([[1, 2]], @rule_set.matching_answer_sets)
73
+ end
74
+
75
+ def test_blocking_answer_sets
76
+ create_custom_rule_set('a1 and a2')
77
+ assert_equal([[1], [2]], @rule_set.blocking_answer_sets)
78
+ end
79
+
80
+ def test_default_rules_created_from_answers_on_create
81
+ rule_set = RuleSet.create(:title => 'One', :answers => [@answer], :url => 'http://undervale.co.uk')
82
+ assert_equal(rule_set.default_rule, rule_set.rule)
83
+ rule_set = RuleSet.create(:title => 'Two', :answers => [@answer, @other_answer], :url => 'http://undervale.co.uk')
84
+ assert_equal(rule_set.default_rule, rule_set.rule)
85
+ end
86
+
87
+ def test_default_rule
88
+ assert_equal(@answer.rule_label, @rule_set.default_rule)
89
+ @rule_set.answers << @other_answer
90
+ expected = "#{@answer.rule_label} #{RuleSet::DEFAULT_RULE_JOIN} #{@other_answer.rule_label}"
91
+ assert_equal(expected, @rule_set.default_rule)
92
+ end
93
+
94
+ def test_answers_populated_by_rules
95
+ test_custom_rule
96
+ assert_equal([@answer, @other_answer], @rule_set.answers)
97
+ end
98
+
99
+ def test_answers_shrink_when_answer_removed_from_rule
100
+ test_answers_populated_by_rules
101
+ @rule_set.rule = 'a1'
102
+ @rule_set.save
103
+ assert_equal([@answer], @rule_set.answers)
104
+ end
105
+
106
+ def test_answers_expand_when_answer_added_to_rule
107
+ @rule_set.rule = 'a1 and a2'
108
+ @rule_set.save
109
+ assert_equal([@answer, @other_answer], @rule_set.answers)
110
+ end
111
+
112
+ def test_rule_validation
113
+ @rule_set.rule = 'invalid'
114
+ @rule_set.save
115
+ assert(@rule_set.errors[:rule].present?, "there should be an error against the rule field")
116
+ end
117
+
118
+ private
119
+ def assert_no_rule_set_match(answers = nil)
120
+ assert(!@rule_set.match(answers), "should not return true if no match found")
121
+ end
122
+
123
+ def create_more_rule_sets
124
+ @rule_set_one = RuleSet.create(:title => 'One', :answers => [@answer], :url => 'http://undervale.co.uk')
125
+ @rule_set_two = RuleSet.create(:title => 'Two', :answers => [@other_answer], :url => 'http://undervale.com')
126
+ end
127
+
128
+ def create_custom_rule_set(rule)
129
+ @rule_set = RuleSet.create(:title => 'Custom', :rule => rule, :url => 'http://undervale.co.uk')
130
+ end
131
+
132
+ end
133
+
134
+ end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class QwesterTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ Qwester.active_admin_menu = nil
7
+ end
8
+
9
+ def test_qwester_set_up_as_a_module
10
+ assert_kind_of Module, Qwester
11
+ end
12
+
13
+ def test_active_admin_load_path
14
+ expected = "#{Qwester::Engine.root}/lib/active_admin/admin"
15
+ assert_equal(expected, Qwester.active_admin_load_path)
16
+ end
17
+
18
+ def test_active_admin_menu
19
+ assert_equal('Qwester', Qwester.active_admin_menu)
20
+ end
21
+
22
+ def test_setting_active_admin_menu
23
+ text = 'Foo'
24
+ Qwester.active_admin_menu = text
25
+ assert_equal(text, Qwester.active_admin_menu)
26
+ end
27
+
28
+ def test_active_admin_menu_none
29
+ Qwester.active_admin_menu = 'none'
30
+ assert_nil(Qwester.active_admin_menu)
31
+ end
32
+
33
+ end