shell-spinner 1.0.1 → 1.0.2

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 (476) hide show
  1. data/.gitignore +22 -4
  2. data/.rspec +1 -0
  3. data/.rvmrc +53 -0
  4. data/Gemfile +90 -3
  5. data/Gemfile.lock +479 -0
  6. data/README.md +56 -0
  7. data/Rakefile +7 -1
  8. data/app/admin/carriers.rb +17 -0
  9. data/app/admin/dashboards.rb +31 -0
  10. data/app/admin/interviews.rb +77 -0
  11. data/app/admin/users.rb +40 -0
  12. data/app/assets/images/icons/ajax-loader.gif +0 -0
  13. data/app/assets/images/icons/clear-results.png +0 -0
  14. data/app/assets/images/icons/clipboard.png +0 -0
  15. data/app/assets/images/icons/magnify.png +0 -0
  16. data/app/assets/images/icons/social/facebook.png +0 -0
  17. data/app/assets/images/icons/social/google.png +0 -0
  18. data/app/assets/images/icons/social/linkedin.png +0 -0
  19. data/app/assets/images/icons/social/small/facebook.png +0 -0
  20. data/app/assets/images/icons/social/small/google.png +0 -0
  21. data/app/assets/images/icons/social/small/linkedin.png +0 -0
  22. data/app/assets/images/icons/social/small/twitter.png +0 -0
  23. data/app/assets/images/icons/social/small/windowslive.png +0 -0
  24. data/app/assets/images/icons/social/small/yahoo.png +0 -0
  25. data/app/assets/images/icons/social/twitter.png +0 -0
  26. data/app/assets/images/icons/social/windowslive.png +0 -0
  27. data/app/assets/images/icons/social/yahoo.png +0 -0
  28. data/app/assets/images/logo.png +0 -0
  29. data/app/assets/javascripts/active_admin.js.coffee +18 -0
  30. data/app/assets/javascripts/admin/base.coffee +0 -0
  31. data/app/assets/javascripts/admin/interview_form.coffee +95 -0
  32. data/app/assets/javascripts/app/controllers/questions.js.coffee +12 -0
  33. data/app/assets/javascripts/app/index.js.coffee +25 -0
  34. data/app/assets/javascripts/app/lib/view.js.coffee +3 -0
  35. data/app/assets/javascripts/app/models/interview_template.js.coffee +6 -0
  36. data/app/assets/javascripts/app/models/question.js.coffee +6 -0
  37. data/app/assets/javascripts/app/views/questions/show.jst.hamljs +2 -0
  38. data/app/assets/javascripts/application.coffee +48 -0
  39. data/app/assets/javascripts/attachment_form.coffee +31 -0
  40. data/app/assets/javascripts/clipboard_control.coffee +30 -0
  41. data/app/assets/javascripts/invitation_form.coffee +72 -0
  42. data/app/assets/javascripts/recommendation_form.coffee +19 -0
  43. data/app/assets/javascripts/recommendations_list.coffee +11 -0
  44. data/app/assets/javascripts/search_contacts_form.coffee +36 -0
  45. data/app/assets/javascripts/templates/empty_recipients_list.tmpl +1 -0
  46. data/app/assets/javascripts/templates/recipient.tmpl +5 -0
  47. data/app/assets/stylesheets/active_admin.css.scss +28 -0
  48. data/app/assets/stylesheets/application.sass +24 -0
  49. data/app/assets/stylesheets/includes/_authorisation.sass +29 -0
  50. data/app/assets/stylesheets/includes/_bootstrap_tweaks.sass +2 -0
  51. data/app/assets/stylesheets/includes/_campaigns.sass +44 -0
  52. data/app/assets/stylesheets/includes/_controls.sass +41 -0
  53. data/app/assets/stylesheets/includes/_form.sass +23 -0
  54. data/app/assets/stylesheets/includes/_formatting.sass +8 -0
  55. data/app/assets/stylesheets/includes/_icons.sass +31 -0
  56. data/app/assets/stylesheets/includes/_interview.sass +16 -0
  57. data/app/assets/stylesheets/includes/_interview_form.sass +170 -0
  58. data/app/assets/stylesheets/includes/_interview_management.sass +3 -0
  59. data/app/assets/stylesheets/includes/_invitation_form.sass +190 -0
  60. data/app/assets/stylesheets/includes/_layout.sass +69 -0
  61. data/app/assets/stylesheets/includes/_mixins.sass +42 -0
  62. data/app/assets/stylesheets/includes/_navigation.sass +16 -0
  63. data/app/assets/stylesheets/includes/_recommendations.sass +34 -0
  64. data/app/concerns/authenticate_users.rb +72 -0
  65. data/app/concerns/conditional_redirect_after_signing_in.rb +24 -0
  66. data/app/concerns/eventable.rb +16 -0
  67. data/app/controllers/application_controller.rb +31 -0
  68. data/app/controllers/attachments_controller.rb +36 -0
  69. data/app/controllers/campaigns_controller.rb +23 -0
  70. data/app/controllers/contacts_controller.rb +37 -0
  71. data/app/controllers/interview_result_invitations_controller.rb +21 -0
  72. data/app/controllers/interview_results_controller.rb +39 -0
  73. data/app/controllers/interview_templates_controller.rb +3 -0
  74. data/app/controllers/pages_controller.rb +6 -0
  75. data/app/controllers/questions_controller.rb +5 -0
  76. data/app/controllers/recommendations_controller.rb +64 -0
  77. data/app/controllers/resources_controller.rb +1 -0
  78. data/app/controllers/users/omniauth_callbacks_controller.rb +52 -0
  79. data/app/helpers/admin/interview_helper.rb +14 -0
  80. data/app/helpers/answers_helper.rb +8 -0
  81. data/app/helpers/application_helper.rb +1 -0
  82. data/app/helpers/attachments_helper.rb +5 -0
  83. data/app/helpers/campaigns_helper.rb +5 -0
  84. data/app/helpers/layout_helper.rb +5 -0
  85. data/app/helpers/recommendation_helper.rb +14 -0
  86. data/app/mailers/invitation_mailer.rb +13 -0
  87. data/app/models/ability.rb +23 -0
  88. data/app/models/answer.rb +36 -0
  89. data/app/models/answer_choice.rb +28 -0
  90. data/app/models/attachment.rb +34 -0
  91. data/app/models/buying_attempt.rb +31 -0
  92. data/app/models/campaign.rb +37 -0
  93. data/app/models/carrier.rb +30 -0
  94. data/app/models/cell_phone_insurance_interview.rb +17 -0
  95. data/app/models/contact.rb +31 -0
  96. data/app/models/default_interview.rb +17 -0
  97. data/app/models/interesting_fact.rb +30 -0
  98. data/app/models/interview_result.rb +65 -0
  99. data/app/models/interview_template.rb +52 -0
  100. data/app/models/invitation.rb +45 -0
  101. data/app/models/invitation_identifier.rb +29 -0
  102. data/app/models/numeric_question.rb +19 -0
  103. data/app/models/one_correct_question.rb +27 -0
  104. data/app/models/possible_answer.rb +54 -0
  105. data/app/models/question.rb +96 -0
  106. data/app/models/recommendation.rb +27 -0
  107. data/app/models/scale_question.rb +42 -0
  108. data/app/models/user.rb +102 -0
  109. data/app/models/yes_no_question.rb +18 -0
  110. data/app/renderers/nav_links_renderer.rb +10 -0
  111. data/app/uploaders/attachement_uploader.rb +55 -0
  112. data/app/uploaders/file_uploader.rb +20 -0
  113. data/app/views/admin/interviews/_form.html.haml +36 -0
  114. data/app/views/admin/interviews/_possible_answer_fields.html.haml +6 -0
  115. data/app/views/admin/interviews/_question_fields.html.haml +28 -0
  116. data/app/views/admin/interviews/_wrapper_question_fields.html.haml +2 -0
  117. data/app/views/admin/interviews/numeric_question/_fields.html.haml +7 -0
  118. data/app/views/admin/interviews/one_correct_question/_answer_fields.html.haml +6 -0
  119. data/app/views/admin/interviews/one_correct_question/_fields.html.haml +18 -0
  120. data/app/views/admin/interviews/scale_question/_fields.html.haml +7 -0
  121. data/app/views/admin/interviews/scale_question/_start_end_values.html.haml +6 -0
  122. data/app/views/admin/interviews/yes_no_question/_fields.html.haml +3 -0
  123. data/app/views/attachments/_form.html.haml +5 -0
  124. data/app/views/attachments/_interesting_facts.html.haml +11 -0
  125. data/app/views/attachments/_resource.html.haml +13 -0
  126. data/app/views/attachments/buttons/_delete.html.haml +3 -0
  127. data/app/views/attachments/index.html.haml +28 -0
  128. data/app/views/attachments/new.html.haml +1 -0
  129. data/app/views/attachments/show.html.haml +1 -0
  130. data/app/views/campaigns/_form.html.haml +7 -0
  131. data/app/views/campaigns/_form_actions.html.haml +4 -0
  132. data/app/views/campaigns/edit.html.haml +7 -0
  133. data/app/views/campaigns/index.html.haml +14 -0
  134. data/app/views/campaigns/new.html.haml +7 -0
  135. data/app/views/campaigns/show.html.haml +15 -0
  136. data/app/views/contacts/_list.html.haml +17 -0
  137. data/app/views/contacts/_table.html.haml +8 -0
  138. data/app/views/contacts/search.html.haml +1 -0
  139. data/app/views/interesting_facts/_fact.html.haml +4 -0
  140. data/app/views/interview_result_invitations/new.html.haml +29 -0
  141. data/app/views/interview_results/_answer_choice.html.haml +11 -0
  142. data/app/views/interview_results/_form.html.haml +16 -0
  143. data/app/views/interview_results/_list.html.haml +3 -0
  144. data/app/views/interview_results/_numeric_question.html.haml +3 -0
  145. data/app/views/interview_results/_one_correct_question.html.haml +3 -0
  146. data/app/views/interview_results/_scale_question.html.haml +6 -0
  147. data/app/views/interview_results/_yes_no_question.html.haml +6 -0
  148. data/app/views/interview_results/index.html.haml +2 -0
  149. data/app/views/interview_results/new.html.haml +4 -0
  150. data/app/views/interview_results/numeric/_price.html.haml +2 -0
  151. data/app/views/interview_results/numeric/_simple_number.html.haml +2 -0
  152. data/app/views/interview_results/one_correct/_dropdown.html.haml +1 -0
  153. data/app/views/interview_results/one_correct/_radio.html.haml +2 -0
  154. data/app/views/interview_results/one_correct/_slider.html.haml +2 -0
  155. data/app/views/interview_results/show.html.haml +24 -0
  156. data/app/views/interview_templates/index.json.rabl +6 -0
  157. data/app/views/interview_templates/show.html.haml +1 -0
  158. data/app/views/layouts/_footer.haml +9 -0
  159. data/app/views/layouts/_header.haml +21 -0
  160. data/app/views/layouts/application.html.haml +29 -0
  161. data/app/views/pages/home.html.haml +10 -0
  162. data/app/views/questions/show.json.rabl +2 -0
  163. data/app/views/recommendations/new.html.haml +19 -0
  164. data/app/views/shared/_ask_facebook_friends.html.haml +11 -0
  165. data/app/views/shared/_ask_twitter_followers.html.haml +13 -0
  166. data/app/views/shared/_conditional_html_tags.html.haml +8 -0
  167. data/app/views/shared/_errors.html.haml +2 -0
  168. data/app/views/shared/_friends_recommendations.html.haml +12 -0
  169. data/app/views/shared/_import_contacts_links.html.haml +10 -0
  170. data/app/views/shared/_interview_widget.html.haml +1 -0
  171. data/app/views/shared/_login_social_buttons.html.haml +19 -0
  172. data/app/views/shared/_sign_in_modal.html.haml +22 -0
  173. data/app/views/shared/buttons/_create.html.haml +3 -0
  174. data/app/views/shared/buttons/_delete.html.haml +3 -0
  175. data/app/views/shared/buttons/_edit.html.haml +3 -0
  176. data/app/views/users/confirmations/new.html.haml +11 -0
  177. data/app/views/users/mailer/confirmation_instructions.html.haml +4 -0
  178. data/app/views/users/mailer/reset_password_instructions.html.haml +6 -0
  179. data/app/views/users/mailer/unlock_instructions.html.haml +5 -0
  180. data/app/views/users/passwords/edit.html.haml +16 -0
  181. data/app/views/users/passwords/new.html.haml +9 -0
  182. data/app/views/users/registrations/edit.html.haml +27 -0
  183. data/app/views/users/registrations/new.html.haml +17 -0
  184. data/app/views/users/sessions/new.html.haml +14 -0
  185. data/app/views/users/shared/_links.haml +14 -0
  186. data/app/views/users/unlocks/new.html.haml +11 -0
  187. data/config.ru +4 -0
  188. data/config/application.rb +86 -0
  189. data/config/boot.rb +6 -0
  190. data/config/bottom_navigation.rb +13 -0
  191. data/config/cucumber.yml +8 -0
  192. data/config/database.yml +20 -0
  193. data/config/environment.rb +5 -0
  194. data/config/environments/development.rb +38 -0
  195. data/config/environments/production.rb +71 -0
  196. data/config/environments/test.rb +39 -0
  197. data/config/exceptional.yml +7 -0
  198. data/config/initializers/active_admin.rb +129 -0
  199. data/config/initializers/backtrace_silencers.rb +7 -0
  200. data/config/initializers/contacts_monkey_patch.rb +8 -0
  201. data/config/initializers/core_extensions.rb +1 -0
  202. data/config/initializers/delayed_job_config.rb +6 -0
  203. data/config/initializers/devise.rb +236 -0
  204. data/config/initializers/formtastic.rb +1 -0
  205. data/config/initializers/generators.rb +2 -0
  206. data/config/initializers/inflections.rb +15 -0
  207. data/config/initializers/mime_types.rb +5 -0
  208. data/config/initializers/net_ssl_monkey_patch.rb +22 -0
  209. data/config/initializers/secret_token.rb +7 -0
  210. data/config/initializers/session_store.rb +8 -0
  211. data/config/initializers/settings.rb +20 -0
  212. data/config/initializers/setup_mailer.rb +1 -0
  213. data/config/initializers/wrap_parameters.rb +14 -0
  214. data/config/locales/devise.en.yml +57 -0
  215. data/config/locales/en.yml +131 -0
  216. data/config/navigation.rb +25 -0
  217. data/config/omniauth.yml +54 -0
  218. data/config/routes.rb +41 -0
  219. data/config/sendgrid.yml +18 -0
  220. data/config/sendgrid.yml.example +18 -0
  221. data/config/top_navigation.rb +28 -0
  222. data/data/.gitkeep +0 -0
  223. data/db/migrate/20120615102902_create_users.rb +10 -0
  224. data/db/migrate/20120615103611_add_devise_to_users.rb +53 -0
  225. data/db/migrate/20120615104044_add_facebook_id_to_users.rb +5 -0
  226. data/db/migrate/20120618051144_add_twitter_id_to_users.rb +5 -0
  227. data/db/migrate/20120618051522_add_google_id_to_users.rb +5 -0
  228. data/db/migrate/20120618083140_add_linkedin_id_to_users.rb +5 -0
  229. data/db/migrate/20120618094240_add_yahoo_id_to_users.rb +5 -0
  230. data/db/migrate/20120618102303_add_windowslive_id_to_users.rb +5 -0
  231. data/db/migrate/20120618121959_create_survey_templates.rb +9 -0
  232. data/db/migrate/20120618122120_create_survey_results.rb +10 -0
  233. data/db/migrate/20120618122346_create_questions.rb +12 -0
  234. data/db/migrate/20120618122442_create_answers.rb +11 -0
  235. data/db/migrate/20120618122551_create_question_results.rb +10 -0
  236. data/db/migrate/20120618123137_create_question_choices.rb +10 -0
  237. data/db/migrate/20120619142239_create_admin_notes.rb +17 -0
  238. data/db/migrate/20120619142255_move_admin_notes_to_comments.rb +25 -0
  239. data/db/migrate/20120619142315_add_fields_to_survey_template.rb +6 -0
  240. data/db/migrate/20120621124117_add_role_to_users.rb +5 -0
  241. data/db/migrate/20120625115344_rename_surveys_to_interviews.rb +5 -0
  242. data/db/migrate/20120625120613_rename_survey_relation_field.rb +7 -0
  243. data/db/migrate/20120625121230_rename_survey_results_to_interview_results.rb +5 -0
  244. data/db/migrate/20120625134119_add_type_field_to_interview_templates.rb +5 -0
  245. data/db/migrate/20120627104823_add_display_as_field_to_question.rb +5 -0
  246. data/db/migrate/20120628115724_rename_question_choices_to_answer_choices.rb +5 -0
  247. data/db/migrate/20120628124041_rename_answers_to_possible_answers.rb +5 -0
  248. data/db/migrate/20120628125515_rename_question_results_to_answers.rb +5 -0
  249. data/db/migrate/20120628125728_rename_questions_body_to_text.rb +5 -0
  250. data/db/migrate/20120628125839_rename_possible_answers_body_to_text.rb +5 -0
  251. data/db/migrate/20120628131944_fix_answer_choice_fields.rb +6 -0
  252. data/db/migrate/20120704144442_add_text_to_answer_choices.rb +5 -0
  253. data/db/migrate/20120706065743_add_body_from3rd_point_view_to_possible_answers.rb +5 -0
  254. data/db/migrate/20120706125136_change_facebook_id_and_twitter_id_type.rb +11 -0
  255. data/db/migrate/20120710070940_create_invitations.rb +10 -0
  256. data/db/migrate/20120710105054_create_delayed_jobs.rb +22 -0
  257. data/db/migrate/20120711084512_create_recommendations.rb +14 -0
  258. data/db/migrate/20120712092224_create_invitation_identifiers.rb +8 -0
  259. data/db/migrate/20120712130638_remove_user_id_from_recommendations.rb +9 -0
  260. data/db/migrate/20120712130711_remove_interview_template_id_from_recommendations.rb +9 -0
  261. data/db/migrate/20120712130744_add_invitation_id_to_recommendations.rb +5 -0
  262. data/db/migrate/20120716113646_create_contacts.rb +12 -0
  263. data/db/migrate/20120718135613_add_secret_to_interview_results.rb +5 -0
  264. data/db/migrate/20120718162312_fix_recommendation_relation.rb +5 -0
  265. data/db/migrate/20120724095308_add_state_to_interview_results.rb +5 -0
  266. data/db/migrate/20120724142439_create_carriers.rb +11 -0
  267. data/db/migrate/20120725071947_create_campaigns.rb +11 -0
  268. data/db/migrate/20120725083605_add_last_visited_path_to_users.rb +5 -0
  269. data/db/migrate/20120725085526_create_interesting_facts.rb +13 -0
  270. data/db/migrate/20120725131809_add_attachment_to_campaigns.rb +5 -0
  271. data/db/migrate/20120726115141_create_attachments.rb +10 -0
  272. data/db/migrate/20120726115644_extract_attachment_from_campaign.rb +11 -0
  273. data/db/migrate/20120726135706_create_buying_attempts.rb +11 -0
  274. data/db/migrate/20120727104402_add_campaign_id_to_interview_result.rb +5 -0
  275. data/db/migrate/20120730064404_change_interesting_facts.rb +6 -0
  276. data/db/migrate/20120730114402_add_attachment_id_to_interesting_facts.rb +5 -0
  277. data/db/migrate/20120730115758_remove_campaign_id_from_interesting_facts.rb +9 -0
  278. data/db/schema.rb +201 -0
  279. data/db/seeds.rb +86 -0
  280. data/doc/Ability.html +221 -0
  281. data/doc/Admin/InterviewHelper.html +292 -0
  282. data/doc/Answer.html +241 -0
  283. data/doc/AnswerChoice.html +296 -0
  284. data/doc/AnswersHelper.html +194 -0
  285. data/doc/ApplicationController.html +318 -0
  286. data/doc/ApplicationHelper.html +119 -0
  287. data/doc/CellPhoneInsuranceInterview.html +192 -0
  288. data/doc/Contact.html +186 -0
  289. data/doc/ContactsController.html +283 -0
  290. data/doc/CoreExtensions.html +129 -0
  291. data/doc/CoreExtensions/Object.html +210 -0
  292. data/doc/DefaultInterview.html +192 -0
  293. data/doc/DevelopmentMailInterceptor.html +203 -0
  294. data/doc/EmailValidator.html +210 -0
  295. data/doc/InterviewResult.html +251 -0
  296. data/doc/InterviewResultInvitationsController.html +218 -0
  297. data/doc/InterviewResultsController.html +280 -0
  298. data/doc/InterviewTemplate.html +330 -0
  299. data/doc/InterviewTemplatesController.html +145 -0
  300. data/doc/Invitation.html +362 -0
  301. data/doc/InvitationIdentifier.html +287 -0
  302. data/doc/InvitationMailer.html +218 -0
  303. data/doc/LayoutHelper.html +188 -0
  304. data/doc/NavLinksRenderer.html +214 -0
  305. data/doc/NumericQuestion.html +196 -0
  306. data/doc/OneCorrectQuestion.html +269 -0
  307. data/doc/PagesController.html +206 -0
  308. data/doc/PossibleAnswer.html +627 -0
  309. data/doc/Question.html +620 -0
  310. data/doc/Recommendation.html +186 -0
  311. data/doc/RecommendationHelper.html +292 -0
  312. data/doc/RecommendationsController.html +230 -0
  313. data/doc/ResourcesController.html +141 -0
  314. data/doc/ScaleQuestion.html +525 -0
  315. data/doc/SocialProvidersConfig.html +240 -0
  316. data/doc/User.html +677 -0
  317. data/doc/Users/OmniauthCallbacksController.html +542 -0
  318. data/doc/Wisemuv/Contacts.html +188 -0
  319. data/doc/Wisemuv/Contacts/Google/ControllerConcerns.html +204 -0
  320. data/doc/Wisemuv/Contacts/Google/ModelConcerns.html +128 -0
  321. data/doc/Wisemuv/Contacts/WindowsLive/ControllerConcerns.html +204 -0
  322. data/doc/Wisemuv/Contacts/WindowsLive/Grabber.html +307 -0
  323. data/doc/Wisemuv/Contacts/WindowsLive/ModelConcerns.html +128 -0
  324. data/doc/Wisemuv/Contacts/Yahoo/ControllerConcerns.html +206 -0
  325. data/doc/Wisemuv/Contacts/Yahoo/Grabber.html +526 -0
  326. data/doc/Wisemuv/Contacts/Yahoo/ModelConcerns.html +128 -0
  327. data/doc/YesNoQuestion.html +209 -0
  328. data/doc/_index.html +509 -0
  329. data/doc/carriers-campaigns-interviews-relationships.png +0 -0
  330. data/doc/class_list.html +61 -0
  331. data/doc/css/common.css +1 -0
  332. data/doc/css/cucumber.css +222 -0
  333. data/doc/css/full_list.css +57 -0
  334. data/doc/css/style.css +328 -0
  335. data/doc/feature_list.html +513 -0
  336. data/doc/file.README.html +152 -0
  337. data/doc/file_list.html +63 -0
  338. data/doc/frames.html +28 -0
  339. data/doc/index.html +152 -0
  340. data/doc/js/app.js +214 -0
  341. data/doc/js/cucumber.js +305 -0
  342. data/doc/js/full_list.js +173 -0
  343. data/doc/js/jquery.js +4 -0
  344. data/doc/method_list.html +740 -0
  345. data/doc/requirements.html +196 -0
  346. data/doc/requirements/features.html +180 -0
  347. data/doc/requirements/features/admin_manages_users.html +1260 -0
  348. data/doc/requirements/features/ask_friends_and_family.html +918 -0
  349. data/doc/requirements/features/create_interview.html +1734 -0
  350. data/doc/requirements/features/edit_interview.html +832 -0
  351. data/doc/requirements/features/pass_interview.html +757 -0
  352. data/doc/requirements/features/pulling_contacts.html +718 -0
  353. data/doc/requirements/features/questions_order_during_creating_interview.html +126 -0
  354. data/doc/requirements/features/sign_in.html +1035 -0
  355. data/doc/requirements/features/sign_up.html +1948 -0
  356. data/doc/requirements/step_transformers.html +10401 -0
  357. data/doc/requirements/tags.html +670 -0
  358. data/doc/requirements/tags/javascript.html +245 -0
  359. data/doc/requirements/tags/omniauth.html +165 -0
  360. data/doc/requirements/tags/users.html +227 -0
  361. data/doc/tag_list.html +82 -0
  362. data/doc/top-level-namespace.html +128 -0
  363. data/features/admin_manages_users.feature +57 -0
  364. data/features/ask_friends_and_family.feature +39 -0
  365. data/features/buying_tracking_code.feature +11 -0
  366. data/features/campaign_management.feature +42 -0
  367. data/features/create_interview.feature +74 -0
  368. data/features/edit_interview.feature +40 -0
  369. data/features/interesting_facts_parser.feature +11 -0
  370. data/features/interview_completion.feature +6 -0
  371. data/features/pass_interview.feature +31 -0
  372. data/features/pulling_contacts.feature +21 -0
  373. data/features/questions_order_during_creating_interview.feature +2 -0
  374. data/features/redirecting_after_signing_in.feature +19 -0
  375. data/features/sign_in.feature +51 -0
  376. data/features/sign_up.feature +43 -0
  377. data/features/step_definitions/admin_manages_users_steps.rb +91 -0
  378. data/features/step_definitions/ask_friends_and_family_steps.rb +41 -0
  379. data/features/step_definitions/buying_tracking_code_steps.rb +15 -0
  380. data/features/step_definitions/campaign_management_steps.rb +50 -0
  381. data/features/step_definitions/create_interview_steps.rb +130 -0
  382. data/features/step_definitions/edit_interview_steps.rb +35 -0
  383. data/features/step_definitions/interesting_facts_parser_steps.rb +34 -0
  384. data/features/step_definitions/interview_completion_steps.rb +8 -0
  385. data/features/step_definitions/interview_results_steps.rb +7 -0
  386. data/features/step_definitions/interview_steps.rb +11 -0
  387. data/features/step_definitions/pass_interview_steps.rb +52 -0
  388. data/features/step_definitions/pulling_contacts_steps.rb +24 -0
  389. data/features/step_definitions/redirecting_after_sign_in_steps.rb +19 -0
  390. data/features/step_definitions/sign_in_steps.rb +110 -0
  391. data/features/step_definitions/sign_up_steps.rb +56 -0
  392. data/features/support/env.rb +23 -0
  393. data/features/support/omniauth.rb +69 -0
  394. data/features/support/pickle.rb +26 -0
  395. data/features/support/uploading.rb +6 -0
  396. data/features/support/users.rb +18 -0
  397. data/features/upload-files/Life Insurance Facts-Final.xls +0 -0
  398. data/lib/assets/.gitkeep +0 -0
  399. data/lib/core_extensions/object.rb +9 -0
  400. data/lib/interceptors/development_mail_interceptor.rb +5 -0
  401. data/lib/social_providers_config.rb +10 -0
  402. data/lib/tasks/auto_annotate_models.rake +22 -0
  403. data/lib/tasks/cucumber.rake +65 -0
  404. data/lib/tasks/db/reseed.rake +12 -0
  405. data/lib/tasks/db/seed/interviews.rake +14 -0
  406. data/lib/tasks/db/truncate.rake +19 -0
  407. data/lib/tasks/yardoc.rake +19 -0
  408. data/lib/validators/email_validator.rb +7 -0
  409. data/lib/wisemuv/contacts.rb +5 -0
  410. data/lib/wisemuv/contacts/google/controller_concerns.rb +19 -0
  411. data/lib/wisemuv/contacts/google/model_concerns.rb +17 -0
  412. data/lib/wisemuv/contacts/windows_live/controller_concerns.rb +23 -0
  413. data/lib/wisemuv/contacts/windows_live/grabber.rb +22 -0
  414. data/lib/wisemuv/contacts/windows_live/model_concerns.rb +17 -0
  415. data/lib/wisemuv/contacts/yahoo/controller_concerns.rb +29 -0
  416. data/lib/wisemuv/contacts/yahoo/grabber.rb +55 -0
  417. data/lib/wisemuv/contacts/yahoo/model_concerns.rb +17 -0
  418. data/lib/wisemuv/interesting_facts_parser.rb +65 -0
  419. data/log/.gitkeep +0 -0
  420. data/public/403.html +26 -0
  421. data/public/404.html +26 -0
  422. data/public/422.html +26 -0
  423. data/public/500.html +25 -0
  424. data/public/ZeroClipboard10.swf +0 -0
  425. data/public/favicon.ico +0 -0
  426. data/public/robots.txt +5 -0
  427. data/script/cucumber +10 -0
  428. data/script/delayed_job +5 -0
  429. data/script/rails +6 -0
  430. data/spec/factories/answer.rb +6 -0
  431. data/spec/factories/answer_choice.rb +6 -0
  432. data/spec/factories/attachment.rb +11 -0
  433. data/spec/factories/buying_attempts.rb +8 -0
  434. data/spec/factories/campaign.rb +8 -0
  435. data/spec/factories/carrier.rb +6 -0
  436. data/spec/factories/contact.rb +8 -0
  437. data/spec/factories/interesting_facts.rb +10 -0
  438. data/spec/factories/interview_result.rb +27 -0
  439. data/spec/factories/interview_template.rb +46 -0
  440. data/spec/factories/invitation_identifier.rb +8 -0
  441. data/spec/factories/possible_answer.rb +23 -0
  442. data/spec/factories/question.rb +55 -0
  443. data/spec/factories/recommendation.rb +10 -0
  444. data/spec/factories/user.rb +21 -0
  445. data/spec/mailers/invitation_mailer_spec.rb +5 -0
  446. data/spec/models/answer_spec.rb +5 -0
  447. data/spec/models/attachment_spec.rb +5 -0
  448. data/spec/models/buying_attempt_spec.rb +5 -0
  449. data/spec/models/campaign_spec.rb +5 -0
  450. data/spec/models/carrier_spec.rb +5 -0
  451. data/spec/models/contact_spec.rb +5 -0
  452. data/spec/models/interesting_fact_spec.rb +5 -0
  453. data/spec/models/invitation_identifier_spec.rb +5 -0
  454. data/spec/models/question_choice_spec.rb +5 -0
  455. data/spec/models/question_result_spec.rb +5 -0
  456. data/spec/models/question_spec.rb +5 -0
  457. data/spec/models/recommendation_spec.rb +5 -0
  458. data/spec/models/survey_result_spec.rb +5 -0
  459. data/spec/models/survey_template_spec.rb +5 -0
  460. data/spec/spec_helper.rb +32 -0
  461. data/vendor/.rvmrc +53 -0
  462. data/vendor/Gemfile +60 -0
  463. data/vendor/Gemfile.lock +166 -0
  464. data/vendor/README.rdoc +261 -0
  465. data/vendor/Rakefile +7 -0
  466. data/vendor/assets/javascripts/ZeroClipboard.js +316 -0
  467. data/vendor/assets/javascripts/selectToUISlider.js +240 -0
  468. data/vendor/assets/javascripts/underscore.string.js +566 -0
  469. data/vendor/assets/stylesheets/.gitkeep +0 -0
  470. data/vendor/config.ru +4 -0
  471. data/vendor/plugins/.gitkeep +0 -0
  472. metadata +504 -55
  473. data/README.markdown +0 -44
  474. data/lib/shell-spinner.rb +0 -52
  475. data/lib/shell-spinner/version.rb +0 -3
  476. data/shell-spinner.gemspec +0 -18
@@ -0,0 +1,82 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+
7
+ <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
8
+
9
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
10
+
11
+
12
+
13
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
+
17
+
18
+ <base id="base_target" target="_parent" />
19
+ </head>
20
+ <body>
21
+ <script type="text/javascript" charset="utf-8">
22
+ if (window.top.frames.main) {
23
+ document.getElementById('base_target').target = 'main';
24
+ document.body.className = 'frames';
25
+ }
26
+ </script>
27
+ <div id="content">
28
+ <h1 id="full_list_header">Tag List</h1>
29
+ <div id="nav">
30
+
31
+ <span><a target="_self" href="feature_list.html">
32
+ Features
33
+ </a></span>
34
+
35
+ <span><a target="_self" href="tag_list.html">
36
+ Tags
37
+ </a></span>
38
+
39
+ <span><a target="_self" href="class_list.html">
40
+ Classes
41
+ </a></span>
42
+
43
+ <span><a target="_self" href="method_list.html">
44
+ Methods
45
+ </a></span>
46
+
47
+ <span><a target="_self" href="file_list.html">
48
+ Files
49
+ </a></span>
50
+
51
+ </div>
52
+ <div id="search">Search: <input type="text" /></div>
53
+
54
+ <ul id="full_list" class="class">
55
+ <li>
56
+ <span class='object_link'><a href="requirements/tags.html" title="requirements::tags (featuretags)">All Tags</a></span>
57
+ </li>
58
+
59
+
60
+
61
+ <li class="r1">
62
+ <span class='object_link'><a href="requirements/tags/javascript.html" title="requirements::tags::javascript (tag)">@javascript</a></span>
63
+ <small>28</small>
64
+ </li>
65
+
66
+
67
+ <li class="r2">
68
+ <span class='object_link'><a href="requirements/tags/users.html" title="requirements::tags::users (tag)">@users</a></span>
69
+ <small>26</small>
70
+ </li>
71
+
72
+
73
+ <li class="r1">
74
+ <span class='object_link'><a href="requirements/tags/omniauth.html" title="requirements::tags::omniauth (tag)">@omniauth</a></span>
75
+ <small>2</small>
76
+ </li>
77
+
78
+
79
+ </ul>
80
+ </div>
81
+ </body>
82
+ </html>
@@ -0,0 +1,128 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.8.2.1
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <link rel="stylesheet" href="css/cucumber.css" type="text/css" media="screen" charset="utf-8" />
18
+
19
+ <script type="text/javascript" charset="utf-8">
20
+ hasFrames = window.top.frames.main ? true : false;
21
+ relpath = '';
22
+ framesUrl = "frames.html#!" + escape(window.location.href);
23
+ </script>
24
+
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
27
+
28
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
29
+
30
+ <script type="text/javascript" charset="utf-8" src="js/cucumber.js"></script>
31
+
32
+
33
+ </head>
34
+ <body>
35
+ <div id="header">
36
+ <div id="menu">
37
+
38
+ <a href="_index.html">Index</a> &raquo;
39
+
40
+
41
+ <span class="title">Top Level Namespace</span>
42
+
43
+
44
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
45
+ </div>
46
+
47
+ <div id="search">
48
+
49
+ <a class="full_list_link" id="feature_list_link"
50
+ href="feature_list.html">
51
+ Features
52
+ </a>
53
+
54
+ <a class="full_list_link" id="tag_list_link"
55
+ href="tag_list.html">
56
+ Tags
57
+ </a>
58
+
59
+ <a class="full_list_link" id="class_list_link"
60
+ href="class_list.html">
61
+ Class List
62
+ </a>
63
+
64
+ <a class="full_list_link" id="method_list_link"
65
+ href="method_list.html">
66
+ Method List
67
+ </a>
68
+
69
+ <a class="full_list_link" id="file_list_link"
70
+ href="file_list.html">
71
+ File List
72
+ </a>
73
+
74
+ </div>
75
+ <div class="clear"></div>
76
+ </div>
77
+
78
+ <iframe id="search_frame"></iframe>
79
+
80
+ <div id="content"><h1>Top Level Namespace
81
+
82
+
83
+
84
+ </h1>
85
+
86
+ <dl class="box">
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ </dl>
96
+ <div class="clear"></div>
97
+
98
+ <h2>Defined Under Namespace</h2>
99
+ <p class="children">
100
+
101
+
102
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="AnswersHelper.html" title="AnswersHelper (module)">AnswersHelper</a></span>, <span class='object_link'><a href="ApplicationHelper.html" title="ApplicationHelper (module)">ApplicationHelper</a></span>, <span class='object_link'><a href="CoreExtensions.html" title="CoreExtensions (module)">CoreExtensions</a></span>, <span class='object_link'><a href="LayoutHelper.html" title="LayoutHelper (module)">LayoutHelper</a></span>, <span class='object_link'><a href="RecommendationHelper.html" title="RecommendationHelper (module)">RecommendationHelper</a></span>, <span class='object_link'><a href="SocialProvidersConfig.html" title="SocialProvidersConfig (module)">SocialProvidersConfig</a></span>
103
+
104
+
105
+
106
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Ability.html" title="Ability (class)">Ability</a></span>, <span class='object_link'><a href="Answer.html" title="Answer (class)">Answer</a></span>, <span class='object_link'><a href="AnswerChoice.html" title="AnswerChoice (class)">AnswerChoice</a></span>, <span class='object_link'><a href="ApplicationController.html" title="ApplicationController (class)">ApplicationController</a></span>, <span class='object_link'><a href="CellPhoneInsuranceInterview.html" title="CellPhoneInsuranceInterview (class)">CellPhoneInsuranceInterview</a></span>, <span class='object_link'><a href="Contact.html" title="Contact (class)">Contact</a></span>, <span class='object_link'><a href="ContactsController.html" title="ContactsController (class)">ContactsController</a></span>, <span class='object_link'><a href="DefaultInterview.html" title="DefaultInterview (class)">DefaultInterview</a></span>, <span class='object_link'><a href="DevelopmentMailInterceptor.html" title="DevelopmentMailInterceptor (class)">DevelopmentMailInterceptor</a></span>, <span class='object_link'><a href="EmailValidator.html" title="EmailValidator (class)">EmailValidator</a></span>, <span class='object_link'><a href="InterviewResult.html" title="InterviewResult (class)">InterviewResult</a></span>, <span class='object_link'><a href="InterviewResultInvitationsController.html" title="InterviewResultInvitationsController (class)">InterviewResultInvitationsController</a></span>, <span class='object_link'><a href="InterviewResultsController.html" title="InterviewResultsController (class)">InterviewResultsController</a></span>, <span class='object_link'><a href="InterviewTemplate.html" title="InterviewTemplate (class)">InterviewTemplate</a></span>, <span class='object_link'><a href="InterviewTemplatesController.html" title="InterviewTemplatesController (class)">InterviewTemplatesController</a></span>, <span class='object_link'><a href="Invitation.html" title="Invitation (class)">Invitation</a></span>, <span class='object_link'><a href="InvitationIdentifier.html" title="InvitationIdentifier (class)">InvitationIdentifier</a></span>, <span class='object_link'><a href="InvitationMailer.html" title="InvitationMailer (class)">InvitationMailer</a></span>, <span class='object_link'><a href="NavLinksRenderer.html" title="NavLinksRenderer (class)">NavLinksRenderer</a></span>, <span class='object_link'><a href="NumericQuestion.html" title="NumericQuestion (class)">NumericQuestion</a></span>, <span class='object_link'><a href="OneCorrectQuestion.html" title="OneCorrectQuestion (class)">OneCorrectQuestion</a></span>, <span class='object_link'><a href="PagesController.html" title="PagesController (class)">PagesController</a></span>, <span class='object_link'><a href="PossibleAnswer.html" title="PossibleAnswer (class)">PossibleAnswer</a></span>, <span class='object_link'><a href="Question.html" title="Question (class)">Question</a></span>, <span class='object_link'><a href="Recommendation.html" title="Recommendation (class)">Recommendation</a></span>, <span class='object_link'><a href="RecommendationsController.html" title="RecommendationsController (class)">RecommendationsController</a></span>, <span class='object_link'><a href="ResourcesController.html" title="ResourcesController (class)">ResourcesController</a></span>, <span class='object_link'><a href="ScaleQuestion.html" title="ScaleQuestion (class)">ScaleQuestion</a></span>, <span class='object_link'><a href="User.html" title="User (class)">User</a></span>, <span class='object_link'><a href="YesNoQuestion.html" title="YesNoQuestion (class)">YesNoQuestion</a></span>
107
+
108
+
109
+ </p>
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+ </div>
120
+
121
+ <div id="footer">
122
+ Generated on Tue Jul 24 15:05:11 2012 by
123
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
124
+ 0.8.2.1 (ruby-1.9.3).
125
+ </div>
126
+
127
+ </body>
128
+ </html>
@@ -0,0 +1,57 @@
1
+ @users @javascript
2
+ Feature: as admin I can edit users
3
+
4
+ Background:
5
+ Given I sign in as an admin
6
+
7
+
8
+ Scenario: Admin can create new user
9
+ When I go to the admin users page
10
+ And click button to create new user
11
+ Then I should see user edit form
12
+
13
+ When I enter first name as "James"
14
+ And enter last name as "Bond"
15
+ And enter email as "james@bond.com"
16
+ And set password to "007"
17
+ And set password confirmation to "007"
18
+ And submit edit user form
19
+ Then I should see that user has been successfully created
20
+ And user "james@bond.com" should exist
21
+
22
+
23
+ Scenario: If admin enters incorrect data user shouldn't have been created
24
+ When I go to the admin users page
25
+ And click button to create new user
26
+ Then I should see user edit form
27
+
28
+ When I enter first name as "James"
29
+ And enter last name as "Bond"
30
+ And enter email as "james@bond.com"
31
+ And set password to "007"
32
+ And set password confirmation to "911"
33
+ And submit edit user form
34
+ Then I should see user edit form
35
+
36
+
37
+ Scenario: If an admin changes user role it must be stored properly
38
+ When I go to the edit "arnie@wisemuv.com" user page
39
+ And set user role as manager
40
+ And submit user edit form
41
+ Then I should see that user has been successfully updated
42
+ And "arnie@wisemuv.com" must be a manager
43
+
44
+
45
+ Scenario: Admin should be able to delete user
46
+ When I go to the admin users page
47
+ And click link to delete "arnie@wisemuv.com" user
48
+ Then I should see that user has been destroyed
49
+ And user "arnie@wisemuv.com" should not exist anymore
50
+
51
+
52
+ Scenario: Admin should be able to find user by filters
53
+ When I go to the admin users page
54
+ And enter "arnie" in email filter
55
+ And press filter button
56
+ Then I should see table with "arnie@wisemuv.com" user
57
+ And users table should display "1" user
@@ -0,0 +1,39 @@
1
+ @javascript @users
2
+ Feature: as user I could ask mentions of my friends and family about interview which I've passed
3
+
4
+ Background:
5
+ Given I sign in as a regular user
6
+ And interview "Interview with the Vampire" exists
7
+ When I pass "Interview with the Vampire" interview
8
+ Then I should see link to ask friends and family
9
+
10
+ When I follow the link to ask friends and family
11
+ Then I should be on page which allows me to send invitations
12
+
13
+ Scenario: send invitations to my friend
14
+ When I fill recipients email with "my-friend@wisemuv.com"
15
+ And push button to add this email to list
16
+ And push the invitation submit button
17
+ Then I should see message about success invitation creation
18
+ And invitation should be created
19
+ And "my-friend@wisemuv.com" should have 1 incoming email
20
+
21
+ Scenario: send invitations to several friends at one time
22
+ When I fill recipients email with "my-friend@wisemuv.com"
23
+ And push button to add this email to list
24
+ Then this email should appear in the contacts list
25
+
26
+ When I fill recipients email with "my-best-friend@wisemuv.com"
27
+ And push button to add this email to list
28
+ Then this email should appear in the contacts list
29
+
30
+ When I fill recipients email with "my-old-friend@wisemuv.com"
31
+ And push button to add this email to list
32
+ Then this email should appear in the contacts list
33
+
34
+ When push the invitation submit button
35
+ Then I should see message about success invitation creation
36
+ And invitation should be created
37
+ And "my-friend@wisemuv.com" should have 1 incoming email
38
+ And "my-best-friend@wisemuv.com" should have 1 incoming email
39
+ And "my-old-friend@wisemuv.com" should have 1 incoming email
@@ -0,0 +1,11 @@
1
+ @users @javascript
2
+ Feature: when user click buy button, then we should track attempt and redirect him to the related carrier home page
3
+ Scenario: as user clicks buy button and make sure that he redirects to the proper page
4
+ Given interview "Interview with the Vampire" exists
5
+ And regular user completed interview "Interview with the Vampire"
6
+ And I sign in as a regular user
7
+ And I am on the "Interview with the Vampire" interview results page
8
+
9
+ When I click buy button
10
+ Then I should be redirected to carrier home page
11
+ And current page should contain tracking key
@@ -0,0 +1,42 @@
1
+ @users @javascript
2
+ Feature: as admin or manager I can create and edit campaigns
3
+
4
+ Scenario: As manager I can list campaigns and add them
5
+ Given I sign in as a manager
6
+ And carrier "Acme" exists
7
+ And interview "Interview with the Vampire" exists
8
+
9
+ When I go to the campaigns page
10
+ Then I should see link to create campaign
11
+
12
+ When I follow link to create campaign
13
+ Then I should see campaign form
14
+
15
+ When I submit campaign form
16
+ Then I should see validation errors
17
+
18
+ When I populate title with "First Campaign"
19
+ And select carrier as "Acme"
20
+ And select interview as "Interview with the Vampire"
21
+
22
+ When I upload interesting facts file
23
+ Then an attachment should be created
24
+
25
+ When I submit campaign form
26
+ Then I should see that campaign has been created
27
+
28
+ Scenario: A regular user can't manage campaigns
29
+ Given I sign in as a regular user
30
+ When I go to the campaigns page
31
+ Then I should see manager access required error
32
+
33
+
34
+ Scenario: A non-authenticated user can't manage campaigns
35
+ Given I sign out
36
+ When I go to the campaigns page
37
+ Then I should see authentication error
38
+
39
+ Scenario: As admin I can list campaigns and add them
40
+ Given I sign in as an admin
41
+ When I go to the campaigns page
42
+ Then I should see link to create campaign
@@ -0,0 +1,74 @@
1
+ @users @javascript
2
+ Feature: as admin I can create interview
3
+
4
+ Scenario: If a user is logged in as an admin he could create an interview
5
+ Given I sign in as an admin
6
+ When I go to the interviews administration page
7
+ Then I should see the button to create new interview
8
+
9
+ When I click button to create new interview
10
+ Then I should see the interview editing form
11
+
12
+ When I populate interview title with "My interview"
13
+ And populate first question title with "Foo?"
14
+ And point that want answers to be shown as radio buttons
15
+ And populate first answer with "Yes"
16
+ And populate second answer with "No"
17
+ And submit interview creation form
18
+ Then I should see that interview has been created
19
+
20
+ Scenario: Interview mustn't be created without obligatory attributes
21
+ Given I sign in as an admin
22
+ When I go to the interview creation page
23
+ And submit interview creation form
24
+ Then I should see interview form with validation errors
25
+
26
+ Scenario: one-correct-question
27
+ Given I sign in as an admin
28
+ When I go to the interview creation page
29
+ And populate interview title with "My interview"
30
+ And fill first question with sample data
31
+ And select first question type as One Correct
32
+ And submit interview creation form
33
+ Then I should see that interview has been created
34
+ And question of one correct type should exist
35
+
36
+ Scenario: yes-no-question
37
+ Given I sign in as an admin
38
+ When I go to the interview creation page
39
+ And populate interview title with "My interview"
40
+ And fill first question with sample data
41
+ And select first question type as Yes No
42
+ And submit interview creation form
43
+ Then I should see that interview has been created
44
+ And question of yes-no type should exist
45
+
46
+ Scenario: scale-question
47
+ Given I sign in as an admin
48
+ When I go to the interview creation page
49
+ And populate interview title with "My interview"
50
+ And fill first question with sample data
51
+ And select first question type as Scale
52
+ And submit interview creation form
53
+ Then I should see that interview has been created
54
+ And question of scale type should exist
55
+
56
+ Scenario: numeric-question
57
+ Given I sign in as an admin
58
+ When I go to the interview creation page
59
+ And populate interview title with "My interview"
60
+ And fill first question with sample data
61
+ And select first question type as Numeric
62
+ And submit interview creation form
63
+ Then I should see that interview has been created
64
+ And question of numeric type should exist
65
+
66
+ Scenario: non-authenticated user mustn't have access to the admin section
67
+ When go to the interview creation page
68
+ Then I should see authentication error
69
+
70
+ @omniauth
71
+ Scenario: non-admin user mustn't have access to the admin section
72
+ When login via Facebook
73
+ And go to the interview creation page
74
+ Then I should see restriction error
@@ -0,0 +1,40 @@
1
+ @users @javascript
2
+ Feature: as admin I can edit interview
3
+
4
+ Background:
5
+ Given I sign in as an admin
6
+ And interview "Interview with the Vampire" with yes-no questions exists
7
+
8
+
9
+ Scenario: If an admin enters incorrect data interview mustn't be updated with these wrong values
10
+ When I go to the interviews administration page
11
+ Then I should see link to edit the interview
12
+
13
+ When I follow the link to edit the interview
14
+ Then I should see the interview editing form
15
+
16
+ When I populate first question title with ""
17
+ And submit interview creation form
18
+ Then I should see interview form with validation errors
19
+
20
+
21
+ Scenario: If an admin enters proper data then interview must be updated
22
+ When I go to edit interview "Interview with the Vampire" page
23
+ And populate first question title with "To be or not to be?"
24
+
25
+ And submit interview creation form
26
+ Then I should see that interview has been updated
27
+
28
+ When I go to pass interview "Interview with the Vampire" page
29
+ Then I should see "To be or not to be?"
30
+
31
+
32
+ Scenario: If an admin changes interview type then it must be updated properly
33
+ When I go to edit interview "Interview with the Vampire" page
34
+ And change interview's type to cell phone insurance
35
+ And submit interview creation form
36
+ Then I should see that interview has been updated
37
+ And interview "Interview with the Vampire" type must be cell phone insurance
38
+
39
+ When I go to edit interview "Interview with the Vampire" page
40
+ Then I should see that interview type is set to Cell Phone Insurance