hot_date_rails 1.0.0

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