hot_date_rails 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (245) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +29 -0
  5. data/app/assets/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  6. data/app/assets/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  7. data/app/assets/images/ui-bg_flat_10_000000_40x100.png +0 -0
  8. data/app/assets/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  9. data/app/assets/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  10. data/app/assets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  11. data/app/assets/images/ui-bg_gloss-wave_35_d18406_500x100.png +0 -0
  12. data/app/assets/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  13. data/app/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  14. data/app/assets/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  15. data/app/assets/images/ui-icons_222222_256x240.png +0 -0
  16. data/app/assets/images/ui-icons_228ef1_256x240.png +0 -0
  17. data/app/assets/images/ui-icons_ef8c08_256x240.png +0 -0
  18. data/app/assets/images/ui-icons_ffd27a_256x240.png +0 -0
  19. data/app/assets/images/ui-icons_ffffff_256x240.png +0 -0
  20. data/app/assets/javascripts/hot_date_rails.js +3 -0
  21. data/app/assets/javascripts/hot_date_rails/hot_date_rails.js.coffee +51 -0
  22. data/app/assets/javascripts/vendors/jquery-ui-timepicker-addon.js +2203 -0
  23. data/app/assets/javascripts/vendors/jquery-ui.min.js +7 -0
  24. data/app/assets/stylesheets/hot_date_rails.css +5 -0
  25. data/app/assets/stylesheets/hot_date_rails/hot_date_rails.css +3 -0
  26. data/app/assets/stylesheets/vendors/jquery-ui-timepicker-addon.css +11 -0
  27. data/app/assets/stylesheets/vendors/jquery-ui.min.css +7 -0
  28. data/app/helpers/form_helper.rb +51 -0
  29. data/config/initializers/hot_date_rails.rb +7 -0
  30. data/config/locales/en.yml +14 -0
  31. data/config/routes.rb +2 -0
  32. data/lib/hot_date_rails.rb +7 -0
  33. data/lib/hot_date_rails/engine.rb +18 -0
  34. data/lib/hot_date_rails/version.rb +3 -0
  35. data/lib/tasks/hot_date_rails_tasks.rake +4 -0
  36. data/spec/dummy/README.rdoc +28 -0
  37. data/spec/dummy/Rakefile +6 -0
  38. data/spec/dummy/app/assets/javascripts/application.js +6 -0
  39. data/spec/dummy/app/assets/stylesheets/application.css +16 -0
  40. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  41. data/spec/dummy/app/controllers/schedules_controller.rb +47 -0
  42. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  43. data/spec/dummy/app/models/schedule.rb +2 -0
  44. data/spec/dummy/app/views/layouts/application.html.erb +15 -0
  45. data/spec/dummy/app/views/schedules/_form.html.erb +50 -0
  46. data/spec/dummy/app/views/schedules/_form_custom.html.erb +45 -0
  47. data/spec/dummy/app/views/schedules/edit.html.erb +3 -0
  48. data/spec/dummy/app/views/schedules/new.html.erb +3 -0
  49. data/spec/dummy/app/views/schedules/new_custom.html.erb +3 -0
  50. data/spec/dummy/bin/bundle +3 -0
  51. data/spec/dummy/bin/rails +4 -0
  52. data/spec/dummy/bin/rake +4 -0
  53. data/spec/dummy/config.ru +4 -0
  54. data/spec/dummy/config/application.rb +21 -0
  55. data/spec/dummy/config/boot.rb +5 -0
  56. data/spec/dummy/config/database.yml +25 -0
  57. data/spec/dummy/config/environment.rb +9 -0
  58. data/spec/dummy/config/environments/development.rb +37 -0
  59. data/spec/dummy/config/environments/production.rb +82 -0
  60. data/spec/dummy/config/environments/test.rb +39 -0
  61. data/spec/dummy/config/initializers/assets.rb +8 -0
  62. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  63. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  64. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  65. data/spec/dummy/config/initializers/inflections.rb +16 -0
  66. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  67. data/spec/dummy/config/initializers/session_store.rb +3 -0
  68. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  69. data/spec/dummy/config/locales/en.yml +23 -0
  70. data/spec/dummy/config/routes.rb +61 -0
  71. data/spec/dummy/config/secrets.yml +22 -0
  72. data/spec/dummy/db/development.sqlite3 +0 -0
  73. data/spec/dummy/db/migrate/20140827212211_create_schedules.rb +15 -0
  74. data/spec/dummy/db/migrate/20140904013919_add_more_time_cols_to_schedules.rb +8 -0
  75. data/spec/dummy/db/migrate/20140909013705_add_easter_to_schedules.rb +5 -0
  76. data/spec/dummy/db/schema.rb +33 -0
  77. data/spec/dummy/db/test.sqlite3 +0 -0
  78. data/spec/dummy/log/development.log +28785 -0
  79. data/spec/dummy/log/test.log +53644 -0
  80. data/spec/dummy/public/404.html +67 -0
  81. data/spec/dummy/public/422.html +67 -0
  82. data/spec/dummy/public/500.html +66 -0
  83. data/spec/dummy/public/assets/application-0a9d2b4cc991008ce090428c104cd2f9.css +44 -0
  84. data/spec/dummy/public/assets/application-0a9d2b4cc991008ce090428c104cd2f9.css.gz +0 -0
  85. data/spec/dummy/public/assets/application-75231e2d9c4ba59c5dcce22c02c3f2b5.js +13018 -0
  86. data/spec/dummy/public/assets/application-75231e2d9c4ba59c5dcce22c02c3f2b5.js.gz +0 -0
  87. data/spec/dummy/public/assets/application-88702d05ca17911e137085c49d66a04f.css +44 -0
  88. data/spec/dummy/public/assets/application-88702d05ca17911e137085c49d66a04f.css.gz +0 -0
  89. data/spec/dummy/public/assets/application-e919b580af72ffc6cf8b45fd4cc584bc.js +13004 -0
  90. data/spec/dummy/public/assets/application-e919b580af72ffc6cf8b45fd4cc584bc.js.gz +0 -0
  91. data/spec/dummy/public/assets/application-ea65e5d350ec88fcdfc6e38d2a119cf6.js +13018 -0
  92. data/spec/dummy/public/assets/application-ea65e5d350ec88fcdfc6e38d2a119cf6.js.gz +0 -0
  93. data/spec/dummy/public/assets/manifest-654589c9dc52de090f2a81d705900787.json +1 -0
  94. data/spec/dummy/public/favicon.ico +0 -0
  95. data/spec/dummy/tmp/cache/assets/development/sprockets/03c953ac82aa1daf32bc1a66b56349fe +0 -0
  96. data/spec/dummy/tmp/cache/assets/development/sprockets/07c4183acfe6d5a7aea2aecda1106100 +0 -0
  97. data/spec/dummy/tmp/cache/assets/development/sprockets/0dcafd38884d132cf7409862c5a6d5fb +0 -0
  98. data/spec/dummy/tmp/cache/assets/development/sprockets/0ee983c6a75887fe48d7560ccc6a0c03 +0 -0
  99. data/spec/dummy/tmp/cache/assets/development/sprockets/0fd6aa81c1bdfb146f0baa44e380f36f +0 -0
  100. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  101. data/spec/dummy/tmp/cache/assets/development/sprockets/1ccd58997bd7f8cec65048f6fdc10e8c +0 -0
  102. data/spec/dummy/tmp/cache/assets/development/sprockets/1e473e9829cc11f3517eff392668b5b6 +0 -0
  103. data/spec/dummy/tmp/cache/assets/development/sprockets/20d19b39dec663d9be87a891a4c0a67b +0 -0
  104. data/spec/dummy/tmp/cache/assets/development/sprockets/2350c2ee82c5238ec1e55be119d0d800 +0 -0
  105. data/spec/dummy/tmp/cache/assets/development/sprockets/26ec49b2f0e92be70aef037530b84a22 +0 -0
  106. data/spec/dummy/tmp/cache/assets/development/sprockets/2ae56d8109083ac59ffe28a0ebe70c44 +0 -0
  107. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  108. data/spec/dummy/tmp/cache/assets/development/sprockets/2fd3c140903239c0f9edf5ab5c84bf2c +0 -0
  109. data/spec/dummy/tmp/cache/assets/development/sprockets/305cabb43aebb247b06295976ef63fcb +0 -0
  110. data/spec/dummy/tmp/cache/assets/development/sprockets/309a9ee2e83b353d861fdf597031b701 +0 -0
  111. data/spec/dummy/tmp/cache/assets/development/sprockets/31218ba2dc910ebc7f0bc9bd857fec23 +0 -0
  112. data/spec/dummy/tmp/cache/assets/development/sprockets/3364f73ad7193c532a9c1d7ecea03fc5 +0 -0
  113. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  114. data/spec/dummy/tmp/cache/assets/development/sprockets/35e2ef2e624e8591caa31b9453f49b25 +0 -0
  115. data/spec/dummy/tmp/cache/assets/development/sprockets/376c6e8b4ac8bf2405dcf785b93a82d4 +0 -0
  116. data/spec/dummy/tmp/cache/assets/development/sprockets/431036b212cedf8429a03d7d0e52f7c8 +0 -0
  117. data/spec/dummy/tmp/cache/assets/development/sprockets/467f014120c9e7a4ffbe21bc8a879c7f +0 -0
  118. data/spec/dummy/tmp/cache/assets/development/sprockets/46a1d346fcb352351e6b6726ed9513ba +0 -0
  119. data/spec/dummy/tmp/cache/assets/development/sprockets/4750cc863766de1e6e18c50bb47a3a21 +0 -0
  120. data/spec/dummy/tmp/cache/assets/development/sprockets/48a17156542e2bdc09b5669ff6926596 +0 -0
  121. data/spec/dummy/tmp/cache/assets/development/sprockets/4a44ed0a50044da8a54755a2cc6d5ed7 +0 -0
  122. data/spec/dummy/tmp/cache/assets/development/sprockets/4ab82c3223288bd2e9f2440895e442f5 +0 -0
  123. data/spec/dummy/tmp/cache/assets/development/sprockets/50090bf2e65584155c1c5c1470e7fd18 +0 -0
  124. data/spec/dummy/tmp/cache/assets/development/sprockets/5592f7754240b57e8d3e55f3e0c9de3a +0 -0
  125. data/spec/dummy/tmp/cache/assets/development/sprockets/58414f484444cda5d3046905bfc6bd03 +0 -0
  126. data/spec/dummy/tmp/cache/assets/development/sprockets/59002301bc2ad9c66b4368188402ef83 +0 -0
  127. data/spec/dummy/tmp/cache/assets/development/sprockets/59b9f1f42a11670aff962e1359c7a93e +0 -0
  128. data/spec/dummy/tmp/cache/assets/development/sprockets/5b923b5314d14dfbcf80b289b49bf5cb +0 -0
  129. data/spec/dummy/tmp/cache/assets/development/sprockets/5dd6206af3dba93208926d04778e26e4 +0 -0
  130. data/spec/dummy/tmp/cache/assets/development/sprockets/5e3a16a7a65151928708d6db358c759b +0 -0
  131. data/spec/dummy/tmp/cache/assets/development/sprockets/5e89175bf034a9a006d9cb257dc025dc +0 -0
  132. data/spec/dummy/tmp/cache/assets/development/sprockets/5e8983182c2fa724cc7bb383b737ec51 +0 -0
  133. data/spec/dummy/tmp/cache/assets/development/sprockets/5f59dd3f960783f3d471aff70dd93166 +0 -0
  134. data/spec/dummy/tmp/cache/assets/development/sprockets/685dcb29dc743fc5f93799940380de0c +0 -0
  135. data/spec/dummy/tmp/cache/assets/development/sprockets/6a5cbdcfa6dc2b5e180e991dea55f6f5 +0 -0
  136. data/spec/dummy/tmp/cache/assets/development/sprockets/6b199942285fcc72f17d4e30ef62820e +0 -0
  137. data/spec/dummy/tmp/cache/assets/development/sprockets/6cdaf3faa7917186563f0bc9c52872c2 +0 -0
  138. data/spec/dummy/tmp/cache/assets/development/sprockets/6d2058c2e924b4183c9c4c3ae85016da +0 -0
  139. data/spec/dummy/tmp/cache/assets/development/sprockets/6fe42220db62ec1ddc415e14aa2c3273 +0 -0
  140. data/spec/dummy/tmp/cache/assets/development/sprockets/705d80fa05052d5d6f269e75d7a11374 +0 -0
  141. data/spec/dummy/tmp/cache/assets/development/sprockets/711727020dce7592b4d0288c229cc6e2 +0 -0
  142. data/spec/dummy/tmp/cache/assets/development/sprockets/72ba7fe3126a9ddee585f301a47f0666 +0 -0
  143. data/spec/dummy/tmp/cache/assets/development/sprockets/76543b0908213ca3eeb0a2d562eb3a45 +0 -0
  144. data/spec/dummy/tmp/cache/assets/development/sprockets/7761773b21e56b187ef1ef0faed07f4c +0 -0
  145. data/spec/dummy/tmp/cache/assets/development/sprockets/8104425dff98e6732e55a66f92dd8c8b +0 -0
  146. data/spec/dummy/tmp/cache/assets/development/sprockets/82b322c98d7b5192d3dfce571867e5ed +0 -0
  147. data/spec/dummy/tmp/cache/assets/development/sprockets/831efccccd36e05ad2fa9f0945ca7082 +0 -0
  148. data/spec/dummy/tmp/cache/assets/development/sprockets/888399e3c0294d3131c1e82b6740ce29 +0 -0
  149. data/spec/dummy/tmp/cache/assets/development/sprockets/88c4ca19a25ea136e9dab7519f3ee84f +0 -0
  150. data/spec/dummy/tmp/cache/assets/development/sprockets/89aa62e587867525e04ef35f65a406a7 +0 -0
  151. data/spec/dummy/tmp/cache/assets/development/sprockets/8b975758d2d6a934be37038d6415afce +0 -0
  152. data/spec/dummy/tmp/cache/assets/development/sprockets/925489b1ca0719bbf039b596ae188766 +0 -0
  153. data/spec/dummy/tmp/cache/assets/development/sprockets/965093127c5e679a2ffe5f562d7b4662 +0 -0
  154. data/spec/dummy/tmp/cache/assets/development/sprockets/9684b06d31e58ef507aa48016aa827a4 +0 -0
  155. data/spec/dummy/tmp/cache/assets/development/sprockets/a243b9dd098a9b4a370c4646ca63074e +0 -0
  156. data/spec/dummy/tmp/cache/assets/development/sprockets/a35e9a18e56ebffc96fea26b2e6e4f53 +0 -0
  157. data/spec/dummy/tmp/cache/assets/development/sprockets/a507ee6f8a7a281cd4b2e8332e4a39f9 +0 -0
  158. data/spec/dummy/tmp/cache/assets/development/sprockets/aadfbec5339af9d56a5ba29aee9e46f7 +0 -0
  159. data/spec/dummy/tmp/cache/assets/development/sprockets/b095776a61a310c77a61ab31d090e5a2 +0 -0
  160. data/spec/dummy/tmp/cache/assets/development/sprockets/b13cb66c8a1ae4e7639bc79e237e6768 +0 -0
  161. data/spec/dummy/tmp/cache/assets/development/sprockets/b19bf95d83eb39a720985b5c37e33ef5 +0 -0
  162. data/spec/dummy/tmp/cache/assets/development/sprockets/b6051245a01e4e8d6aba8965acfe5ce3 +0 -0
  163. data/spec/dummy/tmp/cache/assets/development/sprockets/b629d9ad7bc881994bf98bef8b9ca2b4 +0 -0
  164. data/spec/dummy/tmp/cache/assets/development/sprockets/b935fc43bf4b4079f0d9ed97b866c3ea +0 -0
  165. data/spec/dummy/tmp/cache/assets/development/sprockets/be8776b4c225484cfec9e886ba615261 +0 -0
  166. data/spec/dummy/tmp/cache/assets/development/sprockets/c653b7516504b148d5f968578843aa98 +0 -0
  167. data/spec/dummy/tmp/cache/assets/development/sprockets/ce3725458aeb94a166e60eb5f5b2f403 +0 -0
  168. data/spec/dummy/tmp/cache/assets/development/sprockets/cfab3cc401a57096b885249b12a36654 +0 -0
  169. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  170. data/spec/dummy/tmp/cache/assets/development/sprockets/d4c415ddb0e6e126821ea6f1105f981d +0 -0
  171. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  172. data/spec/dummy/tmp/cache/assets/development/sprockets/d877f6f1f10d29f8e6b402c3ac268a19 +0 -0
  173. data/spec/dummy/tmp/cache/assets/development/sprockets/d9dec007927d3f827c5eb993f60d8733 +0 -0
  174. data/spec/dummy/tmp/cache/assets/development/sprockets/e07474169c3614b53fa0c1cd9737478e +0 -0
  175. data/spec/dummy/tmp/cache/assets/development/sprockets/e07e7b1488057009a04155c97fecdffd +0 -0
  176. data/spec/dummy/tmp/cache/assets/development/sprockets/e232eb7c837022730acbebd7ce0ad683 +0 -0
  177. data/spec/dummy/tmp/cache/assets/development/sprockets/e6dd9559b0f917d14c02e2284ad6172e +0 -0
  178. data/spec/dummy/tmp/cache/assets/development/sprockets/e6f3190c03c1c2b869d131e25d38eb7b +0 -0
  179. data/spec/dummy/tmp/cache/assets/development/sprockets/e7f7117ae74657aa576cd6344288e764 +0 -0
  180. data/spec/dummy/tmp/cache/assets/development/sprockets/e8b18160729bab32f8368174bf32a9ce +0 -0
  181. data/spec/dummy/tmp/cache/assets/development/sprockets/ed689f07991e5a86630a15be17d0e777 +0 -0
  182. data/spec/dummy/tmp/cache/assets/development/sprockets/ede50aac498bcc593c9a0fd3e477b2e5 +0 -0
  183. data/spec/dummy/tmp/cache/assets/development/sprockets/efab1ea03b3f1170b8db1ad8f8464ca6 +0 -0
  184. data/spec/dummy/tmp/cache/assets/development/sprockets/f1ded22ac375449cc064ebca2ffa3018 +0 -0
  185. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  186. data/spec/dummy/tmp/cache/assets/development/sprockets/fc071e96fdcbe300c1a450a2962c6d51 +0 -0
  187. data/spec/dummy/tmp/cache/assets/development/sprockets/fc267d2ab25b7bcd03535b5d6475070b +0 -0
  188. data/spec/dummy/tmp/cache/assets/development/sprockets/fe5cd4086fcd06a48c5870042e6d280b +0 -0
  189. data/spec/dummy/tmp/cache/assets/development/sprockets/fedb3f41ea7af9703d934048cf5b6776 +0 -0
  190. data/spec/dummy/tmp/cache/assets/development/sprockets/fff87b59365e7c8663498f6e2c82ffb9 +0 -0
  191. data/spec/dummy/tmp/cache/assets/test/sprockets/0dcafd38884d132cf7409862c5a6d5fb +0 -0
  192. data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  193. data/spec/dummy/tmp/cache/assets/test/sprockets/20d19b39dec663d9be87a891a4c0a67b +0 -0
  194. data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  195. data/spec/dummy/tmp/cache/assets/test/sprockets/305cabb43aebb247b06295976ef63fcb +0 -0
  196. data/spec/dummy/tmp/cache/assets/test/sprockets/3364f73ad7193c532a9c1d7ecea03fc5 +0 -0
  197. data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  198. data/spec/dummy/tmp/cache/assets/test/sprockets/376c6e8b4ac8bf2405dcf785b93a82d4 +0 -0
  199. data/spec/dummy/tmp/cache/assets/test/sprockets/46a1d346fcb352351e6b6726ed9513ba +0 -0
  200. data/spec/dummy/tmp/cache/assets/test/sprockets/4750cc863766de1e6e18c50bb47a3a21 +0 -0
  201. data/spec/dummy/tmp/cache/assets/test/sprockets/4a44ed0a50044da8a54755a2cc6d5ed7 +0 -0
  202. data/spec/dummy/tmp/cache/assets/test/sprockets/4ab82c3223288bd2e9f2440895e442f5 +0 -0
  203. data/spec/dummy/tmp/cache/assets/test/sprockets/50090bf2e65584155c1c5c1470e7fd18 +0 -0
  204. data/spec/dummy/tmp/cache/assets/test/sprockets/5592f7754240b57e8d3e55f3e0c9de3a +0 -0
  205. data/spec/dummy/tmp/cache/assets/test/sprockets/57b0922c1c45bf81fed35d7be172cb3b +0 -0
  206. data/spec/dummy/tmp/cache/assets/test/sprockets/5b923b5314d14dfbcf80b289b49bf5cb +0 -0
  207. data/spec/dummy/tmp/cache/assets/test/sprockets/5e3a16a7a65151928708d6db358c759b +0 -0
  208. data/spec/dummy/tmp/cache/assets/test/sprockets/5e89175bf034a9a006d9cb257dc025dc +0 -0
  209. data/spec/dummy/tmp/cache/assets/test/sprockets/5f59dd3f960783f3d471aff70dd93166 +0 -0
  210. data/spec/dummy/tmp/cache/assets/test/sprockets/6a5cbdcfa6dc2b5e180e991dea55f6f5 +0 -0
  211. data/spec/dummy/tmp/cache/assets/test/sprockets/6b199942285fcc72f17d4e30ef62820e +0 -0
  212. data/spec/dummy/tmp/cache/assets/test/sprockets/6d2058c2e924b4183c9c4c3ae85016da +0 -0
  213. data/spec/dummy/tmp/cache/assets/test/sprockets/72ba7fe3126a9ddee585f301a47f0666 +0 -0
  214. data/spec/dummy/tmp/cache/assets/test/sprockets/7761773b21e56b187ef1ef0faed07f4c +0 -0
  215. data/spec/dummy/tmp/cache/assets/test/sprockets/831efccccd36e05ad2fa9f0945ca7082 +0 -0
  216. data/spec/dummy/tmp/cache/assets/test/sprockets/89aa62e587867525e04ef35f65a406a7 +0 -0
  217. data/spec/dummy/tmp/cache/assets/test/sprockets/925489b1ca0719bbf039b596ae188766 +0 -0
  218. data/spec/dummy/tmp/cache/assets/test/sprockets/965093127c5e679a2ffe5f562d7b4662 +0 -0
  219. data/spec/dummy/tmp/cache/assets/test/sprockets/aadfbec5339af9d56a5ba29aee9e46f7 +0 -0
  220. data/spec/dummy/tmp/cache/assets/test/sprockets/af9317db2fd5899ffd150362c752ca6e +0 -0
  221. data/spec/dummy/tmp/cache/assets/test/sprockets/b13cb66c8a1ae4e7639bc79e237e6768 +0 -0
  222. data/spec/dummy/tmp/cache/assets/test/sprockets/b629d9ad7bc881994bf98bef8b9ca2b4 +0 -0
  223. data/spec/dummy/tmp/cache/assets/test/sprockets/b935fc43bf4b4079f0d9ed97b866c3ea +0 -0
  224. data/spec/dummy/tmp/cache/assets/test/sprockets/c653b7516504b148d5f968578843aa98 +0 -0
  225. data/spec/dummy/tmp/cache/assets/test/sprockets/ce3725458aeb94a166e60eb5f5b2f403 +0 -0
  226. data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  227. data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  228. data/spec/dummy/tmp/cache/assets/test/sprockets/d877f6f1f10d29f8e6b402c3ac268a19 +0 -0
  229. data/spec/dummy/tmp/cache/assets/test/sprockets/e07474169c3614b53fa0c1cd9737478e +0 -0
  230. data/spec/dummy/tmp/cache/assets/test/sprockets/e07e7b1488057009a04155c97fecdffd +0 -0
  231. data/spec/dummy/tmp/cache/assets/test/sprockets/e232eb7c837022730acbebd7ce0ad683 +0 -0
  232. data/spec/dummy/tmp/cache/assets/test/sprockets/e8b18160729bab32f8368174bf32a9ce +0 -0
  233. data/spec/dummy/tmp/cache/assets/test/sprockets/ed689f07991e5a86630a15be17d0e777 +0 -0
  234. data/spec/dummy/tmp/cache/assets/test/sprockets/efab1ea03b3f1170b8db1ad8f8464ca6 +0 -0
  235. data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  236. data/spec/dummy/tmp/cache/assets/test/sprockets/fedb3f41ea7af9703d934048cf5b6776 +0 -0
  237. data/spec/factories/factory.rb +13 -0
  238. data/spec/helpers/form_helper_spec.rb +17 -0
  239. data/spec/requests/date_picker_spec.rb +113 -0
  240. data/spec/requests/datetime_picker_spec.rb +61 -0
  241. data/spec/requests/microdata_options_spec.rb +60 -0
  242. data/spec/requests/override_defaults_spec.rb +145 -0
  243. data/spec/requests/time_picker_spec.rb +134 -0
  244. data/spec/spec_helper.rb +46 -0
  245. metadata +628 -0
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Datetime Picker", :type => :request do
4
+ describe "Create New", :js => true do
5
+ before(:each) do
6
+ visit new_schedule_path
7
+ end
8
+
9
+ it "is displayed when datetime field receives focus and hidden
10
+ when datetime field loses focus" do
11
+ find("#apocalypse").click
12
+ page.should have_selector("#ui-datepicker-div", visible: true)
13
+ find("#schedule_name").click
14
+ sleep 1
15
+ page.should have_no_selector("#ui-datepicker-div", visible: true)
16
+ end
17
+
18
+ it "fills in the datetime field correctly and disappears when 'Done' button clicked" do
19
+ find("#apocalypse").click
20
+ curr_date = Time.now
21
+ click_link("1")
22
+ find("div.ui_tpicker_hour_slider").find("span.ui-slider-handle").drag_by(62, 0) #1 pm
23
+ find("div.ui_tpicker_minute_slider").find("span.ui-slider-handle").drag_by(27, 0) #15 min
24
+ find("button.ui-datepicker-close").click
25
+ find("#apocalypse").value
26
+ .should eq "#{'%02i' % curr_date.month}/01/#{curr_date.year} 13:15"
27
+ end
28
+
29
+ describe "Alternate Datetime formats" do
30
+ it "shows datetime with seconds" do
31
+ find("#epoch").click
32
+ curr_date = Time.now
33
+ click_link("1")
34
+ find("div.ui_tpicker_hour_slider").find("span.ui-slider-handle").drag_by(62, 0) #1 pm
35
+ find("div.ui_tpicker_minute_slider").find("span.ui-slider-handle").drag_by(27, 0) #15 min
36
+ find("div.ui_tpicker_second_slider").find("span.ui-slider-handle").drag_by(27, 0) #15 sec
37
+ find("button.ui-datepicker-close").click
38
+ find("#epoch").value
39
+ .should eq "#{curr_date.month}/1/#{curr_date.year} 13:15:15"
40
+ click_button("Create Schedule")
41
+ #binding.pry
42
+ find("#epoch").value
43
+ .should eq "#{curr_date.month}/1/#{curr_date.year} 13:15:15"
44
+ end
45
+ end
46
+
47
+ end
48
+
49
+ describe "Update Existing", :js => true do
50
+ before(:each) do
51
+ @curr_date = Time.now
52
+ @schedule = FactoryGirl.create(:schedule, apocalypse: @curr_date.to_datetime)
53
+ visit edit_schedule_path(@schedule)
54
+ end
55
+
56
+ it "displays current value in format specified in locale file" do
57
+ find("#apocalypse").value.should eq I18n.localize(@curr_date.to_datetime, format: :datetime)
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Picker Microdata Customization", :type => :request do
4
+ before(:each) do
5
+ visit '/custom_schedules/new'
6
+ end
7
+
8
+ describe "doesn't affect certain existing features" do
9
+ describe "still allows microdata to be passed through", :js => true do
10
+ it "has the data-my-data attribute" do
11
+ expect(find("input#suppertime")['data-my-data']).to match("true")
12
+ end
13
+ end
14
+ describe "allows css classes to be passed through while adding the necessary picker class" do
15
+ it "has classes 'css_class' and 'my_class'" do
16
+ expect(find("input#suppertime")['class']).to match("css_class")
17
+ expect(find("input#suppertime")['class']).to match("my_class")
18
+ end
19
+ end
20
+ end
21
+
22
+
23
+ describe "Date Picker", :js => true do
24
+ before(:each) do
25
+ find("input#birthday").click
26
+ end
27
+ it "allows us to display the panel containing the Today and Done buttons" do
28
+ page.should have_selector("button.ui-datepicker-current", visible: true)
29
+ page.should have_selector("button.ui-datepicker-close", visible: true)
30
+ end
31
+ end
32
+
33
+ describe "Time Picker", :js => true do
34
+ before(:each) do
35
+ find("input#lunchtime").click
36
+ end
37
+ describe "add or change text" do
38
+ it "allows us to specify the text of the 'Now' button" do
39
+ find("button.ui-datepicker-current").text.should eq "Current"
40
+ end
41
+ it "allows us to set the text on the Done button" do
42
+ find("button.ui-datepicker-close").text.should eq "Set"
43
+ end
44
+ it "allows us to add a suffix after the time displayed" do
45
+ find("dd.ui_tpicker_time").text.should match(/.*\so\'clock/)
46
+ end
47
+ end
48
+ end
49
+
50
+ describe "Datetime Picker", :js => true do
51
+ before(:each) do
52
+ find("input#apocalypse").click
53
+ end
54
+ it "allows us to add a separator between the date and time in the input value" do
55
+ find("a", text: "17").click
56
+ find("input#apocalypse").value.should match(/\d\d\/\d\d\/\d{4} @ \d\d:\d\d/)
57
+ end
58
+ end
59
+
60
+ end
@@ -0,0 +1,145 @@
1
+ require 'spec_helper'
2
+
3
+ #Usage: rspec spec --tag @defaults --order default
4
+ #To run all other specs: rspec spec --tag ~@defaults
5
+
6
+ RSpec.describe "Override Defaults", :type => :request, :js => true, defaults: true do
7
+ describe "time grid intervals" do
8
+ before(:each) do
9
+ visit '/custom_schedules/new'
10
+ end
11
+ it "shows Minute grid with intervals of 15" do
12
+ find("input#lunchtime").click
13
+ page.should have_selector(:xpath, "//dd[@class='ui_tpicker_minute']//table[@class='ui-tpicker-grid-label']//td[text()='15']")
14
+ page.should have_selector(:xpath, "//dd[@class='ui_tpicker_minute']//table[@class='ui-tpicker-grid-label']//td[text()='30']")
15
+ page.should have_selector(:xpath, "//dd[@class='ui_tpicker_minute']//table[@class='ui-tpicker-grid-label']//td[text()='45']")
16
+ end
17
+ it "overrides the default value we already overrode when explicitly passed to tag" do
18
+ find("input#suppertime").click
19
+ page.should have_selector(:xpath, "//dd[@class='ui_tpicker_minute']//table[@class='ui-tpicker-grid-label']//td[text()='20']")
20
+ page.should have_selector(:xpath, "//dd[@class='ui_tpicker_minute']//table[@class='ui-tpicker-grid-label']//td[text()='40']")
21
+ end
22
+ it "doesn't show any grid numbers when the option is passed an empty string" do
23
+ find("input#alarm_setting").click
24
+ page.should have_selector(:xpath, "//dd[@class='ui_tpicker_hour']//table[@class='ui-tpicker-grid-label']//td[text()='16']")
25
+ page.should have_selector(:xpath, "//dd[@class='ui_tpicker_minute']//table[@class='ui-tpicker-grid-label']//td[text()='30']")
26
+ page.should_not have_selector(:xpath, "//dd[@class='ui_tpicker_second']//table[@class='ui-tpicker-grid-label']//td")
27
+ end
28
+ end
29
+
30
+ describe "date and time format factory defaults" do
31
+ describe "date format" do
32
+
33
+ describe "HotDateRails default date" do
34
+ before(:each) do
35
+ visit new_schedule_path
36
+ end
37
+ it "fills in the date field with date formatted like 01/01/2001" do
38
+ curr_date = Time.now
39
+ find("#birthday").click
40
+ find("select.ui-datepicker-month").select("Jan")
41
+ click_link("1")
42
+ sleep 1
43
+ find("#birthday").value.should eq "01/01/#{curr_date.year}"
44
+ end
45
+ end
46
+
47
+ end
48
+ describe "time Format" do
49
+ describe "HotDateRails time default" do
50
+ before(:each) do
51
+ visit new_schedule_path
52
+ end
53
+ it "fills in the time field with time formatted like 23:59 " do
54
+ find("#lunchtime").click
55
+ find("div.ui_tpicker_hour_slider").find("span.ui-slider-handle").drag_by(62, 0)
56
+ find("div.ui_tpicker_minute_slider").find("span.ui-slider-handle").drag_by(27, 0)
57
+ find("button.ui-datepicker-close").click
58
+ find("#lunchtime").value.should eq "13:15"
59
+ end
60
+ end
61
+ end
62
+ describe "datetime Format" do
63
+ describe "HotDateRails datetime default" do
64
+ before(:each) do
65
+ visit new_schedule_path
66
+ end
67
+ it "fills in the datetime field with datetime formatted like 01/01/2001 23:59 " do
68
+ find("#apocalypse").click
69
+ click_link("1")
70
+ find("div.ui_tpicker_hour_slider").find("span.ui-slider-handle").drag_by(62, 0)
71
+ find("div.ui_tpicker_minute_slider").find("span.ui-slider-handle").drag_by(27, 0)
72
+ find("button.ui-datepicker-close").click
73
+ sleep 1
74
+ find("#apocalypse").value.should match(/\d\d\/\d\d\/\d{4} \d\d:\d\d/)
75
+ end
76
+ end
77
+
78
+ end
79
+ end
80
+
81
+ describe "override date and time format factory defaults" do
82
+ describe "date format" do
83
+ describe "overridden default time" do
84
+ before(:each) do
85
+ HotDateRails.config do |c|
86
+ c.date_format = "MM d, yy"
87
+ end
88
+ #defaults are usually overridden in spec/dummy/config/environment.rb
89
+ visit '/custom_schedules/new'
90
+ end
91
+ it "fills in the date field with date formatted like 'January 1, 2010' " do
92
+ find("#christmas").click
93
+ find("select.ui-datepicker-month").select("Jan")
94
+ click_link("1")
95
+ sleep 1
96
+ find("#christmas").value.should match(/\w*\s\d{1,2},\s\d{4}/)
97
+ end
98
+ end
99
+ end
100
+
101
+
102
+ describe "time Format" do
103
+ describe "overridden default time" do
104
+ before(:each) do
105
+ HotDateRails.config do |c|
106
+ c.time_format = "h:mm tt"
107
+ end
108
+ visit '/custom_schedules/new'
109
+ end
110
+ it "fills in the time field with time formatted like '9:35 am' " do
111
+ find("#beer_oclock").click
112
+ find("div.ui_tpicker_hour_slider").find("span.ui-slider-handle").drag_by(62, 0)
113
+ find("div.ui_tpicker_minute_slider").find("span.ui-slider-handle").drag_by(27, 0)
114
+ find("button.ui-datepicker-close").click
115
+ find("#beer_oclock").value.should eq "1:15 pm"
116
+ end
117
+ end
118
+ end
119
+
120
+ describe "datetime Format" do
121
+ describe "overridden default datetime" do
122
+ before(:each) do
123
+ HotDateRails.config do |c|
124
+ c.date_format = "MM d, yy"
125
+ c.time_format = "h:mm tt"
126
+ end
127
+ visit '/custom_schedules/new'
128
+ end
129
+ it "fills in the datetime field with datetime formatted like January 1, 2001 1:59 pm " do
130
+ find("#epoch").click
131
+ click_link("1")
132
+ find("div.ui_tpicker_hour_slider").find("span.ui-slider-handle").drag_by(62, 0)
133
+ find("div.ui_tpicker_minute_slider").find("span.ui-slider-handle").drag_by(27, 0)
134
+ find("button.ui-datepicker-close").click
135
+ sleep 1
136
+ find("#epoch").value.should match(/\w*\s\d{1,2},\s\d{4} 1:15 pm/)
137
+ end
138
+ end
139
+ end
140
+ end
141
+
142
+ end
143
+
144
+
145
+
@@ -0,0 +1,134 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Time Picker", :type => :request do
4
+ describe "Create New", :js => true do
5
+ before(:each) do
6
+ visit new_schedule_path
7
+ end
8
+ describe "Standard format" do
9
+ it "is displayed when time field receives focus and is hidden
10
+ when time field loses focus" do
11
+ find("#lunchtime").click
12
+ page.should have_selector("#ui-datepicker-div", visible: true)
13
+ find("#schedule_name").click
14
+ sleep 1
15
+ page.should have_no_selector("#ui-datepicker-div", visible: true)
16
+ end
17
+
18
+ it "fills in the time field correctly and disappears when 'Done' button clicked" do
19
+ find("#lunchtime").click
20
+ find("div.ui_tpicker_hour_slider").find("span.ui-slider-handle").drag_by(62, 0) #1 pm
21
+ find("div.ui_tpicker_minute_slider").find("span.ui-slider-handle").drag_by(27, 0) #15 min
22
+ find("button.ui-datepicker-close").click
23
+ find("#lunchtime").value.should eq "13:15"
24
+ end
25
+ end
26
+
27
+
28
+ describe "Optional formats" do
29
+ it "displays seconds when specified" do
30
+ find("#alarm_setting").click
31
+ within("div.ui_tpicker_second_slider", visible: true) do
32
+ page.should have_selector("span.ui-slider-handle") #seconds slider exists
33
+ end
34
+ end
35
+
36
+ it "displays like '12:00 am' when specified" do
37
+ find("#suppertime").click
38
+ find("dd.ui_tpicker_time").text.should match('12:00 am')
39
+ end
40
+
41
+ describe "updated time is properly persisted in the database" do
42
+ it "updates data prpperly when lowercase meridian is specified" do
43
+ find("#suppertime").click
44
+ find("div.ui_tpicker_hour_slider").find("span.ui-slider-handle").drag_by(62, 0) #1 pm
45
+ find("div.ui_tpicker_minute_slider").find("span.ui-slider-handle").drag_by(27, 0) #15 min
46
+ find("button.ui-datepicker-close").click
47
+ click_button("Create Schedule")
48
+ sleep 1
49
+ find("input#suppertime").value.should match('1:15 pm')
50
+ end
51
+ it "updates data prpperly when uppercase meridian is specified" do
52
+ find("#beer_oclock").click
53
+ find("div.ui_tpicker_hour_slider").find("span.ui-slider-handle").drag_by(62, 0) #1 pm
54
+ find("div.ui_tpicker_minute_slider").find("span.ui-slider-handle").drag_by(27, 0) #15 min
55
+ find("button.ui-datepicker-close").click
56
+ click_button("Create Schedule")
57
+ sleep 1
58
+ find("input#beer_oclock").value.should match('1:15 PM')
59
+ end
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+ describe "Update Existing", :js => true do
66
+ before(:each) do
67
+ @curr_date = Time.now
68
+ @schedule = FactoryGirl.create(:schedule, lunchtime: @curr_date.to_time.strftime("%H:%M"),
69
+ alarm_setting: @curr_date.to_time.strftime("%H:%M:%S"),
70
+ suppertime: @curr_date.to_time.strftime("%H:%M"), beer_oclock: @curr_date.to_time.strftime("%H:%M"))
71
+ visit edit_schedule_path(@schedule)
72
+ end
73
+
74
+ describe "displays current value in format specified in locale file", :js => false do
75
+ it "shows default time format" do
76
+ find("#lunchtime").value.should eq I18n.localize(@curr_date.to_time)
77
+ end
78
+ it "shows time with seconds when custom locale_format specified" do
79
+ find("#alarm_setting").value.should eq I18n.localize(@curr_date.to_time, format: :w_seconds)
80
+ end
81
+ it "shows time with 12-hour clock and lower case meridian" do
82
+ find("#suppertime").value.should eq I18n.localize(@curr_date.to_time, format: :lc_merid).strip
83
+ end
84
+ it "shows time with 12-hour clock and upper case meridian" do
85
+ find("#beer_oclock").value.should eq I18n.localize(@curr_date.to_time, format: :uc_merid).strip
86
+ end
87
+ end
88
+ describe "time value is correctly indicated on the timepicker widget" do
89
+ it "displays default time format" do
90
+ find("#lunchtime").click
91
+ find("dd.ui_tpicker_time").text.should match(I18n.localize(@curr_date.to_time))
92
+ end
93
+ it "displays time with seconds format" do
94
+ find("#alarm_setting").click
95
+ find("dd.ui_tpicker_time").text.should match(I18n.localize(@curr_date.to_time, format: :w_seconds))
96
+ end
97
+ describe "12-hour clock and lower case meridian format" do
98
+ it "displays single-digit hour" do
99
+ date_obj = DateTime.strptime("1:45 am", "%H:%M %P")
100
+ @schedule = FactoryGirl.create(:schedule, suppertime: date_obj)
101
+ visit edit_schedule_path(@schedule)
102
+ find("#suppertime").click
103
+ find("dd.ui_tpicker_time").text.should match(I18n.localize(date_obj, format: :lc_merid))
104
+ end
105
+ it "displays double-digit hour" do
106
+ date_obj = DateTime.strptime("11:47 pm", "%H:%M %P")
107
+ @schedule = FactoryGirl.create(:schedule, suppertime: date_obj)
108
+ visit edit_schedule_path(@schedule)
109
+ find("#suppertime").click
110
+ find("dd.ui_tpicker_time").text.should match(I18n.localize(date_obj, format: :lc_merid))
111
+ end
112
+ end
113
+
114
+ describe "12-hour clock and upper case meridian format" do
115
+ it "displays single-digit hour" do
116
+ date_obj = DateTime.strptime("1:45 am", "%H:%M %p")
117
+ @schedule = FactoryGirl.create(:schedule, beer_oclock: date_obj)
118
+ visit edit_schedule_path(@schedule)
119
+ find("#beer_oclock").click
120
+ find("dd.ui_tpicker_time").text.should match(I18n.localize(date_obj, format: :uc_merid))
121
+ end
122
+ it "displays double-digit hour" do
123
+ date_obj = DateTime.strptime("11:47 pm", "%H:%M %p")
124
+ @schedule = FactoryGirl.create(:schedule, beer_oclock: date_obj)
125
+ visit edit_schedule_path(@schedule)
126
+ find("#beer_oclock").click
127
+ find("dd.ui_tpicker_time").text.should match(I18n.localize(date_obj, format: :uc_merid))
128
+ end
129
+ end
130
+
131
+ end
132
+
133
+ end
134
+ end
@@ -0,0 +1,46 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
3
+ require 'rspec/rails'
4
+ #require 'rspec/autorun'
5
+ require 'factory_girl_rails'
6
+ require 'database_cleaner'
7
+ require 'capybara/rails'
8
+ require 'capybara/rspec'
9
+
10
+ Rails.backtrace_cleaner.remove_silencers!
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ RSpec.configure do |config|
16
+ config.mock_with :rspec
17
+ config.use_transactional_fixtures = false
18
+ config.infer_base_class_for_anonymous_controllers = false
19
+ config.order = "random"
20
+ config.include Capybara::DSL
21
+ config.expect_with :rspec do |c|
22
+ c.syntax = [:should, :expect]
23
+ end
24
+ config.color = true
25
+ config.use_transactional_fixtures = false
26
+ config.before(:each) do
27
+ DatabaseCleaner.strategy = :transaction
28
+ DatabaseCleaner.clean_with(:truncation)
29
+ FactoryGirl.reload
30
+ end
31
+ end
32
+
33
+
34
+ #For testing jQuery UI slider widget
35
+ module CapybaraExtension
36
+ def drag_by(right_by, down_by)
37
+ base.drag_by(right_by, down_by)
38
+ end
39
+ end
40
+ module CapybaraSeleniumExtension
41
+ def drag_by(right_by, down_by)
42
+ driver.browser.action.drag_and_drop_by(native, right_by, down_by).perform
43
+ end
44
+ end
45
+ ::Capybara::Selenium::Node.send :include, CapybaraSeleniumExtension
46
+ ::Capybara::Node::Element.send :include, CapybaraExtension