koalagator 2.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 (995) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE.txt +23 -0
  3. data/README.md +57 -0
  4. data/Rakefile +15 -0
  5. data/app/assets/config/calagator/manifest.js +3 -0
  6. data/app/assets/images/confused-alligator-sm.png +0 -0
  7. data/app/assets/images/disk.png +0 -0
  8. data/app/assets/images/edit.png +0 -0
  9. data/app/assets/images/external_sites/epdx.png +0 -0
  10. data/app/assets/images/external_sites/external.gif +0 -0
  11. data/app/assets/images/external_sites/facebook.png +0 -0
  12. data/app/assets/images/external_sites/foursquare.png +0 -0
  13. data/app/assets/images/external_sites/gowalla.png +0 -0
  14. data/app/assets/images/external_sites/lanyrd.png +0 -0
  15. data/app/assets/images/external_sites/meetup.png +0 -0
  16. data/app/assets/images/external_sites/plancast.png +0 -0
  17. data/app/assets/images/external_sites/shizzow.png +0 -0
  18. data/app/assets/images/external_sites/upcoming.png +0 -0
  19. data/app/assets/images/external_sites/yelp.png +0 -0
  20. data/app/assets/images/feed.png +0 -0
  21. data/app/assets/images/heart.png +0 -0
  22. data/app/assets/images/icon_ical.gif +0 -0
  23. data/app/assets/images/information.png +0 -0
  24. data/app/assets/images/nav_marker.gif +0 -0
  25. data/app/assets/images/nav_marker.png +0 -0
  26. data/app/assets/images/plus.png +0 -0
  27. data/app/assets/images/redx.png +0 -0
  28. data/app/assets/images/site-icon.png +0 -0
  29. data/app/assets/images/spinner.gif +0 -0
  30. data/app/assets/images/star.png +0 -0
  31. data/app/assets/images/subnav_marker.gif +0 -0
  32. data/app/assets/images/subnav_marker.png +0 -0
  33. data/app/assets/images/tag_blue.png +0 -0
  34. data/app/assets/images/tag_icons/angular.png +0 -0
  35. data/app/assets/images/tag_icons/beer.png +0 -0
  36. data/app/assets/images/tag_icons/bitcoin.png +0 -0
  37. data/app/assets/images/tag_icons/free.png +0 -0
  38. data/app/assets/images/tag_icons/golang.png +0 -0
  39. data/app/assets/images/tag_icons/html.png +0 -0
  40. data/app/assets/images/tag_icons/javascript.png +0 -0
  41. data/app/assets/images/tag_icons/linux.png +0 -0
  42. data/app/assets/images/tag_icons/php.png +0 -0
  43. data/app/assets/images/tag_icons/pizza.png +0 -0
  44. data/app/assets/images/tag_icons/python.png +0 -0
  45. data/app/assets/images/tag_icons/rails.png +0 -0
  46. data/app/assets/images/tag_icons/ruby.png +0 -0
  47. data/app/assets/images/tag_icons/rustlang.png +0 -0
  48. data/app/assets/images/tag_icons/sass.png +0 -0
  49. data/app/assets/images/tag_icons/swift.png +0 -0
  50. data/app/assets/images/transmit_blue.png +0 -0
  51. data/app/assets/images/weekday_background.gif +0 -0
  52. data/app/assets/javascripts/calagator/forms.js +63 -0
  53. data/app/assets/javascripts/calagator/mapping.js +33 -0
  54. data/app/assets/javascripts/calagator.js +18 -0
  55. data/app/assets/stylesheets/calagator/changes.scss +45 -0
  56. data/app/assets/stylesheets/calagator/errors.css +118 -0
  57. data/app/assets/stylesheets/calagator/forms.scss +150 -0
  58. data/app/assets/stylesheets/calagator/index.scss +23 -0
  59. data/app/assets/stylesheets/calagator/layout.scss +708 -0
  60. data/app/assets/stylesheets/calagator/mobile.scss +280 -0
  61. data/app/assets/stylesheets/calagator/reset.scss +40 -0
  62. data/app/assets/stylesheets/calagator/typography.scss +224 -0
  63. data/app/assets/stylesheets/calagator/utils.scss +14 -0
  64. data/app/assets/stylesheets/calagator/variables.scss +21 -0
  65. data/app/controllers/calagator/admin_controller.rb +38 -0
  66. data/app/controllers/calagator/application_controller.rb +96 -0
  67. data/app/controllers/calagator/events_controller.rb +142 -0
  68. data/app/controllers/calagator/site_controller.rb +37 -0
  69. data/app/controllers/calagator/sources_controller.rb +95 -0
  70. data/app/controllers/calagator/venues_controller.rb +179 -0
  71. data/app/controllers/calagator/versions_controller.rb +20 -0
  72. data/app/helpers/calagator/application_helper.rb +76 -0
  73. data/app/helpers/calagator/events_helper.rb +190 -0
  74. data/app/helpers/calagator/google_event_export_helper.rb +65 -0
  75. data/app/helpers/calagator/mapping_helper.rb +114 -0
  76. data/app/helpers/calagator/sources_helper.rb +10 -0
  77. data/app/helpers/calagator/tags_helper.rb +68 -0
  78. data/app/helpers/calagator/time_range_helper.rb +172 -0
  79. data/app/models/calagator/application_record.rb +5 -0
  80. data/app/models/calagator/event/browse.rb +96 -0
  81. data/app/models/calagator/event/cloner.rb +40 -0
  82. data/app/models/calagator/event/ical_renderer.rb +162 -0
  83. data/app/models/calagator/event/overview.rb +45 -0
  84. data/app/models/calagator/event/saver.rb +73 -0
  85. data/app/models/calagator/event/search.rb +80 -0
  86. data/app/models/calagator/event/search_engine/apache_sunspot.rb +106 -0
  87. data/app/models/calagator/event/search_engine/sql.rb +102 -0
  88. data/app/models/calagator/event/search_engine.rb +28 -0
  89. data/app/models/calagator/event.rb +186 -0
  90. data/app/models/calagator/source/importer.rb +46 -0
  91. data/app/models/calagator/source/parser/hcal.rb +107 -0
  92. data/app/models/calagator/source/parser/http_authentication_required_error.rb +8 -0
  93. data/app/models/calagator/source/parser/ical.rb +101 -0
  94. data/app/models/calagator/source/parser/not_found.rb +11 -0
  95. data/app/models/calagator/source/parser.rb +119 -0
  96. data/app/models/calagator/source.rb +80 -0
  97. data/app/models/calagator/venue/geocoder.rb +62 -0
  98. data/app/models/calagator/venue/search.rb +75 -0
  99. data/app/models/calagator/venue/search_engine/apache_sunspot.rb +85 -0
  100. data/app/models/calagator/venue/search_engine/sql.rb +62 -0
  101. data/app/models/calagator/venue/search_engine.rb +24 -0
  102. data/app/models/calagator/venue.rb +116 -0
  103. data/app/observers/calagator/cache_observer.rb +37 -0
  104. data/app/views/calagator/admin/events.html.erb +37 -0
  105. data/app/views/calagator/admin/index.html.erb +8 -0
  106. data/app/views/calagator/events/_feed_item.html.erb +62 -0
  107. data/app/views/calagator/events/_form.html.erb +73 -0
  108. data/app/views/calagator/events/_gcal_reminder.html.erb +1 -0
  109. data/app/views/calagator/events/_hcal.html.erb +41 -0
  110. data/app/views/calagator/events/_item.html.erb +105 -0
  111. data/app/views/calagator/events/_list.html.erb +30 -0
  112. data/app/views/calagator/events/_list_item.html.erb +37 -0
  113. data/app/views/calagator/events/_search_section.html.erb +15 -0
  114. data/app/views/calagator/events/_subnav.html.erb +13 -0
  115. data/app/views/calagator/events/_table.html.erb +74 -0
  116. data/app/views/calagator/events/duplicates.html.erb +58 -0
  117. data/app/views/calagator/events/edit.html.erb +3 -0
  118. data/app/views/calagator/events/index.atom.builder +36 -0
  119. data/app/views/calagator/events/index.html.erb +62 -0
  120. data/app/views/calagator/events/index.kml.erb +20 -0
  121. data/app/views/calagator/events/new.html.erb +7 -0
  122. data/app/views/calagator/events/search.html.erb +23 -0
  123. data/app/views/calagator/events/show.html.erb +57 -0
  124. data/app/views/calagator/site/_appropriateness_message.html.erb +15 -0
  125. data/app/views/calagator/site/_description.html.erb +8 -0
  126. data/app/views/calagator/site/_sidebar_menu.html.erb +13 -0
  127. data/app/views/calagator/site/about.html.erb +12 -0
  128. data/app/views/calagator/site/defunct.html.erb +15 -0
  129. data/app/views/calagator/site/export.html.erb +4 -0
  130. data/app/views/calagator/site/index.html.erb +39 -0
  131. data/app/views/calagator/site/opensearch.xml.builder +10 -0
  132. data/app/views/calagator/sources/_subnav.html.erb +0 -0
  133. data/app/views/calagator/sources/edit.html.erb +11 -0
  134. data/app/views/calagator/sources/import.html.erb +10 -0
  135. data/app/views/calagator/sources/index.html.erb +22 -0
  136. data/app/views/calagator/sources/new.html.erb +26 -0
  137. data/app/views/calagator/sources/show.html.erb +16 -0
  138. data/app/views/calagator/venues/_form.html.erb +64 -0
  139. data/app/views/calagator/venues/_subnav.html.erb +10 -0
  140. data/app/views/calagator/venues/duplicates.html.erb +65 -0
  141. data/app/views/calagator/venues/edit.html.erb +3 -0
  142. data/app/views/calagator/venues/index.html.erb +91 -0
  143. data/app/views/calagator/venues/index.kml.erb +15 -0
  144. data/app/views/calagator/venues/map.html.erb +4 -0
  145. data/app/views/calagator/venues/new.html.erb +5 -0
  146. data/app/views/calagator/venues/show.html.erb +111 -0
  147. data/app/views/calagator/versions/_chooser.html.erb +26 -0
  148. data/app/views/calagator/versions/_edit_with_chooser.html.erb +16 -0
  149. data/app/views/layouts/calagator/_after_footer.html.erb +2 -0
  150. data/app/views/layouts/calagator/_content.html.erb +6 -0
  151. data/app/views/layouts/calagator/_footer.html.erb +8 -0
  152. data/app/views/layouts/calagator/_global_search.html.erb +11 -0
  153. data/app/views/layouts/calagator/_header.html.erb +20 -0
  154. data/app/views/layouts/calagator/application.html.erb +55 -0
  155. data/bin/calagator +41 -0
  156. data/config/initializers/dates.rb +9 -0
  157. data/config/initializers/formtastic.rb +96 -0
  158. data/config/initializers/ics_renderer.rb +7 -0
  159. data/config/initializers/machine_tag_extensions.rb +48 -0
  160. data/config/initializers/mime_types.rb +11 -0
  161. data/config/initializers/observers.rb +3 -0
  162. data/config/initializers/paper_trail_manager.rb +5 -0
  163. data/config/initializers/recaptcha.rb +10 -0
  164. data/config/initializers/time_get_zone.rb +10 -0
  165. data/config/locales/en.yml +5 -0
  166. data/config/routes.rb +58 -0
  167. data/db/migrate/001_create_events.rb +19 -0
  168. data/db/migrate/002_create_venues.rb +18 -0
  169. data/db/migrate/003_create_sources.rb +18 -0
  170. data/db/migrate/004_add_detailed_fields_to_venue.rb +21 -0
  171. data/db/migrate/005_add_end_time_to_events.rb +11 -0
  172. data/db/migrate/006_add_source_id_to_events.rb +11 -0
  173. data/db/migrate/008_add_source_id_to_venues.rb +11 -0
  174. data/db/migrate/009_add_duplicate_of_column_to_venues.rb +11 -0
  175. data/db/migrate/010_add_duplicate_of_column_to_events.rb +11 -0
  176. data/db/migrate/011_change_lat_long_type.rb +14 -0
  177. data/db/migrate/012_add_source_reimport.rb +11 -0
  178. data/db/migrate/013_change_end_time_to_duration.rb +13 -0
  179. data/db/migrate/014_remove_format_type_from_source.rb +11 -0
  180. data/db/migrate/015_create_updates.rb +17 -0
  181. data/db/migrate/016_remove_next_update_from_source.rb +11 -0
  182. data/db/migrate/20080705163959_change_duration_to_end_time.rb +13 -0
  183. data/db/migrate/20080705164959_create_tags_and_taggings.rb +27 -0
  184. data/db/migrate/20081011181519_create_versioned_events.rb +27 -0
  185. data/db/migrate/20081011193124_create_versioned_venues.rb +34 -0
  186. data/db/migrate/20081115190515_add_rrule_to_events.rb +17 -0
  187. data/db/migrate/20090912082129_create_versions.rb +20 -0
  188. data/db/migrate/20110219205156_add_closed_flag_to_venues.rb +11 -0
  189. data/db/migrate/20110220001008_add_wifi_flag_to_venues.rb +11 -0
  190. data/db/migrate/20110220011427_add_access_notes_to_venues.rb +11 -0
  191. data/db/migrate/20110220031117_add_events_count_to_venues.rb +11 -0
  192. data/db/migrate/20110604174521_add_venue_details_to_events.rb +11 -0
  193. data/db/migrate/20110717231316_acts_as_taggable_on_migration.rb +52 -0
  194. data/db/migrate/20120709092821_cleanup.rb +14 -0
  195. data/db/migrate/20120831234448_specify_venues_latitude_and_longitude_precision.rb +13 -0
  196. data/db/migrate/20150206085809_remove_updates.rb +15 -0
  197. data/db/migrate/20150207231355_add_locked_status_to_events.rb +7 -0
  198. data/db/migrate/20150407014752_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +16 -0
  199. data/db/migrate/20150407014754_change_collation_for_tag_names.acts_as_taggable_on_engine.rb +11 -0
  200. data/db/migrate/20150702171204_drop_reimport_column_from_sources.rb +11 -0
  201. data/db/migrate/20200327040656_add_missing_indexes_on_taggings.acts_as_taggable_on_engine.rb +25 -0
  202. data/db/seeds.rb +73 -0
  203. data/lib/active_model/sequential_validator.rb +12 -0
  204. data/lib/calagator/decode_html_entities_hack.rb +33 -0
  205. data/lib/calagator/denylist_validator.rb +73 -0
  206. data/lib/calagator/duplicate_checking/controller_actions.rb +38 -0
  207. data/lib/calagator/duplicate_checking/duplicate_finder.rb +95 -0
  208. data/lib/calagator/duplicate_checking/duplicate_squasher.rb +80 -0
  209. data/lib/calagator/duplicate_checking.rb +151 -0
  210. data/lib/calagator/engine.rb +26 -0
  211. data/lib/calagator/machine_tag.rb +90 -0
  212. data/lib/calagator/strip_whitespace.rb +21 -0
  213. data/lib/calagator/url_prefixer.rb +11 -0
  214. data/lib/calagator/vcalendar.rb +131 -0
  215. data/lib/calagator/version.rb +5 -0
  216. data/lib/calagator.rb +72 -0
  217. data/lib/generators/calagator/install_generator.rb +53 -0
  218. data/lib/generators/calagator/templates/config/initializers/01_calagator.rb +90 -0
  219. data/lib/generators/calagator/templates/config/initializers/02_geokit.rb +111 -0
  220. data/lib/generators/calagator/templates/config/initializers/03_recaptcha.rb +10 -0
  221. data/lib/tasks/auto_annotate_models.rake +59 -0
  222. data/lib/tasks/spec_db.rake +49 -0
  223. data/lib/tasks/sunspot_reindex_calagator.rake +20 -0
  224. data/lib/tasks/sunspot_solr_restart_enhancements.rake +20 -0
  225. data/lib/tasks/update_counter_caches.rake +15 -0
  226. data/lib/templates/erb/scaffold/_form.html.erb +11 -0
  227. data/lib/theme_reader.rb +23 -0
  228. data/lib/wait_for_solr.rb +26 -0
  229. data/rails_template.rb +58 -0
  230. data/spec/controllers/calagator/application_controller_spec.rb +71 -0
  231. data/spec/controllers/calagator/events_controller_spec.rb +785 -0
  232. data/spec/controllers/calagator/site_controller_spec.rb +59 -0
  233. data/spec/controllers/calagator/sources_controller_spec.rb +422 -0
  234. data/spec/controllers/calagator/venues_controller_spec.rb +302 -0
  235. data/spec/controllers/calagator/versions_controller_spec.rb +82 -0
  236. data/spec/controllers/squash_many_duplicates_examples.rb +51 -0
  237. data/spec/factories.rb +69 -0
  238. data/spec/features/add_event_spec.rb +108 -0
  239. data/spec/features/add_venue_spec.rb +34 -0
  240. data/spec/features/admin_auth_spec.rb +23 -0
  241. data/spec/features/admin_lock_event_spec.rb +44 -0
  242. data/spec/features/admin_search_event_spec.rb +35 -0
  243. data/spec/features/filter_venues_spec.rb +15 -0
  244. data/spec/features/import_events_from_feed_spec.rb +33 -0
  245. data/spec/features/jsonp_output_spec.rb +11 -0
  246. data/spec/features/managing_event_spec.rb +136 -0
  247. data/spec/features/managing_venue_spec.rb +98 -0
  248. data/spec/features/recent_changes_spec.rb +26 -0
  249. data/spec/features/search_event_spec.rb +33 -0
  250. data/spec/helpers/calagator/application_helper_spec.rb +48 -0
  251. data/spec/helpers/calagator/events_helper_spec.rb +172 -0
  252. data/spec/helpers/calagator/google_event_export_helper_spec.rb +69 -0
  253. data/spec/helpers/calagator/sources_helper_spec.rb +13 -0
  254. data/spec/helpers/calagator/tags_helper_spec.rb +36 -0
  255. data/spec/helpers/calagator/time_range_helper_spec.rb +59 -0
  256. data/spec/lib/calagator/decode_html_entities_hack_spec.rb +53 -0
  257. data/spec/lib/calagator/denylist_validator_spec.rb +65 -0
  258. data/spec/lib/calagator/settings_spec.rb +22 -0
  259. data/spec/lib/calagator/url_prefixer_spec.rb +33 -0
  260. data/spec/lib/calagator/vcalendar_spec.rb +66 -0
  261. data/spec/models/calagator/event/browse_spec.rb +190 -0
  262. data/spec/models/calagator/event/cloner_spec.rb +45 -0
  263. data/spec/models/calagator/event/overview_spec.rb +79 -0
  264. data/spec/models/calagator/event/saver_spec.rb +55 -0
  265. data/spec/models/calagator/event/search_spec.rb +188 -0
  266. data/spec/models/calagator/event_search_spec.rb +150 -0
  267. data/spec/models/calagator/event_spec.rb +807 -0
  268. data/spec/models/calagator/source/parser_hcal_spec.rb +69 -0
  269. data/spec/models/calagator/source/parser_ical_spec.rb +277 -0
  270. data/spec/models/calagator/source/parser_spec.rb +236 -0
  271. data/spec/models/calagator/source_spec.rb +118 -0
  272. data/spec/models/calagator/venue/search_spec.rb +119 -0
  273. data/spec/models/calagator/venue_search_spec.rb +123 -0
  274. data/spec/models/calagator/venue_spec.rb +391 -0
  275. data/spec/models/tag_spec.rb +60 -0
  276. data/spec/rails_helper.rb +41 -0
  277. data/spec/spec_helper.rb +144 -0
  278. data/spec/support/admin_authentication.rb +4 -0
  279. data/spec/support/assert_dom_equal.rb +27 -0
  280. data/spec/support/disable_geocoding.rb +3 -0
  281. data/spec/support/http_samples.rb +9 -0
  282. data/spec/support/paper_trail.rb +9 -0
  283. data/spec/support/samples/facebook.json +23 -0
  284. data/spec/support/samples/hcal_basic.xml +6 -0
  285. data/spec/support/samples/hcal_dup_event_dup_venue.xml +13 -0
  286. data/spec/support/samples/hcal_event_duplicates_fixture.xml +13 -0
  287. data/spec/support/samples/hcal_event_wo_lat_and_long.xml +14 -0
  288. data/spec/support/samples/hcal_multiple.xml +16 -0
  289. data/spec/support/samples/hcal_same_event_twice_with_different_venues.xml +12 -0
  290. data/spec/support/samples/hcal_single.xml +8 -0
  291. data/spec/support/samples/hcal_two_identical_events.xml +14 -0
  292. data/spec/support/samples/hcal_upcoming_v1.html +412 -0
  293. data/spec/support/samples/hcal_upcoming_v2.html +749 -0
  294. data/spec/support/samples/hcal_upcoming_v3.html +685 -0
  295. data/spec/support/samples/hcal_upcoming_v4.html +761 -0
  296. data/spec/support/samples/ical_apple.ics +22 -0
  297. data/spec/support/samples/ical_apple_v3.ics +37 -0
  298. data/spec/support/samples/ical_basic.ics +15 -0
  299. data/spec/support/samples/ical_basic_with_duration.ics +16 -0
  300. data/spec/support/samples/ical_event_with_squashed_venue.ics +12 -0
  301. data/spec/support/samples/ical_eventful_many.ics +504 -0
  302. data/spec/support/samples/ical_gmt.ics +12 -0
  303. data/spec/support/samples/ical_google.ics +786 -0
  304. data/spec/support/samples/ical_multiple_calendars.ics +111 -0
  305. data/spec/support/samples/ical_upcoming.ics +36 -0
  306. data/spec/support/samples/ical_upcoming_many.ics +682 -0
  307. data/spec/support/samples/ical_upcoming_v2.ics +43 -0
  308. data/spec/support/samples/ical_z.ics +10 -0
  309. data/spec/support/samples/meetup.ics +16 -0
  310. data/spec/support/samples/meetup.json +48 -0
  311. data/spec/support/samples/upcoming_v1.xml +8 -0
  312. data/spec/support/samples/upcoming_v2_with_invalid_utc_dates.xml +8 -0
  313. data/spec/support/time_convenience_methods.rb +9 -0
  314. data/spec/support/time_zones.rb +14 -0
  315. data/spec/support/url_helpers.rb +7 -0
  316. data/spec/support/wait_for_ajax.rb +17 -0
  317. data/spec/support/webmock.rb +12 -0
  318. data/spec/test_app/Rakefile +6 -0
  319. data/spec/test_app/app/assets/config/manifest.js +3 -0
  320. data/spec/test_app/app/assets/javascripts/application.js +1 -0
  321. data/spec/test_app/app/assets/stylesheets/application.css +16 -0
  322. data/spec/test_app/app/channels/application_cable/channel.rb +4 -0
  323. data/spec/test_app/app/channels/application_cable/connection.rb +4 -0
  324. data/spec/test_app/app/controllers/application_controller.rb +2 -0
  325. data/spec/test_app/app/helpers/application_helper.rb +2 -0
  326. data/spec/test_app/app/javascript/packs/application.js +15 -0
  327. data/spec/test_app/app/jobs/application_job.rb +7 -0
  328. data/spec/test_app/app/mailers/application_mailer.rb +4 -0
  329. data/spec/test_app/app/models/application_record.rb +3 -0
  330. data/spec/test_app/app/views/layouts/application.html.erb +15 -0
  331. data/spec/test_app/app/views/layouts/mailer.html.erb +13 -0
  332. data/spec/test_app/app/views/layouts/mailer.text.erb +1 -0
  333. data/spec/test_app/bin/rails +4 -0
  334. data/spec/test_app/bin/rake +4 -0
  335. data/spec/test_app/bin/setup +33 -0
  336. data/spec/test_app/config/application.rb +22 -0
  337. data/spec/test_app/config/boot.rb +5 -0
  338. data/spec/test_app/config/cable.yml +10 -0
  339. data/spec/test_app/config/database.yml +25 -0
  340. data/spec/test_app/config/environment.rb +5 -0
  341. data/spec/test_app/config/environments/development.rb +76 -0
  342. data/spec/test_app/config/environments/production.rb +120 -0
  343. data/spec/test_app/config/environments/test.rb +59 -0
  344. data/spec/test_app/config/initializers/01_calagator.rb +90 -0
  345. data/spec/test_app/config/initializers/02_geokit.rb +111 -0
  346. data/spec/test_app/config/initializers/03_recaptcha.rb +10 -0
  347. data/spec/test_app/config/initializers/application_controller_renderer.rb +8 -0
  348. data/spec/test_app/config/initializers/assets.rb +12 -0
  349. data/spec/test_app/config/initializers/backtrace_silencers.rb +8 -0
  350. data/spec/test_app/config/initializers/content_security_policy.rb +28 -0
  351. data/spec/test_app/config/initializers/cookies_serializer.rb +5 -0
  352. data/spec/test_app/config/initializers/filter_parameter_logging.rb +6 -0
  353. data/spec/test_app/config/initializers/inflections.rb +16 -0
  354. data/spec/test_app/config/initializers/mime_types.rb +4 -0
  355. data/spec/test_app/config/initializers/permissions_policy.rb +11 -0
  356. data/spec/test_app/config/initializers/wrap_parameters.rb +14 -0
  357. data/spec/test_app/config/locales/en.yml +33 -0
  358. data/spec/test_app/config/puma.rb +43 -0
  359. data/spec/test_app/config/routes.rb +3 -0
  360. data/spec/test_app/config/storage.yml +34 -0
  361. data/spec/test_app/config.ru +5 -0
  362. data/spec/test_app/coverage/assets/0.13.1/DataTables-1.10.20/images/sort_asc.png +0 -0
  363. data/spec/test_app/coverage/assets/0.13.1/DataTables-1.10.20/images/sort_asc_disabled.png +0 -0
  364. data/spec/test_app/coverage/assets/0.13.1/DataTables-1.10.20/images/sort_both.png +0 -0
  365. data/spec/test_app/coverage/assets/0.13.1/DataTables-1.10.20/images/sort_desc.png +0 -0
  366. data/spec/test_app/coverage/assets/0.13.1/DataTables-1.10.20/images/sort_desc_disabled.png +0 -0
  367. data/spec/test_app/coverage/assets/0.13.1/application.css +1 -0
  368. data/spec/test_app/coverage/assets/0.13.1/application.js +7 -0
  369. data/spec/test_app/coverage/assets/0.13.1/colorbox/border.png +0 -0
  370. data/spec/test_app/coverage/assets/0.13.1/colorbox/controls.png +0 -0
  371. data/spec/test_app/coverage/assets/0.13.1/colorbox/loading.gif +0 -0
  372. data/spec/test_app/coverage/assets/0.13.1/colorbox/loading_background.png +0 -0
  373. data/spec/test_app/coverage/assets/0.13.1/favicon_green.png +0 -0
  374. data/spec/test_app/coverage/assets/0.13.1/favicon_red.png +0 -0
  375. data/spec/test_app/coverage/assets/0.13.1/favicon_yellow.png +0 -0
  376. data/spec/test_app/coverage/assets/0.13.1/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  377. data/spec/test_app/coverage/assets/0.13.1/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  378. data/spec/test_app/coverage/assets/0.13.1/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  379. data/spec/test_app/coverage/assets/0.13.1/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  380. data/spec/test_app/coverage/assets/0.13.1/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  381. data/spec/test_app/coverage/assets/0.13.1/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  382. data/spec/test_app/coverage/assets/0.13.1/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  383. data/spec/test_app/coverage/assets/0.13.1/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  384. data/spec/test_app/coverage/assets/0.13.1/images/ui-icons_222222_256x240.png +0 -0
  385. data/spec/test_app/coverage/assets/0.13.1/images/ui-icons_2e83ff_256x240.png +0 -0
  386. data/spec/test_app/coverage/assets/0.13.1/images/ui-icons_454545_256x240.png +0 -0
  387. data/spec/test_app/coverage/assets/0.13.1/images/ui-icons_888888_256x240.png +0 -0
  388. data/spec/test_app/coverage/assets/0.13.1/images/ui-icons_cd0a0a_256x240.png +0 -0
  389. data/spec/test_app/coverage/assets/0.13.1/loading.gif +0 -0
  390. data/spec/test_app/coverage/assets/0.13.1/magnify.png +0 -0
  391. data/spec/test_app/coverage/index.html +941 -0
  392. data/spec/test_app/db/development.sqlite3 +0 -0
  393. data/spec/test_app/db/schema.rb +100 -0
  394. data/spec/test_app/db/seeds.rb +1 -0
  395. data/spec/test_app/db/test.sqlite3 +0 -0
  396. data/spec/test_app/log/development.log +3391 -0
  397. data/spec/test_app/log/test.log +17258 -0
  398. data/spec/test_app/public/404.html +67 -0
  399. data/spec/test_app/public/422.html +67 -0
  400. data/spec/test_app/public/500.html +66 -0
  401. data/spec/test_app/public/apple-touch-icon-precomposed.png +0 -0
  402. data/spec/test_app/public/apple-touch-icon.png +0 -0
  403. data/spec/test_app/public/favicon.ico +0 -0
  404. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/-7/-7XJAKB05aTb9D7M4-wKdufeweGLquMgwfcxMWTwc_o.cache +1 -0
  405. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/-7/-7fwibfPlSku561tAYl3ncQPhPqyAgS8UIjm3vTx4wM.cache +1 -0
  406. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/-C/-Ch1USFaa9gSzMV1wrRlLR2YMVIEkoOwDS5RpwjLAps.cache +1 -0
  407. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/-T/-TTr6KqD-ujGn2RSF9P09kWDS6EurDUMcK2F-oUAbJQ.cache +0 -0
  408. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/-i/-iKizRHK2nAAXCBcxnbMk2old-RydbtWvKSKk_KbiDs.cache +1 -0
  409. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/-v/-vy9jMe2paDmfsO-pP316MgJPuoPMgXlhFaIHKOZJ1k.cache +4 -0
  410. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/-w/-wz0QB7RNWfommpFHx6Yx0NMgaicnGwjeVwf2OXCUzA.cache +0 -0
  411. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/-z/-zg9cM2m64rO-UuXRBIdr_b6LodH5F7xSquc9k67UUs.cache +1 -0
  412. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/0-/0-fJLnKYs-6s-v-idUJYpglI2q26SYJUDfuSfy91Adg.cache +3 -0
  413. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/07/07XJ-s3aRtPGjnLJy8fR5nrMz8L00xC2iV4Plw0QuoQ.cache +1 -0
  414. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/0B/0B31y_mvgreoKh-rWXaFOu1z4vxqIVtG-MjQuvtnkMg.cache +4 -0
  415. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/0B/0bTu2Ggv55bWmayxHvdD48DHU5WQyyR_xynL16-gBLk.cache +3 -0
  416. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/0J/0JhoQTVMxFIb7QLtDjxey8HOvr9MaD2K8pthPL7d3_8.cache +0 -0
  417. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/0g/0gyL3qjzBkYv6AjwNjzj5fSt89vFLBBPCY3PwwWJtNs.cache +1 -0
  418. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/0t/0tOntD7ttQjtVPVEWWOluYNl5w6xWylA3zmeype08WQ.cache +0 -0
  419. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/0v/0vYFj2UuEi_8AfUTggQbFraiO-JzvkKMRuU1hgmnRfk.cache +0 -0
  420. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/0y/0yqDyDMMG4DNqbYiwi7h3fp4hCMpXVwU4bOGyRWo_VM.cache +1 -0
  421. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/13/13y38Az3BLMjbhBDIh_TPmaWP1cEpi8shcRvO8mXtxc.cache +3 -0
  422. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1K/1KoCH3tq39tH477ewqaB3XZolH7tUA_tqsL9Z30XxPQ.cache +1 -0
  423. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1L/1LG4Sx1dR46BZo9C-5sFSBew2pcV5CXHw3YF_y5ySmk.cache +1 -0
  424. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1P/1PvHPkanwXX-E6w_3XqVMCtdPvKQMzLlMMIjnbb624g.cache +1 -0
  425. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1Q/1QJn4jg8_tZLAsAadtdtIPJmb_BYM0klc7Yk6a08-ZE.cache +0 -0
  426. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1U/1UIF81nlAwTTM97bs-UybWTfLy4m2VhoiAw7LIbgSOg.cache +3 -0
  427. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1U/1UN6zRxUdzxAjmQzSsffhTQE7EhtX3DmJk6UpqJhzc4.cache +2 -0
  428. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1W/1WiBu3EjDDw9ZFqFPzgA4qscqxnl77yj6I7Jhn6k7Ww.cache +1 -0
  429. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1Y/1YI9uXuEkXhH5CuziXWu9qbmXJ8DhhdPIL4Ez6rVRtA.cache +1 -0
  430. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1Y/1YaDfZipLpEhtiKjv5TKne-EW2HSDKgf9bWwujMh1_s.cache +3 -0
  431. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1Y/1y0XgMkKSRMA0scGbO1b3Gd8MSIrqm5deEXya3z-EWw.cache +1 -0
  432. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1b/1bb0e7iaTnNG0E4GRYziciIXBaCz8R78vuyjfHVmgnA.cache +1 -0
  433. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1t/1tp9ezn37wq8rrY5SRwKRcNQT7J2KJJvKuiJ27ZYr1U.cache +0 -0
  434. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/1t/1tx3jVnsLwoFl251XOX7sf27re7RvLPGPBnQc6QdKJo.cache +1 -0
  435. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/22/22-ajlQVk4XBZ4IKqyugmEZ5i2ytaDL6GAMyROeZGN0.cache +1 -0
  436. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/23/237D6jMFFBcznPVCy-X3ivMbtOJipbpNDV1KMFrKD2k.cache +3 -0
  437. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/23/23myBMb2V6pI6SG61PRLM8TBd3nmlE_6CL64NUNNPIU.cache +1 -0
  438. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/27/27657jm06dbQ5wwcV_dilpgRNsRcU6u3NQgOyJDSSl4.cache +3 -0
  439. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/27/27oVvVcXKObtiDyloVl1NtVbIxa6fg8t8wXiGXIPN1g.cache +0 -0
  440. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/2A/2AzIMxo_KkKSMtefA-0hH6Vk39HV0EPXEo1z19a-aZE.cache +0 -0
  441. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/2N/2NpTM98gP2IoDvfdYiq-05O8Wr2_GcMnZchLYWWluVM.cache +1 -0
  442. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/2e/2eyu5FWVlXMGU-A2Ynx-wjFreBSeWffYYp0K7gshSvo.cache +3 -0
  443. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/2h/2Hl12w3l4rXm6ou4lFclUfRLBoDC3JhABIOmIjDxHyg.cache +3 -0
  444. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/2h/2h43eQmDICnVMkiAl7jqBeqbEH4jGBB8dIljmsW06yU.cache +1 -0
  445. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/2m/2mbcL-8QjmdZTEws9Okw2Zm4SjUB0tMaXFnqxz8ojQg.cache +1 -0
  446. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/2u/2uaqew9gc8DiLqry-XPyUkB3ByA6saJArocMkDnkd74.cache +1 -0
  447. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/30/30xfJCcL0sQXTxMQHtPkYVWnEWjHxRJYJ3_G1ljboZ8.cache +3 -0
  448. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/34/3402zq4W0YeU8x-PpCm-GHC0f1GlFmmYlwwsn7ntX78.cache +1 -0
  449. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3I/3IgPMEOyHojaAjV8J4yv3sM7XoIH6k_57LNDv56IxPo.cache +1 -0
  450. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3M/3MHNic2hBXuIoI7gDdnli2R4okd_T1-0GbYdNULq6Jw.cache +1 -0
  451. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3S/3SjPWaTJeH-EeDR9CNpFh2kMuGQCFBwx4m_m07Xp7Lc.cache +0 -0
  452. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3S/3sPanLJos9eWu1K6eUeeadRmCjKakcuGEfQRLlgQx0g.cache +3 -0
  453. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3T/3TBBvCTJqGdH-LdBk2zXust_JE2vHi-vUaYiI1X1HyE.cache +1 -0
  454. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3W/3Wwe8jv9VENWnkRPiFBHmoUhwpFcxi5NB00mfsO40O8.cache +1 -0
  455. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3a/3a8N2EvWqqiZ7S2AZ1FUDc8l30SqA9MJTm9rWxUh694.cache +0 -0
  456. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3h/3hFB_6mmnJq-G8kuqZaswBLKeVYqMElC_6XCMPfnZCM.cache +1 -0
  457. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3p/3pNVTHut4p-0kKEPlmSnwLB4rz2lWslB1Vuc4Osdt-4.cache +3 -0
  458. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3u/3u3hfKLQbGZZA_u343ogvMF4v4M3qDGOHyGB4orLgUg.cache +1 -0
  459. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/3v/3vAZoAsfIu9whdWaGRv2qEXDfuFXsTyjvf8HtttzCws.cache +2 -0
  460. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/49/4926gV3f_F4GCmRy5S-nFBDcnPYDkIkUvbIaRKojS7Q.cache +1 -0
  461. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/4J/4JsZpomO_X3fahdwM_0vOZX6lrbkrWwmFDJttQOiOMQ.cache +0 -0
  462. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/4Y/4Yp51UvSJobp2kS-oxcCFwrVzG-k5375fFew-2hISEc.cache +1 -0
  463. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/4e/4e4wPnqMmSXbUnZnptbG8EaWZs0WnThlRb8UerqFBKE.cache +2 -0
  464. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/50/50_Iz5FgKyUYI8mbZr-DiPANP_mMdtcX6vVeHWL_a14.cache +2 -0
  465. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/56/56DI2DPlSCErNqURs_5dF1L5d-6a6mcz0aoY5NWEC8c.cache +1 -0
  466. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/56/56QI6W_foAKVgztnbwjw21TXFFAmjVTdUiaxjAFUnK4.cache +3 -0
  467. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/57/57JC5r6PI2Lz8x76pgSfWy25ATBimCKONBrKh6Utc1s.cache +3 -0
  468. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5O/5OUTcXSvkwD6S63fBJt-vb6Nkm7li145Y8IjPZilqVQ.cache +3 -0
  469. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5R/5RSCffychDotPmJQ2YCbNQd3sxd49NQoP5sMA9kUcvg.cache +1 -0
  470. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5S/5Sq0Yl9ztgXlBl4-Rj7hU6u9BfTU_wO6VnqQ7ntzyWs.cache +1 -0
  471. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5V/5V5g7xlIsB5ZaU7Pb6r2h5zdCNf13Xo1KxUsEW6_Egs.cache +0 -0
  472. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5a/5aAD_YM5-Cgrn3ZzQWZjAE565L0HAorDqbim558VX-8.cache +0 -0
  473. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5d/5d4p-4RNJ3HH6CpUPB5hIHXs_y0gNzAU4FR_SUNEYbw.cache +4 -0
  474. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5i/5ifA0NQutnQP5WyVR2ub5TY1pPJSN-MDBY6KP49RZSM.cache +1 -0
  475. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5j/5j_lVGVG6k26-eEKSAZ7c8Vj2BKcsVz8F8I20hXMkzg.cache +3 -0
  476. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5k/5kUF0hlqfJUCUKmx703iXeFcnoyMc38S1YRCrKC3ifU.cache +2 -0
  477. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5q/5qcU_l7X5WOPvAzG1zK0gs8PVAUGSgE5roZlFEuXW9A.cache +0 -0
  478. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/5y/5y9m-YBlv340Slq73pu1XW7Arnr8qIaFDZ0X1x-Nhcc.cache +1 -0
  479. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/6C/6CzZzpEv63hPLd2504K0NpIxFB1sFOMi_GwunCkfiXo.cache +1 -0
  480. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/6W/6WYk6OIM20O-mJPYDQatDbeykiYkhYZBMbqswFngLxk.cache +1 -0
  481. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/6n/6nUCCLH4EQ8nOqg1e73EuKZDSZiUKLrOnW5mA1aJhn4.cache +3 -0
  482. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/70/70dCJHrhufL46ARsYo85H1i8r2y1gUp7HG2jiqL4tOI.cache +0 -0
  483. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/75/75qDc6vPqc_X5KyZwnBijmdXmqMBXh7dbW19wiupXbw.cache +1 -0
  484. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/7B/7BRuNbi26ckoLAtf8rB8j4IJ8AhSriQEJs41JIm94gQ.cache +1 -0
  485. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/7h/7hRiYYgu3cg2vMkqMxoQjLlFCUoH8Drf18T9qAJWBg8.cache +3 -0
  486. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/7i/7iwBn6gLbrJG1gpFIQnCG5QnHHwlT9K_qUf-HAdCqDM.cache +1 -0
  487. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/8C/8CcVyU_cX8vJEH9Yo4GOt6CKO7K6lDt4I8EPzETUiwM.cache +0 -0
  488. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/8K/8KCQuL5JYEu_sA-_CvzJGMdXqAhs_2-T_o0vP7Es7pE.cache +1 -0
  489. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/8S/8SND6Dc5cQWPuOpa-dPGug5RzbuN6OJq8WhLTscLXDs.cache +0 -0
  490. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/8Y/8Ycnhojo2X8AhVtEWy5mYc_Xe7z2OVRrqd1NoKNCH84.cache +2 -0
  491. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/8e/8eJzGzKlMbAPMK2vz48uJ7xbbuxXRWLaGwvMXXJs40s.cache +1 -0
  492. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/8o/8oj_GdArmvAzbLL1ONriw7AftIjzbUdttygYWVgFgzA.cache +3 -0
  493. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/94/94QS-KUh5I9pXcR0aRgDFCreQ0HduBxXkTknRLJlJQY.cache +1 -0
  494. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9C/9CN_NA-1XSyXnAUeR5LSmwONQSk7Ge00C5pShk2vvIk.cache +3 -0
  495. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9C/9CbdWY5m-J9wCdR1Nl5Xizxv3_Wlyhds5fXByY2hq3U.cache +1 -0
  496. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9I/9ISgaWHOzbWr0V-BBeQVzshVcV7zdQHe1_KwoQ98reg.cache +2 -0
  497. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9N/9NpdZbFRNyEc-Q5utzeXgA8ai-9vTQdBEV6LRWRhbZs.cache +1 -0
  498. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9R/9Rr-wylVfo__usTZjeNjdn7_yskD7NkvjwyL5OBOeuo.cache +2 -0
  499. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9s/9sC41minYG5ynf5v26yJViFkrWRWrRl5-Tzk9D-a0pU.cache +1 -0
  500. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9t/9tAUj0LPatWIvJMwp5tTEkBDXmXQk7TPAPEaxaFAKyM.cache +3 -0
  501. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9t/9tK90DH4FwbqPtOmo3XlVp896zbUP3AyA4KMIgJr50g.cache +0 -0
  502. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9u/9UPfMiuPZraxQJ-P4eEZttQGjkQ4vNr4W8FSBldcAL4.cache +3 -0
  503. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/9u/9u4PRfXq366mAjQdjFpXgq68XBLbUm23u69eBmUPKVk.cache +0 -0
  504. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/A9/A9xNPCsYFKINlI5IGhLbreoK5_Wr_yELaIIXSY_Sp8g.cache +1 -0
  505. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/AE/AE8HpkMYtggM-VI20FezRcw9Kr1a5j1IjPOkgzXlJ68.cache +1 -0
  506. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/AN/ANHM1wLudT9o_dm1dt9fNpNxRY0dcGl_f-QyAyVpi0A.cache +1 -0
  507. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/AU/AUGBnWBl3wOqGBVJKzise9enZbtBxRmdhzCht0Lal4I.cache +0 -0
  508. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ag/AgFHHToB1OJtQ34X7n3Dif2nf3N76YRpHP2H5WA_GJc.cache +1 -0
  509. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ak/Akir5YlbQoW6JQpRSZe9_stJizwH3UtSrVj5mHIj_yg.cache +1 -0
  510. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ak/AktKqBXnWScl3cZpjI4_20vuzktYGJvhTzVXiVTy9kY.cache +1 -0
  511. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ar/Arim5lyeOMr812djHZvThxbZlvyMC17eQHz-N5I9tbY.cache +0 -0
  512. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Az/AzBxm6CJXnVZ_HOImebnp_-A6zQuB8snE6c6FgSzDIg.cache +0 -0
  513. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Az/az0BJhh8qpQS93Uy--249eKg2995G-tgVHXcXbZup1M.cache +2 -0
  514. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/BH/BHVfZRbIQMAXs2xelHxKSK9RBgGuGFFOYJciD7yVhd4.cache +1 -0
  515. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/BK/BKutacZ639dGACeW_zHDROun3POScMnkmRS37jhqF6g.cache +1 -0
  516. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/BK/BkMaMfXi9y3XS35_cm50yPO_FxDXztCmjIYEy4o17ZQ.cache +3 -0
  517. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/BO/BO6ev96YibldGJjHUzzrXbJoBtfSkq2QGvw63MX7efA.cache +0 -0
  518. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/BO/BomNw1QSWkcZqOuvnMtIO7IVojuo3okaCWaIMijPUYI.cache +0 -0
  519. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/BW/BW442u__rpYcILaPyvdryH8hYhccIFog5pMEn-r-WOo.cache +2 -0
  520. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Be/BEZ6Evcap2d5N9Bl4piaXohydgd4EZ3WeDSjGA_BkkI.cache +0 -0
  521. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Be/BeqywwMspEI-Aq97GghfLTQW3lluoNNZfvOdSIl4SUk.cache +3 -0
  522. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Bn/BnJkx0rrE07xVRBD_3aeHvZpmIZb5ovN_N2Z7mzGfDo.cache +3 -0
  523. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/C9/C9U0Wjj9gHQcKxmgbHVH_xgDQmlWOIICGMQdrsPW7oM.cache +1 -0
  524. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/CG/CGljurajGnz4h-kB8-iLDjkttov1yMKnEoK_zzkbcE0.cache +1 -0
  525. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/CJ/CJDRkD8MTP_S2_pAVaSLXIe7ZJfIp1q0dkqNm5Dh2fQ.cache +0 -0
  526. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/CT/CT2JAUG3_-65snkW6i2_1PQ3o7Ejr2RPgR1cmjhytG8.cache +3 -0
  527. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Cb/Cbkb3jAq10sKVL3M2WG1jcUklTmY5ZgGoNEXuye63so.cache +3 -0
  528. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Cb/cBStL77wKX9L7T3yOWAYotfGEpBMdLRdbPs1FjjKkSw.cache +0 -0
  529. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Cc/CCkwcWe37Kfbr7oIIR7HyaP8ste-V1RGJBViu_LWoRk.cache +1 -0
  530. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Cc/Ccj_tSjdnRZPGXuHZa6_7gF-h-QxXwQDSQUTPRIaKYk.cache +1 -0
  531. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ce/CelsrriF39DcV0I58W_v2IALsWOTA_st1Nn8vEFTuOE.cache +1 -0
  532. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ci/Ci9OFFmkJlyRWAz0Atqbd2lozN_CT4a-40YxvY8BCCQ.cache +1 -0
  533. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ci/ci7oNpLXRXGAxVR8EAHNi28oIfe642JadjmqzwnUFpg.cache +0 -0
  534. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ck/CkE5vRgNo40ZdyI9gI6oWp5CZx3jpm2tR_Vqz42hkMk.cache +2 -0
  535. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Cr/Cr6zz5H9WbinwiPj0KjhEqGdOyVkyq6dR3QuzxLxhJw.cache +3 -0
  536. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/D0/D0mD7XlRRDHys_ojHAZdpVT0hYUCEU-d2tAXQwtsH_U.cache +3 -0
  537. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/D6/D6ifS3RdOe4dI2lYDAWyC78TJS8R4V1CioK1u1SZT0E.cache +1 -0
  538. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/DR/DRNCbe7tG4HP_e5G_j0Xjs8uLhJT_h-3fURLyzaI08I.cache +1 -0
  539. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/D_/D_QGGYHTHVoi0IjY7pg_FKNB2mcr9u5NSe8IOA1lY7A.cache +3 -0
  540. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Da/Daf-ALNJeTv1oX6OtMHU2bR63fnrv7oKA6x8jDLdEFc.cache +1 -0
  541. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Dy/DyawJ9huP-4h5zILS8Mp5LqI8epcL0trb8mSzmpHsmA.cache +3 -0
  542. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Dy/dynZoh3l4hb0mi9PazlfYwF1y_ugFd9b0SpYid2C2Ys.cache +1 -0
  543. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/E2/E2APOEFmnfg-wWJUjfyXKRMg8FCT2uGGtY-lSerwIp4.cache +1 -0
  544. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/E4/E45VAtENYm2gSAww1buBZ5mG2HwhDwoalEhBbop0VMs.cache +1 -0
  545. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/E5/E5K_HXWCY12hUT5KL3ZdE_TfR_bfbKLLVm2qs9xYOXg.cache +1 -0
  546. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ED/EDLGRk9JslNI-5SOxbWtw_30x5jSSyza1miSrcf01tc.cache +1 -0
  547. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ED/edqK5PWc2NuA5pVyzKNxE9Jzu9f3HVYPyd6hq7hRFP8.cache +0 -0
  548. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/EK/EKadd2es9AG8ivDBSSTGzm1R_AhrM1dr8gUknZs-ezU.cache +1 -0
  549. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/EK/eKaM5oDozREYbtT53ztjBgBpDJxTIju5YQmoFxz5GLs.cache +1 -0
  550. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/E_/E_2niwlc8zRCQ0ZRQuU6y8zBA8chZuh0f6ETDZBYcLg.cache +2 -0
  551. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ec/Ecod6feV9GlHrAdDTMYhhZ0y2MjIIOnqUoius9bCBzU.cache +1 -0
  552. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ef/EfGxL6HcWeQNHUmHb6HhSUe0Lcc1i9QErUVwX-l_trw.cache +1 -0
  553. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/F1/F1nPddELae203IH-kMbq7F8W2odsIQHZHZGG0URwYMo.cache +0 -0
  554. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/F4/F4ac4sd8_8YjBdGmbu6B_lbfLn0NI5g6MZ3FMcVIsY8.cache +2 -0
  555. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/FC/FCwMdJqkvOLcL-QnRgqLriK6s3cToVfZDOQelozg1CA.cache +4 -0
  556. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/FO/FOJ__unUA9F05ep8NmT3XSm6ChpTKBC9uIYqBYPOR6w.cache +2 -0
  557. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/FZ/FZfF7TfD5WK0Wh4xOl3R52nBhiLeXPeoI2t67Jshc1E.cache +1 -0
  558. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Fa/Fa3xu--wNyo6Akpvin9x7gP2pH5q0LSr8NBL6Y46OmA.cache +2 -0
  559. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Fd/FdzTV813V1AHj_MfWBB-CxnxdFm7CMCy-7wjTfsgv84.cache +1 -0
  560. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Fg/FgGFytTAoHrG8CRF1T5sxKwfjd1tX79oGwVY7FplQlk.cache +3 -0
  561. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Fw/FwHUzrTAAwUH3wRQ4Orl_yjsi2w8o0NYv6smLyKEXwg.cache +1 -0
  562. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/GI/GISC6VDtRegkrZ0GnuTx0UZctzJlKs2dRvnTUCIYXO8.cache +4 -0
  563. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/GJ/GJq1awkCqXnLKKO_ASSRAD79LiP93AJv1KOftwEh69k.cache +3 -0
  564. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/GT/GTemQJCtgRdWLbVjjkV4aGSuGPbk5Eb9hr1dqOkGyhM.cache +0 -0
  565. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Gb/Gbk-J99eh6M4MdlKK5xMekG-07y_CgY9JH4UIdAh8mA.cache +0 -0
  566. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Gf/Gf7aD-3M-aAdz3lvxqTMgVUzyYexKO0DvxkQLBj9heI.cache +1 -0
  567. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Gw/GwfmBxVe71rQTzj5fJ3FtkTaToCSXZEk2s-pYCZkby4.cache +0 -0
  568. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/H8/H8jRhz_Q52AbEAHFbArtoRalTWrCm8VuvQVBwVMRJXo.cache +1 -0
  569. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HC/HCgc18-T8T4An0Oef2oQB29vSL0kkCYPzUTfJ99fmEQ.cache +3 -0
  570. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HG/HGA0X3g4KdCfjMtYmQOykwh4jffqLvfql3x841pYScY.cache +1 -0
  571. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HH/HHWbrYbV8sPDaKEfLcXDT0PbmiYg4jcncU8Hb4MgrJc.cache +3 -0
  572. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HH/hh2VdLRAbT_vsMqVDuSuPRfkhycGMto9uRyM4y0FbUQ.cache +2 -0
  573. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HH/hhve04gk_mNu6CVl0DCp03BhMfEaht3m7rvBzk9QZ_0.cache +1 -0
  574. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HP/HPFulb-5wCgkLMe4018WJk4jwOH7BUgoqivhmRnz4-o.cache +3 -0
  575. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HR/HR0zRWGZaY5fIz-zdJ7e_12rlZP-RLOZ16yjbK-_GnU.cache +3 -0
  576. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HY/HY7JFVt4mGzuVsLz4ChwaKlFNHWdAvKn-TrKlWkloDc.cache +0 -0
  577. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HY/HyBDC_xcTBPAbHazEvmMeuGi-e8CDVEb4FpJ2mx8hco.cache +1 -0
  578. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/HY/HyaFTylDFzeV4ucLiDqspIG4uQULs9ZfkVowUstUmG8.cache +1 -0
  579. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Hn/HnRMoWMdEVYYQTDIBmD4f7ZUcnqe1zx5KZoGVjGSQ2g.cache +1 -0
  580. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Hu/HutMSQ9-IwKTtvnMogCNvYuCW_zHQVOwZY4qp20BYWU.cache +3 -0
  581. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Hz/Hz89nVw2GB-8xFDlqHd1HNWSyTRGCRNzShuVxTh_kCg.cache +0 -0
  582. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/I-/I-5zh0hhiO06h0Eqdq-LInVBPYhs1owy6voiLdXE-ug.cache +1 -0
  583. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/I8/I8PHsGdJTT10b-c5er7PiuBwfKsYTOwQItJVFdF_tKk.cache +0 -0
  584. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/I8/I8wbzdCQrY6A0yJ1fTrxNcIaqCtltZHMwVS6TObgRnI.cache +0 -0
  585. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ia/IasxMT9bHGJx2rR1H2wgHPqgNWh-InjhH3j6KysgNM0.cache +1 -0
  586. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ib/Ib3eKdGCag1PWMQKWhjMzJLJI7hFbGM6B8L85ya-rLY.cache +0 -0
  587. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ib/IbS6pwg-E0bJv-82thBxk8GCDnPr-yGYKIyJ8bp_k7U.cache +3 -0
  588. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ib/iBFJd_Juw2vJGPQUn_J7-9AtjawGOy5Jb21vbf4cS0I.cache +3 -0
  589. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/J8/J85AfBWM5Y_K57uQFZC-GSWfJQrS8axKZ5Ln3sOYfts.cache +0 -0
  590. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/JB/JBs_zmwbN_9F4OXC2Wo2fJ3CHMVgWUn5MGJjWJedU4I.cache +1 -0
  591. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/JH/JHzip9mqNLH3XN5eDM2ohblmZzA_lORwJFUq7bOaB7M.cache +1 -0
  592. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/JO/JO0Bk4r6lvQxc8P2_q9s1QxrVmQexy_lX80Q38zcWYU.cache +0 -0
  593. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/JO/JOXU-LJ2JtpoXvNNv1W4xxN6_gkLzNr1kQJMpRhirdE.cache +1 -0
  594. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/JO/Jo9TPfwnolsuJPLEHXzci5qTcjrxukh0ksTI6Pu3hwc.cache +1 -0
  595. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/JO/JoG09ZJj53cCgCCifxYjiF-YSxI7tJbMYoISFfnp9GI.cache +0 -0
  596. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/JP/JPt1A7ju4RVdy-m9pODGXlAmX4SeZiOHkdeabT-WKY8.cache +1 -0
  597. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/JP/jPCfFtlQKwHRYyhCQMUM9gk9d8RmBIwcin2UoQS0cP0.cache +3 -0
  598. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/JW/JWib5qODMc288zinflSGRB-NrgwfK4h9_lcsaGqAQGE.cache +1 -0
  599. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ja/JaCch_aAqSYsHnQblrlWbpXwFdJQ_RZQ8i_6nYAx4wE.cache +0 -0
  600. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Jr/JrAOi_nCXehyFlTIG5NDw8bXzu2B20MWg3jRbhhURoA.cache +2 -0
  601. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/KB/KBpn-M04BCUfZkH3DaW82R64erygpTkFW8CDcLz0Ky0.cache +1 -0
  602. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/KB/KbvHG09YSpF2Zhcn0qLlReGXj5_nZ5LjPvNUNhVyL7Q.cache +0 -0
  603. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/KH/KH5van46GtyXqHgocKR6OqGDZepIxlt_DJ5J-B052VQ.cache +1 -0
  604. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/KP/KP8VQoiRsijAa5ZlbyR5_Ik57oAgvWD0vpU389jlVOQ.cache +0 -0
  605. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/KR/KRPxHNBTeg5Fpq4kZvCutvNzhXEqdNruvFbo_YZLVQc.cache +1 -0
  606. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/KR/KrjMdT0j9KrND3yYaiaOMPwGw6UPGnm2mMNkKrwcCNY.cache +1 -0
  607. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/KR/kRiGMRvoQo5_-yX-S-RmQb_zKeM0XYU1Vq6gPVoLpbE.cache +1 -0
  608. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/KU/KUOPEWzhUGqP3g7M2tUUn0wclfaLEgeN5V5-2hTRfr8.cache +1 -0
  609. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/KU/KuVHBvtTLontYM2cZv9StVphyhOzUnVMt6HjlFxQ5WY.cache +0 -0
  610. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/K_/K_qIiZi4PWaXSfpj2SRm4w57dDMtcDzDg9-mjytdkFM.cache +1 -0
  611. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Kc/Kc66LZ0mQIdB0DHDGfgpmuBd64MTzCFHUDGV3bZUq9Q.cache +0 -0
  612. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ko/Ko86j3HZkqFVCxkljgVbJQ9snzHhW3wR0LNYYj4smv0.cache +3 -0
  613. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/LF/LFBKhO1HxzfKez4dq2HiMAs7Upfy8XCsQGYU9e45SrM.cache +1 -0
  614. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/LF/LfDccElq24-Js5o0faeZuAoev6TYycwHoFBQM4fS240.cache +0 -0
  615. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/LF/lFB-Wg-UWQDHI9GFZWLKFvAC2v7X4QpXQrpmdIEZUVk.cache +0 -0
  616. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/LF/lFz4ImiaiIu1Oc0336ivmB7Hjk1FiuM0aBBvdgDmZIc.cache +3 -0
  617. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/LK/LKhZU6jzZobkmGPH1qaQqDzXkKSg7KPDCBPhGNhRpJ8.cache +2 -0
  618. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/LN/LNyhzMh4mw48L9ANJQ1Q36H6jMNZ0CftqkVea91GyZI.cache +3 -0
  619. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/LY/LYWwmgKb4cxbYmV7rnwX3_-F1eErgNWaAcDEO_wbW0M.cache +2 -0
  620. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Lm/LmwXlHTRgyaDGkVBfcxIno4nU152AttSDHsguSHZUo0.cache +1 -0
  621. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Lp/LpIVRfZ8d8FN7I1ybB_LHTcuS6gn2Oq53zg8nV87Qvo.cache +1 -0
  622. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/M-/M-fl0ojZ1WWIB6obWNA4eDxRLlUC_s2cxyfmFFq8fik.cache +1 -0
  623. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/MG/MG-EoYG5EegFjtoALp9Ham1RrxQbjPQ7-d_sT5q3jFs.cache +1 -0
  624. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/MP/MPbbbgqAZf6nW9qj4Pd0eIUcf-3Ys_c1e6lQwC4nXW4.cache +1 -0
  625. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ms/MsXloaedev9FRAcXFEzYM38mp-Oy_HbsJTDeHa2-qr4.cache +3 -0
  626. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Mz/MzBUA0ivS1H5e7wzE5-9Hv3JX7WYBKRkxeCZWdK3C6w.cache +3 -0
  627. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/N2/N2q4tA-AvzYqJAIS5eust-jPucS_bhBgL9ZeGepraI8.cache +1 -0
  628. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/N5/N5raOeJbafuyylkn-2jSeH1Avs6iOMBpawcECjz0ULI.cache +1 -0
  629. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/NL/NLmbV6f2s9gG63x3_o38u3sFT8RInoRmvs9faT9D4lk.cache +2 -0
  630. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Nw/NwKqttWpgMUNBnf75IpJku6XJAg_u0HcMWoCGx8Rg_I.cache +3 -0
  631. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/OU/OUgncaSlXknByrIElAk0w-599yttxt5eSv5Er6JLRHU.cache +1 -0
  632. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/OW/OWg_b3ZSaPzGs5J8kAECmuB8flKvi1t4OboCnjb4FcA.cache +0 -0
  633. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/OW/OwwSdzznlxgsVEc_CzUGV0ieM_8SkyFPWCqQ9N3CTWo.cache +1 -0
  634. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Oa/Oa8_W8IcUWkcLNdZynwbfApGdkh64tafHbX-QbJ36uo.cache +1 -0
  635. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ob/OB2t4Pb85fokLJ4FpxYlx_rMMSiE2nVMvWp59eTkgMo.cache +3 -0
  636. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ob/ObKvzrtSTNXKMuVTs1NsvHD5nTv-27B3RmJP5o8c7KQ.cache +0 -0
  637. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Oh/Oh6nSz4nVeMPO_aB9jfZhN4Jtsv6_FK7ObepdswQOIo.cache +3 -0
  638. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Oy/Oy5s9E66OxQpYW2cN1J-CCV7jxQ5OCWhDI-lgTwYe9Q.cache +2 -0
  639. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/P1/P17lo_tPbh86JXurxzVeK2ExKXhTBqSFJY4IrTDoy1Q.cache +3 -0
  640. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/PF/PFFpOYm1OM09MeyUhs57b7wtE5NNukahIf5JzeipUfU.cache +0 -0
  641. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/PY/PY2FCaQFO6RnKkBB9F38EbLAz8k8h6b0O3hQ_WY3G_o.cache +0 -0
  642. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Pn/PnVGnmkdsaYnihvGfK1m20iSvGFlHc-uWD4vxzEZYl0.cache +2 -0
  643. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Pt/PtjzVN-BrIlOHA7GBzLGsxuwonhOae6RwMKiUc1k5is.cache +3 -0
  644. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Q6/Q6WamMyTI89ZgI-yWeb9Efhr_HOZKNNgLboxYsE3BGs.cache +1 -0
  645. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/QF/QFXG7ELQlSYGaWZXJO1dc2pqD3mkfU553v3FQNS_WN4.cache +1 -0
  646. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/QF/QfILdo3PamzN_kgUwKBWtXgb2nlg9ZVPCGS9pxe9nzU.cache +3 -0
  647. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/QG/QGuB_AtVs5ZYOCzB6PVIf8PIhxAWWiHIeXWAoATcexo.cache +0 -0
  648. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/QK/QKhodsYnZ97AXi440JaAm-x2LIsDs2FViJ9KJwxLvXk.cache +3 -0
  649. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/QT/QT16knP0HwG1_5JF_cOMHBLZZ9aTYbnJIbM2W6tSW9M.cache +1 -0
  650. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/QT/QTI92lVqauVCnfn4bOzToWZ-tCO-xQ7HntAyf9UmoZ0.cache +4 -0
  651. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ql/QlFn7546j2IJAyLY8WDbqosMDgdcA1p_naiLYGa2NYQ.cache +1 -0
  652. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Qm/QmTS_IzUDpp3r8HSUBTBM5TetyUETqa5qtdINSlR6KU.cache +0 -0
  653. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/R-/R-Nyshj4m8P7YN0U48u_RGGxIEAvkrondRl6xJEzjCI.cache +1 -0
  654. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/R0/R0Z2M6oNP5d7PZQU3tP2n-QKyRd6rZm_sHCrqe3LHVA.cache +0 -0
  655. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/R6/R6WoJNxcGfDrLJkwbLWNyLVI-Jf4feyLtpNlAPBmipA.cache +1 -0
  656. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/RD/RDByQ5bhJh89oicftTcNli4H5IuHq12FUE7_tglN_-8.cache +0 -0
  657. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/RM/RMf4SqMd-uUK3qBMkWX9P4MPnwVq398LCO3jdtXawSA.cache +1 -0
  658. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Rg/RgqfpEMqIt8dgxkBw1U02AfvIQDCgLbXDQZYpGfTG9U.cache +1 -0
  659. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Rh/Rh7DhoGOk24qCPXa6Icz-8Di_B5n3JItCv8uBDvbsoo.cache +1 -0
  660. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Rk/Rk2k2urT3qTdDuRqVC1L5MJlPOcvnmizAXiG0ZBED34.cache +2 -0
  661. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Rx/Rx5bxNaRcA0qZC0BOVjvXuxEDM5_yxRq7w-Zm_0XTvg.cache +1 -0
  662. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/SB/SB9CcrMzR3KM-typexibOu1G-Qn3_Qu983LRRZVOfsE.cache +0 -0
  663. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/SB/sbp4RU9ZZkED2GdVorecTDy4jvYn-n50xnZKegm0O4g.cache +1 -0
  664. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/SM/SM5fbmdZx5zkOlx-Ew3h35WYAdorthwFlxV8D-YK_nI.cache +0 -0
  665. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Sj/Sjy621XNgWusTvwOK2VIUBu1J4RjF1ikL0Qpb9DHuCc.cache +0 -0
  666. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Sj/sJaBtEgGnDyK4w2MZCRivx7pvf1jHtLnUk0XaEFLwzQ.cache +0 -0
  667. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Su/Su7F55nrmZZqlJMtK6vD0x-kCOLueZOLaTdELnRa8R0.cache +0 -0
  668. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Su/SuIx7o7t8YNGmQ6TlTA-B-yPG3L177Q4m_xN_WW5d3U.cache +1 -0
  669. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Su/sUDZn7zjaxVdrgVOthcH5WrdjQdgLm4bj4Vwk2a7_Sk.cache +1 -0
  670. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Sv/Sv_PXGZQ3CeqMXw0uzPjg-lzxZHe6j5X9JA5MTEgmvQ.cache +1 -0
  671. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Sx/SxapMP8yv4qsju1PxGiUKq5aROBiGobTkyxBgWuF-iM.cache +2 -0
  672. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/T2/T298pUTbDsy0CKA5JR9eyO06NMeTIngDPmYxCox9gY0.cache +1 -0
  673. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/TA/TAmkjHUAviPKzIHmSa4W9lDitFDKH2od94mTYaFW058.cache +3 -0
  674. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/TE/TEuNJiggxe9dglCccHixjgdXq5qHDn4iG_AZ0Inq1O4.cache +3 -0
  675. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/TM/TMq0hT7VUkoISigp1ZcnwBxu8lXR11gIabDiMWJYjiI.cache +2 -0
  676. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/TM/Tmb9SmW6IzlBJhD-8QuvF4H5OXSbktNwJI8QXlyad6A.cache +0 -0
  677. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/TS/TSp7eFxtwiEu2LOJ9Im8MWyFdu0BCAJ-QqtzXnSrma8.cache +1 -0
  678. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/TV/TVtecNtEGPlOCLwg3V_4GTbLXhNrPGViGrlQffn7FK4.cache +1 -0
  679. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/U6/U6jOS6ijBN2Dj2cEUHxCXLrXDRKd3QlclR0LKn5s7iE.cache +1 -0
  680. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/UD/UDfY4BJxLwUzbd8Uk8NijI9-B4qFpkwaTcVIpMDgWVc.cache +0 -0
  681. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/UK/UKDjtkr0LrvD9qNuZiegDbCjOPhAqZ5FJ8DqG4UwZ3s.cache +0 -0
  682. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/UU/UUv4exH9I_-RAVa1cbb_EcU_gGAnYX6PwnV-7vp3Yjk.cache +1 -0
  683. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ue/UeLlNIuc3c_3Grm_1kZmXVceh1f5RxDhFr0rOagzwGU.cache +1 -0
  684. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ui/UI8ImsmXrcCN53DA8Ybfw6LQMSiewCOWHllVpjRzbf0.cache +1 -0
  685. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Ui/Ui_KsdJ0SbiY8_Gln37bRSh4vDs0TOZjlWG0yrzGUqY.cache +1 -0
  686. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Us/UsFUysI4EOHoqeHSs8v93VB0ony6B1SBtWDJ9o52WD4.cache +1 -0
  687. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Us/UsPuUFuSCth9IN-IT3n_zJYwyJVHdx8iCTw4Dak_sEc.cache +1 -0
  688. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Uz/UzARDCAuhsS0cs07RQgJjyKPsteWPmrg43L334TyOX0.cache +0 -0
  689. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/V8/V84_zQJnCvTv1bYtlRAyRxYGtqs4GE_i-ejI0T0VyuY.cache +1 -0
  690. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/VB/VB2A2eOHhqG9y2NFBAlnYHiXN-YwFSTN4Oemeb0VUeY.cache +3 -0
  691. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Va/Va8yHF5e7kp-cnD-wsjDErdgW9zy0BrPwQ5sdTyOmZA.cache +1 -0
  692. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Va/VajaAAKNj_FAHG6VouCUnhOtwKbWHWpleVZOfnqZvNE.cache +4 -0
  693. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Vf/VfgHErU0PjinX3iS64v8LV3fkJThgd-Xb3HzgRKIsE4.cache +0 -0
  694. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Vl/VlWcZrPWK9ItCiVrqCAUR5Jx4lSP0qh-QcpA5w5pEsQ.cache +2 -0
  695. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Vq/VqEP6z4sVjwSmwxPdxZjk3N1NKBiOT6F-uZ9JVt-1Ss.cache +1 -0
  696. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Vt/VtOXxo6_wFiWhlHFlvwCtBEuMLhU0K4Q52_hP3OgcVw.cache +0 -0
  697. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Vy/Vym8XRV34YPbOj_SZlWXgZSoFTXHg6csuht8QZnMFlA.cache +3 -0
  698. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/W7/W7QTj3lfOnoWFHrnSrszV4377wS9pnU_FaLqtahftig.cache +1 -0
  699. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/WE/WEhtyhHDW9G9LbH0ysojzEM4O-oy5_j9HKktObJFrNY.cache +1 -0
  700. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/WL/WL4ZnG_pgzkcOU-D9qLINFBchxsGSwse_SanFSIhZO0.cache +0 -0
  701. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Wr/Wr31HwPsUvlifIICf-IBrBZ6NAUyBttDG_I1l-k4v0I.cache +2 -0
  702. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/X9/X9DeumStYgRyuaDT3KyQV_j2vsuKCZAndwcQcgurgFQ.cache +1 -0
  703. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/XG/XGUusODmkQ_CJsMmD4LrlcAq5B6OgAWcgpWNWpDDHb8.cache +0 -0
  704. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/XL/XLrUK0k5WPpTNpUzZn-E56nHtSzQZiBjTm7aCqrmqf4.cache +0 -0
  705. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/XL/XLtv8iJiK2-YsC3Fd7MHRVrTOe9U7SeXCxWRkjBGGug.cache +0 -0
  706. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/XP/XPHwlHv1QRnzLSMNRQVBudyeCKiH7jAOv16zXabWo0k.cache +1 -0
  707. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/X_/X_5BWyxiLxcA2zmb_SwZ94b81ql7wyIwt-4fD3Bpjgg.cache +4 -0
  708. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Xc/Xc1kxyDATo1avjnKXZ8TJJbnh8ybsULUi9cSFI38wSM.cache +2 -0
  709. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Xe/XeGTWoC3OISo4jax9Ic9fGKNf8_WnB530WuPFYn1pP8.cache +0 -0
  710. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Xf/Xf4k5pTDnSHpBBT0Nf8VuauRKd8QksZMF5qBLKs4GkA.cache +0 -0
  711. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Xq/Xqs_fPeeZZtrWJ5MOOlN8POWfQuGPp37H6OO6S5Ngcs.cache +1 -0
  712. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Xq/xQ21YT7vbiDxeSOd6RijaraT4eDsywfDstTLYZjubNs.cache +1 -0
  713. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Xs/Xs31KIlMtWihN6ZUE4LTBZTKmjfrof-8m3tYhMRavH0.cache +3 -0
  714. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Y-/Y-96y81GYqnDLZHle8tUVdzc_umEnof4OMO5Qc5yHgE.cache +0 -0
  715. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Y6/Y6ulo91YhRwFuJJZ1MVeprC5ugq_gtrWsrYhlJPQinU.cache +1 -0
  716. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Y7/Y7ntEtdrvjoQO_i78kxQxw8VrL5yt3DdoQV_GZH4vX8.cache +1 -0
  717. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/YJ/YJx0Chl_53OVKzHYN2eQtfBm2dROqWj46b54BxclOK8.cache +3 -0
  718. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/YJ/yJA-fg5mxdhO_mgNTMMBKUjwE2UKlN--rrFTUvmM9CU.cache +1 -0
  719. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/YQ/YQ2rdVlnDHTiRhsSuDBet72HXlkot22-Zpqjt8JhvC0.cache +0 -0
  720. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/YQ/yQUzMXPM_yyNOGsX06JpveKLV8WFk_urdjGYDzqRe6s.cache +3 -0
  721. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/YQ/yq2bsMdvmARnaajziTwYB6k9fkbTNVojXmWw1X62gbE.cache +0 -0
  722. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Yx/YxK32o4DkB7fk2EZAA4CCIvt2jWOta1Y9gJOGhL0pYE.cache +3 -0
  723. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Z3/Z3eBMCob85kOtCJ8H7oR2_eOJwIbc_ksgpZ6_IY9wCQ.cache +1 -0
  724. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ZF/ZFKc0iFZZH0GvftUTp9_QsoB2DjCV5nzPu2MVF6XqTw.cache +3 -0
  725. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ZV/ZVF6ZjXPwwZRBbOv0RnubODiUoU3MxagAlPyL2BM4zc.cache +1 -0
  726. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ZV/ZvNwUtZ2Ixn_PLPF7GTUNjxLeWUhrGNiX4Exj9EnRqc.cache +2 -0
  727. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ZX/ZXRvqMr6ITaaBKk2nHGppboYaALj0P2BEzFoE_sbucA.cache +0 -0
  728. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Zj/ZjVTxpCNLsGp04H7Vq7_SDfzvGZnoCQug0uOZL5-cTc.cache +3 -0
  729. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Zs/ZSTzJGwCY3zCA-Ujc0zK4Ca5B4Hlq_KAH2CENr_XbXE.cache +1 -0
  730. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/Zs/ZsTX3lG1m0PV5smUnwv42vtqXWPqmhaWodHvGqe5ijI.cache +3 -0
  731. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_0/_0mXN0wulrhWAP-yh6eF0_Dr147SCtkAECEcYnRK5Lk.cache +3 -0
  732. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_6/_601QPIizFSv5VTI5YAEsYsXzx1wVs5jiJvRfj6sLro.cache +1 -0
  733. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_J/_JKe3zACWhYJ5veFxGtIjmyW2XPEd7zdYDZf0EOOxFU.cache +1 -0
  734. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_R/_RwOPB_ewMRb_4Hn0AzUtqyW5k8_D48XpMnLLjKTVpQ.cache +1 -0
  735. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_b/_bOM_a2EncHvl5H2S0gBNLd1pZI9NOk3syiUXVitawk.cache +0 -0
  736. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_m/_mLUACeUyVCGQ4an6TSrXI7noTgkBSO0PxV9CCRw4nw.cache +1 -0
  737. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_o/_oXAKeMgkrafsUDsfLTTWUn7OqDfzP7p4xKoRgz5Y_U.cache +0 -0
  738. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_q/_qNh1-rJGUAJi2CT8z6xLZI28vd8bVNqiN630WFMk6o.cache +0 -0
  739. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_q/_qrE2Ep60cUMM2k6NhFqQXwtf4k23Rdx2Arn4V3zHqk.cache +3 -0
  740. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_s/_SFMKe5oG1A5zcSjheDtATDkA0IXTg08KXEJyCsCW1E.cache +3 -0
  741. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_s/_SrLmCekkKAJFgsYeWW2OuIG_c7CIt20seMNZvz6_h0.cache +1 -0
  742. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/_s/_sDIEpIGdgvao995koYqhK3cYmnEjDlOUKC3iejMyU4.cache +0 -0
  743. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/a8/a8nq6bLJfEVZ21ktubjx2tzHTKYRy19rf8Fmnyc0jU4.cache +3 -0
  744. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/aQ/aQbjtMIKXwRIm3STHz-K0WiX46aH8nNmbSzSaU5xnAQ.cache +1 -0
  745. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ah/AhGbFZA30i3OtbN4cXW_-hkE8LDDB6g27Izssvv5z4k.cache +1 -0
  746. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ah/ahZSMhdFX5fhUnzFmHAeGvVBztsE0XMRoOmGBqtxMxQ.cache +0 -0
  747. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/b7/b7MItu2qDY4Odlym2il25kjd7SCIjGUa6CccUjCM4Rs.cache +0 -0
  748. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/bD/bD3Vcs8UOtveXuIlNs8T9KZgSHJaBdZiHaCKUdgE9EM.cache +1 -0
  749. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/bM/bMPiGPTtjQQqelwGAsQuY6d4Boftfkpax5DxGHNdnqc.cache +1 -0
  750. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/bP/bPj6VtSg5JxXYeq40tBCf1vw5CNOW6bjlei25ZLStoo.cache +1 -0
  751. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/c7/C78fSPy64jNTI3STHOllEYrHIO0ZdNZeJgW3EavAyoM.cache +3 -0
  752. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/c7/c71gObHWmNvxjnyNraygmUXq2TYIx-mBuvE_w_obpUg.cache +0 -0
  753. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/cP/cP5JSAPXhu89dO8-ZxVUxZ7_akgU6MPD1QliQ8zBBa0.cache +1 -0
  754. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/cX/CxsDoPlKSO9fvv8qYy0O7V4im5rp3bHJb8XA2ZmmdIM.cache +0 -0
  755. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/cX/cXZ0whkjSRh-JJsbjuoHxP9NRlxxy4EogoLg2A5IhJQ.cache +0 -0
  756. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/cz/czX4JJcYygAn-VDARgioXlpQIWGtFqww7L65eK8y7RY.cache +0 -0
  757. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/d2/d22CxX03APeR2ZmttlYyNbv6Idqt8SCYMUqcIyCrD_k.cache +0 -0
  758. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/dD/dDtUgeWZUD1TS2vn526y7GMIaeYUy5ph-LUO7DCzXpI.cache +0 -0
  759. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ds/dsK9ODlCUwE0aNr4yLu3G7aiQn1JlwHqicAnvHRM_CA.cache +1 -0
  760. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/dx/dx1-d2apOJCmuzRww7NFa7Gl-eJNiAprC_eS1UV9Kpc.cache +3 -0
  761. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/e1/e1aoqBAUU3VCNw5szBPk_ZEtr6wblxiPhdr1ZbcN-d0.cache +4 -0
  762. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/e6/e6CgQifvK1vGIGG3iM-H-P_Z4gEAelvog14BXLtKisE.cache +3 -0
  763. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/eE/Eec5F1M7mRTvby8Q8LTHyBSttghecYB5UndDnGGt5fw.cache +3 -0
  764. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/eE/eE-9zInd4X_JEY4l-zyUBhhfzafsgcqTPRiiUm_qWA0.cache +1 -0
  765. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/eg/eggm81_lX6-bas5OvY5P_1YQW25tEySux5lov4Rk9pw.cache +0 -0
  766. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/eh/ehYUTEWlNuSS6ms7P4wYcCelo4FgutPOPXb4ME7Bcv8.cache +1 -0
  767. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/eu/eupaIGsd9a11t6jSg8ScWt8YgNWMhFD0GNC55BtQovQ.cache +1 -0
  768. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ez/ezUZXGyluB2m1_Tzi146GvY_zoF8HhG2avy-5XZHBsg.cache +1 -0
  769. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ez/ezeMryK4WTeZ38rQU_OWH9EMigfPomsFb1QHOIm1vLg.cache +2 -0
  770. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/f-/f-RuZptQyykxcCZWrBfsC79I8XZHrSJ_AJe6H3iKc7Y.cache +2 -0
  771. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/f_/f_1W7IKtz2Xm_502rSHkPMXrCDESiGPSfQ1OH8pXcF4.cache +0 -0
  772. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/fe/fexWNhjPDlnWaUtIkn_HIsRR6GJVjMUWPBetnx7iinc.cache +1 -0
  773. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/fh/fhgWl6xIviEKLhUHEi-HpXAjZRqyUmHUylm59U7Wtns.cache +3 -0
  774. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/fi/fibI5KxGuSnKHEwi2cryhkeJF3Uvxo_BYIyHsU0KeHw.cache +1 -0
  775. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ft/ftxYqqnkcr8jEUI8n44MkKeJ3xFgb6t0QASSkRKUp6M.cache +1 -0
  776. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/g0/g0hvkOQcr_1ZpWawxKhA7yBXX0-rmCzcXYo3tEJv-no.cache +0 -0
  777. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/gR/GrE8pilV6kZeUQKg3oYGReZTegum_liU6iTUCD9_ufQ.cache +1 -0
  778. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/gR/gR8kJ45Q2oRmzdf2m0Xs_g-S2A6pmCy6wz7Hxo1Fc_o.cache +1 -0
  779. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/gS/gSKlf9trjKFCfSN-JYH1mqSLfBKMaapncLXYEE6tUAg.cache +0 -0
  780. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/gm/gmDNM_OTJFxgARTDhTW0v8r6qZ0zYlJ3BuLzibNTOVg.cache +2 -0
  781. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/h1/h1_ZDS3GQP3FuqfDYkSm2EE-hUlrS0iA7uJsB-Z7wos.cache +1 -0
  782. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/h3/h3kOhj2sOpQwW9lCd9QyLIInIuE-3Qu37fkw2pcPuws.cache +3 -0
  783. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/h7/h7Vxx04AVNPkizMCZxiCXW2N8h1Y32HSf-ssHmDGgfw.cache +0 -0
  784. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/hJ/hJRq9Gz4ItDNyr8Bcm5zQqgIX1zvZ1lA4DbIdR8OhB4.cache +1 -0
  785. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/hM/hMhiAV1rix9La1wtdx-qXA1H3uCIfPkXFMfuz0xK42M.cache +1 -0
  786. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/hO/hOiojgH9_mEuK5eNCaO8CEOQhYHJJ24ssz9mrQffSbg.cache +1 -0
  787. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/hQ/hQ6luOeld28LrjX-lLFmiVGqAofxi7Esd3701ZWuSKo.cache +1 -0
  788. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/hQ/hQtVdUOGQoSarBzyJHCzyqEOXvsq7VWMym8GoDR6KqY.cache +3 -0
  789. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ha/hA8pJdxdJ1cacPrVt56xOSc1r6z90EfB8OCgONQUrMk.cache +1 -0
  790. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ha/hAv7TIkX-EpeFEbpItiWxsDB1ayA-Dm-WS-pIPQN-6Q.cache +3 -0
  791. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ha/ha0XWMMXFirNTFJzwM1_9w94v92w8PFD3dc4mR0oKI4.cache +1 -0
  792. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/hf/hfph1KKX-RQtNSR8KEaoXDGOCCKNWLNDBekNCdIG8To.cache +0 -0
  793. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/i7/i71GHrCNOOQZZMCT6zJHuHpojm8CZwLEMz3sp4f6Ti8.cache +1 -0
  794. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/i7/i7zXXzhnXMFFiVo1qdltKk0QTyVif3-_T_xiRPze2AA.cache +3 -0
  795. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/iC/iCx1IIfxa_4vivG51yL6D5wtoAhEPiPNDXH7ETeMX0o.cache +3 -0
  796. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/iG/iGyoh4fKy-QGohYDXuiWPERucEri5f0h5oy42eocsKA.cache +0 -0
  797. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/iM/iM1KOiz4_AXIOqI8EyNp28u7rlBINQq12OgXLf0zHz0.cache +2 -0
  798. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/iN/iN1EZuYbFCuUtl65sCVWugUBwkJcBsw8c-56oN_lZjg.cache +0 -0
  799. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/iN/iN2ql855v08hr5GaN3BKD0QBPf1EHZ3i8pGK9mnBEjk.cache +1 -0
  800. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/iO/IoOcp1GcW15q8NuFUhbrb2z5f68wugh6RFXUM-jkGfA.cache +0 -0
  801. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/iO/iO-7LedQ0cv2cK3jzuvxfzETZUHIpxnkJMJvmdnN0n8.cache +1 -0
  802. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/if/ifEafJ0eJC9I2hzSugO9eZbCw6pFqfu8JuGG12FiskM.cache +3 -0
  803. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/if/ifq4msUzwN_ohD9k5tabw5olcPsOvGXP1jf5OdFZr_A.cache +3 -0
  804. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ii/iiU8EExvFI-QG1EPe2CilTKNGCVZKX-NHRjDkseWOzw.cache +1 -0
  805. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/j4/j4hPrYGUO6-Cz7vtgPZSevM50UedsLErwWs1Dhygqmw.cache +3 -0
  806. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/j7/j7G8H_anK7rhGruTS3TeTt78r3yM2UR0oIUqLbJStNo.cache +1 -0
  807. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/jM/JMa36uOPiUv34whRl0vTh_oT-ao__-5e32_KhjfdEQQ.cache +1 -0
  808. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/jM/jMINCKhdy3qGSHRmlNax_yHfwmqqJSIfdzv76ZVIgOE.cache +0 -0
  809. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/jM/jMU3nYSozJBftGj8_Y8P_AAThQ23sYFB8XR34karyD4.cache +1 -0
  810. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/jg/jgKyAj7Fvja_8CpDJ485D1vFzEjoZJsv19s2uvyaImE.cache +1 -0
  811. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/jj/jj1OFShdyaJHH0lKAa_MUJZh_H7sMMhrAMnCFPFQw_g.cache +1 -0
  812. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/jq/JqoghonoXDIVuCKz30l0_1412PDFldIkOmzIXdsUMOA.cache +3 -0
  813. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/jq/jqvfzI9T_RKJXyaHFJslplnZtt_j2YLAFXfsxtDimRs.cache +3 -0
  814. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/jy/jybGmV7UPmCAq26ARutmzijSDJzLUVgpSKAChtGusXI.cache +3 -0
  815. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/jz/jzcwbrrvYvkCkqknUHSaP2nY4Y8kbUyYqZzjf56BC2Q.cache +0 -0
  816. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/k4/k4JR-tf0vPZSED-C05pdDg7bKEpjwVEikSNkZZQy324.cache +1 -0
  817. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/k8/k8Ve61TaIFel7-h3M2wZeaAJ-pEH0xANsMC3_03RlQg.cache +1 -0
  818. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/kE/kEPZXj2oCSiNtUdUjKueS_eRaNjsqaQU_9pEyAEHPJA.cache +0 -0
  819. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/kL/kL42-UNQ6RkC2P4BqLoBV9yOz3W72JsfPnp2teRH9eA.cache +2 -0
  820. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/kL/kllhrlAAimsEJMtI-8PDecEtix4w7Fb1dsx_KvKvsCI.cache +3 -0
  821. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/km/KM4x_RLQBiu0-oxnT1_UgQauabng_hpsdKb4jzxnySc.cache +0 -0
  822. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/km/kmLCY24eZjdYLy2gfuHcNn_TrqFRfWHphdQbqdIKVZk.cache +1 -0
  823. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/kq/KqrWtOkRy0HzCRM5m2E-feR9IIuN7IREqgsMpgSC-E8.cache +1 -0
  824. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/kq/kqf3lzLTG9paYmKQNQ2wDxOs9Okv8g3xw1hdS2MBB7o.cache +3 -0
  825. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/l1/l1Xa6b_a7G8mfelvgDwZen6THI35uZI0nbwyOgFVQ24.cache +3 -0
  826. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/l3/l3bGE7RUC_Bc5JArR2yRfYaEEWep52-9gmSdwddyM1A.cache +1 -0
  827. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lC/Lc3NyXfONWrdE74VcV99bILO-yTa8LZRush_qj7xZVU.cache +1 -0
  828. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lC/lCbR1Fq-_kaloJiwYSSO5pZ0vN2dLkQqAY1e5ZP8Yr0.cache +1 -0
  829. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lD/lDMumgbXJ_xjWF_hIsKWYYSiWG_k-ureSaKNJ59pOOk.cache +1 -0
  830. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lD/ldBmaC5bQ1m19eMUBCCNkPULZUV9oOMg6aZsNN3FUNg.cache +0 -0
  831. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lI/lIGsOzOVgLusuzhgDY16gOWW-U-MYuFY9RT6xB_-BaI.cache +0 -0
  832. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lI/lIgs1HKJh8USUzDmw1p6u7ZwWDyyBSEvQSY1pzfZQxs.cache +3 -0
  833. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lI/lImgKssI3Gqis1z2gj6qnt1W3TzOe6Kzhbwy4Qqqhto.cache +2 -0
  834. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lI/liE4Dv1tDwUfFx8XdPPf_jwrqw2IeIm2impMau7bCjA.cache +1 -0
  835. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lS/lSgTz254eLHbXIkBBjKZzShFOZ0k2vKyVAQCBygEtnQ.cache +1 -0
  836. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/l_/l_9qswNypFQUo-fhla1UZLOsvfDauSdtyjiUI8ZDM0c.cache +1 -0
  837. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lv/lvs8zA-bCfomBENt9yscKPdAYL0ujCtPCgiVqPMjuko.cache +0 -0
  838. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/lx/lxxXcPJaYjU8GmyxD4dCdksNFsMCmEbpp3j5BVGv9-Y.cache +1 -0
  839. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/m9/m9BvvHoXXar1_UahDfaALDU6GR3oda_gilEKIbz3GRE.cache +1 -0
  840. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mA/mAU6I8ZXCwGNimFEBi26uFkREWn-6S5uHr13J0LsDrk.cache +0 -0
  841. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mB/mBuv812EfHw0uDkrHTX8HiVD0ZPPyLPu9ZLw1S0hfuo.cache +0 -0
  842. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mF/mF4JJ_Dg6Yk0EXllnIO8mZxPYzwfGQm59lTZbcr8AaQ.cache +1 -0
  843. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mF/mF_3xyRBbliJp1XZa06sc-95unYp5DmtwaHt9h3j-rw.cache +1 -0
  844. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mM/mMMNzSP7UG-g6Vjg_MQyUAvKtTBk06ijtc5y5bnxLmk.cache +1 -0
  845. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mT/MthdGaxhbUYz_JeS-I3cLe2UAL3Kfjq05X09SnEMPyM.cache +1 -0
  846. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mT/mTrGDkWbINl8PHCphC0do-LCveOVA9nzLg12OT1fCDk.cache +1 -0
  847. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mU/mU4O9QDqu9j_MDaL3FX55hGohTo7bcxGkh7DZUZxp2k.cache +2 -0
  848. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/md/mdHEHx8LaupDr8RBnlPcCLcVaXXXDLVkDwkA5lyMo5A.cache +3 -0
  849. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mj/Mj7A9lbnqq8HWQ4oZ_Ft4aWhsRC-UIDzrkVZ8SWrEPU.cache +1 -0
  850. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mj/mjY2aZZ02nto2GZ71_yAUjF5Jb1XDt7cMy5msyjuThI.cache +1 -0
  851. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ml/MLS_zZIS5DmriClc8fGrpnAxK5uJapFBikpg76g1Duc.cache +2 -0
  852. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ml/mlHzBqLxfvuLe9fry0_wF4rB0f3s3EsUGMbumBxnHmI.cache +5 -0
  853. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mv/mvFTEWDWQzFq6WFWr1DqkBC6EvJKCgNmI2kmfsIZBMU.cache +1 -0
  854. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mv/mvQEgM0HM-GtCAZ92hVVlblbt-hNw5fdiDyLM3SRfAI.cache +1 -0
  855. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/mw/mwmw5J7pM6zIS_FniRCTubZsEcJczPieQMDS-jRr7Ns.cache +0 -0
  856. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/n6/n6zrSojyBXtqLGUeRvMSsVeU3vVRSyWAOMJ3-2ZTXfk.cache +2 -0
  857. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/nB/NBlxI-WSpIB-yU7yNiFNwSdrNc8Y5uVYBU4m3k8NMHc.cache +0 -0
  858. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/nB/nBsD5HV_9M69r7tHiL19GN0LmBAzqY8RP_ApnYVMniA.cache +3 -0
  859. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/nF/nFqAfMIevxw5LtKHpaVU0fgrDcsjhhidsuxjAhVfY7Y.cache +1 -0
  860. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/nc/nceotsBomMPs9HohTZVjHB8pNWs5WnsiJDVa2z3UpVU.cache +3 -0
  861. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ne/ney1ugvM5ZS3M4TzOiBSspU4X2DbzLfnLG6v4wei8_0.cache +3 -0
  862. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/no/nowvdfUilO7NiY1rLAaDT-RBvR0mPRqQCWpJ2BlS9Lk.cache +1 -0
  863. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/nv/nvnQXO_8lM2RaEMDm-Wv_W7nf65zwpLOn1nvG9t6TEI.cache +1 -0
  864. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/nx/nx3CLRs_l0mbysXJWMfsAYd7rKkl15x2I4ZfGfV57_w.cache +2 -0
  865. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/nx/nxOONpvff5VUJifSCUzggvOKfBXTIVFE0st69tMiyIY.cache +1 -0
  866. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/oM/oMNuGBm-y8fPi5O0c4egebZg_F1EBmzMM4vc_lRNS2M.cache +1 -0
  867. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/oQ/oQ1DKgAqyN_AkODT8zHD6TvRX5m9b__HnFvOwaKKmYE.cache +3 -0
  868. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/oZ/oZRQTVccot5NMTnpXJba9RtEcwHRLiYCunf7mbm81Tw.cache +3 -0
  869. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/oc/OcU21UkLkT2QMVnf9wO2f9BINk8O88I3CZ3lfxqk2x8.cache +1 -0
  870. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/oc/ocTuFzkL8tmTYnTL_d3O3xOto5Wc1HrImeAvZwZrHoE.cache +1 -0
  871. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/ol/olazfxuT7OksvF_Rqr2lPBMqqytqKEYL7nLAZDVavUc.cache +2 -0
  872. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/op/opkGxVjV6xtEa9vtApIAq9WKw_t6IOzg0HgJbEBX_3I.cache +1 -0
  873. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/p6/p6g6sqDsRPD1NBFGwR3UWLXMirZmK_D9jxfdi32MtWQ.cache +0 -0
  874. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/pR/PRyRtttFlzFBwZ4VoIzGcSG201nboGJf4jeveniG74o.cache +1 -0
  875. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/pR/pR_AQsUMCZwL4hqegKkKT_POFmxemNCPxPi3OVtbLi4.cache +0 -0
  876. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/pU/pUzeHy_OOu9XEG85P4TuB21ZuXn28kdKYfVRec-cnwI.cache +1 -0
  877. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/pb/pbQlAMyKR3C6G3yVnpQUyeATveOEcCGPLkTMDS2qrmI.cache +3 -0
  878. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/pk/pkksBjc53O7xe4oRTWfovtC2Kd7SkSrRVF1Wzoh-Yww.cache +3 -0
  879. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/po/poAvjmLcrOe6zgrDUyTrgaPeufpd28qusmGXxa66q8s.cache +1 -0
  880. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/po/ponYKws_LHGiA09xiK8QHXxvefFF-PzL33KRtp4ggzo.cache +3 -0
  881. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/q-/q-jdRzVKeIUdBKUZYPPMTYxnGQZpNqH3XgRnin5pQ7I.cache +3 -0
  882. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qO/qO9GO2hMcJbtAM-KW6GtyNriqw6V6zeexYlJxAj6hP8.cache +0 -0
  883. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qR/qR-EhZ7MnCL0FQK1GR5ojJ8DL5JbJigYiEw3fhC8-1M.cache +1 -0
  884. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qS/QSwjKX-_IyU4hJ1EF9yT2Us5O0I-IgQENPsGTAnVCeY.cache +3 -0
  885. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qS/qSfd_ug_Xza4_vkD7fLj8fbheFOWx1Q_PAJB_SR_pRs.cache +0 -0
  886. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/q_/q_VJnhJYyBoSoHWZ9w-_OeXuU7xi-Q4VIebfpopKokk.cache +0 -0
  887. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qb/qb8bL2VcoO9S5Z-UgASbd4o8dfmLjoamRgQRovAwQpY.cache +3 -0
  888. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qb/qbyqVkP2JFOGk4vaDBOAO90RvgddYSbTJQI0GdkuYj0.cache +1 -0
  889. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qu/qu4j9tasMUscoonY-3F6zcmQ54v70p_EDbraEV6F3lI.cache +3 -0
  890. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qv/qvxABYt_tsq1txK-SsaPhLriSI8nFvFu_RfVE-wm2EQ.cache +2 -0
  891. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qw/qwqIyguA5wFo-c5Udn-3ZlXhWUo6yI6FXNYe_vNg3zc.cache +1 -0
  892. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/qx/qxG6T191TpT2O61BoBBFPygYO-ChqNGB1EvRLOz7zCo.cache +1 -0
  893. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/rC/rCvL431ZIwByv4CwiWOGTyVrARgvsquAi9Yc__Sd2fI.cache +1 -0
  894. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/rJ/rJZdLrWVorY_eLgu0qO24nnrhRmG1tCnEVBMRa30_rY.cache +1 -0
  895. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/rW/RWAa2ytbz5kNA9bgHXa3fIMSCn-56eYhlpXQQFs1rKk.cache +1 -0
  896. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/rW/Rw3AqKBDDa0hv2hDncHsBCNjieppksE6w1VzthKy7To.cache +3 -0
  897. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/rW/rWv8CC3IFA4D5h-PSd8i3L87xojeeNnXWNwhu6SZuFY.cache +1 -0
  898. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/rZ/rZsZvZ4axnj52j1vaXhK8q--3D-PKMlmAtctY-N-reI.cache +3 -0
  899. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/rZ/rZxIoL5YXC69cj6AvJSEUUsIwdlCDt5RGjko2jpYUqM.cache +2 -0
  900. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/re/reOqYiu2wqavAV2w2lDl0kKaHnJom93xoa39NqKKgWk.cache +3 -0
  901. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/rf/rf5Xm-Eq6VPgcp7ps_aJarFoqAICeOheM4fW7DCLNUE.cache +1 -0
  902. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/rl/rlcguP32SoEjb5xNJ_F9LFbTKKW0xPYWJlVci8CoC0o.cache +1 -0
  903. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/s9/S9gU7PXEaeRZNHC3a7nXXkQMz0lvq1gaZ_cJR5HyjZo.cache +2 -0
  904. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/s9/s9DI_Pu0Pj1gAP4hw0AJCY07BTrTC2wjmHgMFrb5YMY.cache +1 -0
  905. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/sC/sCIE1sgnxJ6u8RotnTm7p4982RF-DUiVHtuw7LTCCWM.cache +4 -0
  906. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/sC/sCNM2nea2ILcY2Ok7jryHeVDFwOa-Dz4OV4RtTbmPB8.cache +1 -0
  907. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/sY/sY_eX37-SwGfn4DdpQEuxeh88T1cpn2wtuU58KkHt6Q.cache +1 -0
  908. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/se/sepIoCoVmKY5OwW59MWbgObT6JTWX_C3bFGHRAJp7kc.cache +1 -0
  909. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/si/siIygtKhObEk2o68Bu4gceNNi_6qjwKOy7odi4pWm6E.cache +3 -0
  910. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/sl/sl4T98LJhUmiSiyhdzH7jzf0Ulf9TN_HejcCElBoZpc.cache +2 -0
  911. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/t0/t09iJCLEHDUsaA8TJIKLuKjF_KMgEvSYtSrcQTW_EG4.cache +3 -0
  912. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/t1/t1G7aHnIxpllzDHowTyOaOEETtPKE5ExfvVsrqGQu7U.cache +1 -0
  913. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/tD/tDutWvJqgQV9oyu_Hq1GwztNtuao5iPGMCzLfU5l61E.cache +2 -0
  914. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/tG/TG9sYfhtpqsA1e7NiRFoxOVUq4lYSeiBAsI8zZfZb2E.cache +1 -0
  915. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/tG/tGhyONiy1Qd94i4EZBY-6oqyXCkrZsJ65tscPbhJr2E.cache +1 -0
  916. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/tT/tTJ4NZGgxNRuk5PWPSlB4Iv8Gwlfz09A3LvFZ3-ca8M.cache +3 -0
  917. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/tk/tkdHqOcLChruWoojV7v2gTTYmprmWprXxltoSyXec8c.cache +1 -0
  918. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/tr/tRo-MNZbEi74JlTNnaROaIPP6Pkae4liBhgs9scYYOE.cache +3 -0
  919. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/tr/tr4Kqi2gHEwOCC9mRVXDWTZKzyV53QiyIlvRALaUjg0.cache +3 -0
  920. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/tx/txwe66CUY5LLuzxV9kKXNm_iqZOuorKC-p3L2fZMbkg.cache +0 -0
  921. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/u5/u5j8bvqkCgreJ_HjBuOllLmahDTw2ALBCG_T_3c2YJo.cache +0 -0
  922. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/u8/u8xEsfwZHwv28WCvM81ZtG9rGeJlasTWuLjAnKT0T4Y.cache +3 -0
  923. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/uL/uLEwTbbdL8Opw8t6dqpsB_7uUT69J3ryQhXW2LBd0N8.cache +1 -0
  924. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/uR/uRjhD29m8WGYRPeMHLy8pzCTgYfr_WtgvLo-chiQwZc.cache +3 -0
  925. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/um/umOvg552J0HtpkqHH3pEgTTLCyp8f67flxJ5MAVYPrs.cache +0 -0
  926. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/uw/uwLxURkMzza0XJ63rxrCOU1qchHoLZO-Lzo6uMu9DFE.cache +1 -0
  927. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/uw/uwvHUyo5XYHpf717DgbmTsv3d3zuUPKPKrgsx-85u24.cache +1 -0
  928. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/v2/v2lW6dtUJLbwuTJYDCh0rvQs7s2tOmBOEuSGIV8dSIo.cache +0 -0
  929. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/vC/vCydQEog4Qb4lJxuqkce-z5vuon3ZX_z3FBKVIQd_ew.cache +1 -0
  930. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/vx/VXp7HwteQ9JRvD3ucnuRAXzOVnVbkf0uohkA-Y7GxZM.cache +3 -0
  931. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/vx/VxD6yO1pSU7_3K1FY0SmXbMR3J_HKV8z2GDrxt_6vWU.cache +3 -0
  932. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/vx/vxTZfn2AUtKV-2ASKmnqUCxP1MyzaFdIy87j9t-yhTU.cache +1 -0
  933. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/vz/vzQvdVTjAXLfK_cl8Vfk6ZgmcZIUzPRUutfBZ4hdvyE.cache +0 -0
  934. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/vz/vzybTBEUhpRXo3e2VhnvT2ao-qMkDK_ZeiUpX36I_Gg.cache +0 -0
  935. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wB/WBqgYT6StOBq951gYU36GT0E-TpHOOnJRm1v7E2G2zM.cache +1 -0
  936. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wB/wBLTAIWkqdLI7kqAhWl8J9OggvhxKhP67vbOKXZHwsw.cache +1 -0
  937. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wF/wFKiSy9VpgZe-dfPOH3eldAh7u6Fi109EwCZGHo6SCs.cache +2 -0
  938. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wN/wNa3xUWOHqypPjy8S3pBxiWaMnlJLYtID0JZQoesOHg.cache +1 -0
  939. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wP/Wp3YgBk2X-mXpCBxixEqbTD40-ylI60gMm3YhBdB7Cg.cache +1 -0
  940. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wP/wP81Zjit5Y3iE_DdwhSHN2eIdTrOb0LvfY9jJB39CI4.cache +1 -0
  941. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wa/waF1aNJ2Go1VKq-yAYf3ngWceqxrC5KIY1iH7VmN5YE.cache +1 -0
  942. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wc/wclqcXb80448_VKFGlQ2QVADskG2wEB2Y--OkCNl4og.cache +3 -0
  943. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wh/whNJgVLsgFshceX1wr6ue6ajoYsdYDiaWcwy2JxmnMU.cache +1 -0
  944. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wk/wk1UfgM9Vths5KIRvnmOeJp6a2wV33h29GYgA1F1bYw.cache +1 -0
  945. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wk/wkSOuLScZQXdMVRs0OiJMtdsYFiDHIK1Y-2qp6D3eu0.cache +1 -0
  946. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/wz/wzJabJ5fCaYFNLc5Y7xrJl6q6_ofBX6QqHoV22jdESU.cache +1 -0
  947. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/x3/x3rtSXu_xiVU10wLHFk4ZKrjsu71XE3C1Ca5Gr3LHKU.cache +3 -0
  948. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/xI/XIq9k5cICCs__17IM7frU3c5QZ0XZCOLGe8H1svFkJA.cache +3 -0
  949. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/xI/xIjlX9FeRzNScqL9BCJsKx6UvRBxmm8vdzKfl6iaF6A.cache +3 -0
  950. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/xJ/xJWYazg8Y-WynFiWi_aBjExssVu9gBUW0CV_JETIDGg.cache +1 -0
  951. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/xv/xv6DLcfXBehnbc1jniOi82SmMYE4WL_pIn4OVYg0FvE.cache +1 -0
  952. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/xw/xWt6bF1RLgfcHqvsYN9HV9_lJNq0mjFCM4sUXFyoQoI.cache +0 -0
  953. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/xw/xwZkDc7uGxyDR1Ew7OStyBEc2OkB2I2agn_WYJX9EAA.cache +3 -0
  954. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/xw/xwg_JNzHPzfJbrLhl02_eURM4Gw77-GA248j65CTxSQ.cache +4 -0
  955. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/xz/xzDFM0Hu_rdNJYsIBrxcRr70zobHv_TSNDrZB-cZYz4.cache +3 -0
  956. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/xz/xza6UENuqnm_wNzEUY0Yby1gnTHt4ttgOj7dxUAycps.cache +1 -0
  957. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yE/yEoVzhbN300zuIgjPIEim5EFwjvOrw8OGW0nubwO0g0.cache +1 -0
  958. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yE/yEqqlMHGsgd1nZZmV78vUHeulv6KYYTSCze4xjfG-l8.cache +1 -0
  959. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yM/yMOX1_UN6v29M5V5_EO9FBLF79zvl2SuUrbiLuVHlYE.cache +3 -0
  960. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yO/YoC4edMUTBwVzS8gHxNmQ9sX6gZ6nAxVtu6xFu2QH_8.cache +1 -0
  961. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yO/yO06rvaejiA-fMiVVcGIkwJzTNGfgQSJklYDmurl4EE.cache +1 -0
  962. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yO/yOR406JijlH5eQlWdlPXpaVdaj5feRF49rPdGm2kDYU.cache +3 -0
  963. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yW/yWQEb5IOH2RdFe2V5beyhlP8KMU231fr29X7XvR7w9w.cache +1 -0
  964. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yc/yCSglsWl0KQOx-Ef-6XfZzogpsZbfduZ6pkxpRQjVYI.cache +1 -0
  965. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yc/ycMUa5ApqwTVHPsCf_9boJ_AyveVMCT1h_tGP6Z_mj4.cache +3 -0
  966. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yd/ydwowT1exqyhJLVQeQVZQ7HEGvRFaJ91KeDYnmBQ4vA.cache +3 -0
  967. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yh/yhivNfi1oWyHUxKABQXoOI7KrRfnPhCkXGQ11_xii2w.cache +3 -0
  968. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yl/yl7B0TKkkgi7vRlEreN86Ojdcfu5Oq8c8VydQOjlZfM.cache +1 -0
  969. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yn/ynTRbihy3wwqnJM-VBa4KSoyypRu512_UWV3shPCa8U.cache +3 -0
  970. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yt/ytS9ld5Bz2qaxkQqrzjfvImZHq3vBClCVNdTAJA0_cw.cache +1 -0
  971. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/yt/ytSofzNwP69ZJyTEC21f2VT0y_YPJBV5mxvFbSyVN1c.cache +0 -0
  972. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/z-/z-BDBPCCQU4vYR8XI0Me2LsXI7-IhCNDEewWoMdzgUo.cache +1 -0
  973. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/zE/zEoto66t05MKxkAXIRfLLXB7epX5Z6LOf32UbWPGXPI.cache +1 -0
  974. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/zQ/zQhh_ttbvyD-MXQuXQ9QH85ib4HJlNxICU06ZpbTYLk.cache +3 -0
  975. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/zY/zYCrDXgFmqqKlpXFZKiULk24_WEUrUguhJpFtBfGJ0s.cache +0 -0
  976. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/zd/zdBRqE6T7pW1OvcRZiJ7XTNDvGu6y1iyLSYsNzk1mGg.cache +1 -0
  977. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/zd/zdlsms9UJmz8qZDX2buAIRqw3zveAPZp9dc8obcz5ok.cache +1 -0
  978. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/zo/zo0R326v6xzyUkrXtVe7V5FiRoKLqt0aMFXxH0DzjoY.cache +3 -0
  979. data/spec/test_app/tmp/cache/assets/sprockets/v4.0.0/zw/zwN79gZh7SGrEhBjxL7lIkA28UV-U_k25fPOaOTG5w4.cache +0 -0
  980. data/spec/test_app/tmp/local_secret.txt +1 -0
  981. data/spec/travis_spec.rb +9 -0
  982. data/vendor/assets/images/markers-matte.png +0 -0
  983. data/vendor/assets/images/markers-matte@2x.png +0 -0
  984. data/vendor/assets/images/markers-plain.png +0 -0
  985. data/vendor/assets/images/markers-shadow.png +0 -0
  986. data/vendor/assets/images/markers-shadow@2x.png +0 -0
  987. data/vendor/assets/images/markers-soft.png +0 -0
  988. data/vendor/assets/images/markers-soft@2x.png +0 -0
  989. data/vendor/assets/javascripts/jquery.timepicker.js +1158 -0
  990. data/vendor/assets/javascripts/leaflet.awesome-markers.js +123 -0
  991. data/vendor/assets/javascripts/leaflet.js +9 -0
  992. data/vendor/assets/javascripts/leaflet_google_layer.js +177 -0
  993. data/vendor/assets/stylesheets/jquery.timepicker.css +72 -0
  994. data/vendor/assets/stylesheets/leaflet.awesome-markers.css.scss +88 -0
  995. metadata +2553 -0
@@ -0,0 +1,807 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: events
6
+ #
7
+ # id :integer not null, primary key
8
+ # description :text
9
+ # end_time :datetime
10
+ # locked :boolean default(FALSE)
11
+ # rrule :string
12
+ # start_time :datetime
13
+ # title :string
14
+ # url :string
15
+ # venue_details :text
16
+ # created_at :datetime
17
+ # updated_at :datetime
18
+ # duplicate_of_id :integer
19
+ # source_id :integer
20
+ # venue_id :integer
21
+ #
22
+ require 'spec_helper'
23
+
24
+ module Calagator
25
+ describe Event, type: :model do
26
+ describe 'in general' do
27
+ it 'is valid' do
28
+ event = described_class.new(title: 'Event title', start_time: Time.zone.parse('2008.04.12'))
29
+ expect(event).to be_valid
30
+ end
31
+
32
+ it 'adds a http:// prefix to urls without one' do
33
+ event = described_class.new(title: 'Event title', start_time: Time.zone.parse('2008.04.12'), url: 'google.com')
34
+ expect(event).to be_valid
35
+ end
36
+
37
+ it 'validates denylisted words' do
38
+ DenylistValidator.any_instance.stub(patterns: [/\bcialis\b/, /\bviagra\b/])
39
+ event = described_class.new(title: 'Foo bar cialis', start_time: Time.zone.parse('2008.04.12'), url: 'google.com')
40
+ expect(event).not_to be_valid
41
+ end
42
+
43
+ it 'can be locked' do
44
+ event = described_class.create(title: 'Event title', start_time: Time.zone.parse('2008.04.12'))
45
+ event.lock_editing!
46
+ expect(event.locked).to eq(true)
47
+ end
48
+
49
+ it 'can be unlocked' do
50
+ event = described_class.create(title: 'Event title', start_time: Time.zone.parse('2008.04.12'), locked: true)
51
+ event.unlock_editing!
52
+ expect(event.locked).to eq(false)
53
+ end
54
+
55
+ it "can only be deleted when unlocked" do
56
+ event = described_class.create(title: 'Event title', start_time: Time.zone.parse('2008.04.12'))
57
+
58
+ event.lock_editing!
59
+ expect(event.destroy).to eq(false)
60
+
61
+ event.unlock_editing!
62
+ expect(event.destroy).to be_truthy
63
+ end
64
+ end
65
+
66
+ describe 'when checking time status' do
67
+ it 'is old if event ended before today' do
68
+ expect(build(:event, start_time: 2.days.ago, end_time: 1.day.ago)).to be_old
69
+ end
70
+
71
+ it 'is current if event is happening today' do
72
+ expect(build(:event, start_time: 1.hour.from_now)).to be_current
73
+ end
74
+
75
+ it 'is ongoing if it began before today but ends today or later' do
76
+ expect(build(:event, start_time: 1.day.ago, end_time: 1.day.from_now)).to be_ongoing
77
+ end
78
+ end
79
+
80
+ describe 'dealing with tags' do
81
+ before do
82
+ @tags = 'some, tags'
83
+ @event = described_class.new(title: 'Tagging Day', start_time: now)
84
+ end
85
+
86
+ it 'is taggable' do
87
+ expect(@event.tag_list).to eq []
88
+ end
89
+
90
+ it 'adds tags without saving if it is a new record' do
91
+ expect(@event).not_to receive :save
92
+ expect(@event).to be_new_record
93
+ @event.tag_list.add(@tags, parse: true)
94
+ expect(@event.tag_list.to_s).to eq @tags
95
+ end
96
+
97
+ it 'uses tags with punctuation' do
98
+ tags = ['.net', 'foo-bar']
99
+ @event.tag_list.add(tags)
100
+ @event.save
101
+
102
+ @event.reload
103
+ expect(@event.tags.map(&:name).sort).to eq tags.sort
104
+ end
105
+
106
+ it 'does not interpret numeric tags as IDs' do
107
+ tag = ['123']
108
+ @event.tag_list.add(tag)
109
+ @event.save
110
+
111
+ @event.reload
112
+ expect(@event.tags.first.name).to eq '123'
113
+ end
114
+
115
+ it 'returns a collection of events for a given tag' do
116
+ @event.tag_list.add(@tags, parse: true)
117
+ @event.save
118
+ expect(described_class.tagged_with('tags')).to eq [@event]
119
+ end
120
+ end
121
+
122
+ describe 'when parsing' do
123
+ before do
124
+ @basic_hcal = read_sample('hcal_basic.xml')
125
+ @basic_venue = mock_model(Venue, title: 'Argent Hotel, San Francisco, CA', full_address: '50 3rd St, San Francisco, CA 94103')
126
+ @basic_event = described_class.new(
127
+ title: 'Web 2.0 Conference',
128
+ url: 'http://www.web2con.com/',
129
+ start_time: 1.day.from_now,
130
+ end_time: nil,
131
+ venue: @basic_venue
132
+ )
133
+ end
134
+
135
+ it 'parses an iCalendar into an Event' do
136
+ url = 'http://foo.bar/'
137
+ actual_ical = Event::IcalRenderer.render(@basic_event)
138
+ stub_request(:get, url).to_return(body: actual_ical)
139
+
140
+ events = Source::Parser.to_events(url: url)
141
+
142
+ expect(events.size).to eq 1
143
+ event = events.first
144
+ expect(event.title).to eq @basic_event.title
145
+ expect(event.url).to eq @basic_event.url
146
+ expect(event.description).to be_blank
147
+
148
+ expect(event.venue.title).to match "#{@basic_event.venue.title}: #{@basic_event.venue.full_address}"
149
+ end
150
+
151
+ it 'parses an iCalendar into an Event without a URL and generate it' do
152
+ generated_url = 'http://foo.bar/'
153
+ @basic_event.url = nil
154
+ actual_ical = Event::IcalRenderer.render(@basic_event, url_helper: ->(_event) { generated_url })
155
+ url = 'http://foo.bar/'
156
+ stub_request(:get, url).to_return(body: actual_ical)
157
+
158
+ events = Source::Parser.to_events(url: url)
159
+
160
+ expect(events.size).to eq 1
161
+ event = events.first
162
+ expect(event.title).to eq @basic_event.title
163
+ expect(event.url).to eq @basic_event.url
164
+ expect(event.description).to match /Imported from: #{generated_url}/
165
+
166
+ expect(event.venue.title).to match "#{@basic_event.venue.title}: #{@basic_event.venue.full_address}"
167
+ end
168
+ end
169
+
170
+ describe 'when processing date' do
171
+ before do
172
+ @event = described_class.new(title: 'MyEvent')
173
+ end
174
+
175
+ it 'fails to validate if start time is nil' do
176
+ @event.start_time = nil
177
+ expect(@event).not_to be_valid
178
+ expect(@event.errors[:start_time].size).to eq(1)
179
+ end
180
+
181
+ it 'fails to validate if start time is blank' do
182
+ @event.start_time = ''
183
+ expect(@event).not_to be_valid
184
+ expect(@event.errors[:start_time].size).to eq(1)
185
+ end
186
+
187
+ it 'fails to validate if end_time is earlier than start time' do
188
+ @event.start_time = now
189
+ @event.end_time = @event.start_time - 2.hours
190
+ expect(@event).to be_invalid
191
+ expect(@event.errors[:end_time].size).to eq(1)
192
+ end
193
+ end
194
+
195
+ describe 'when processing url' do
196
+ before do
197
+ @event = described_class.new(title: 'MyEvent', start_time: now)
198
+ end
199
+
200
+ let(:valid_urls) do
201
+ [
202
+ 'hackoregon.org',
203
+ 'http://www.meetup.com/Hack_Oregon-Data/events/',
204
+ 'example.com',
205
+ 'sub.example.com/',
206
+ 'sub.domain.my-example.com',
207
+ 'example.com/?stuff=true',
208
+ 'example.com:5000/?stuff=true',
209
+ 'sub.domain.my-example.com/path/to/file/hello.html',
210
+ 'hello.museum',
211
+ 'http://example.com'
212
+ ]
213
+ end
214
+
215
+ let(:invalid_urls) do
216
+ [
217
+ 'hackoregon.org, http://www.meetup.com/Hack_Oregon-Data/events/',
218
+ "hackoregon.org\nhttp://www.meetup.com/",
219
+ 'htttp://www.example.com'
220
+ ]
221
+ end
222
+
223
+ it 'validates with valid urls (with scheme included or not)' do
224
+ valid_urls.each do |valid_url|
225
+ @event.url = valid_url
226
+ expect(@event).to be_valid
227
+ end
228
+ end
229
+
230
+ it 'fails to validate with invalid urls (with scheme included or not)' do
231
+ invalid_urls.each do |invalid_url|
232
+ @event.url = invalid_url
233
+ expect(@event).to be_invalid
234
+ end
235
+ end
236
+ end
237
+
238
+ describe '#start_time=' do
239
+ it 'clears with nil' do
240
+ expect(described_class.new(start_time: nil).start_time).to be_nil
241
+ end
242
+
243
+ it 'sets from date String' do
244
+ event = described_class.new(start_time: '2009-01-02')
245
+ expect(event.start_time).to eq Time.zone.parse('2009-01-02')
246
+ end
247
+
248
+ it 'sets from date-time String' do
249
+ event = described_class.new(start_time: '2009-01-02 03:45')
250
+ expect(event.start_time).to eq Time.zone.parse('2009-01-02 03:45')
251
+ end
252
+
253
+ it 'sets from Date' do
254
+ event = described_class.new(start_time: Date.parse('2009-02-01'))
255
+ expect(event.start_time).to eq Time.zone.parse('2009-02-01')
256
+ end
257
+
258
+ it 'sets from DateTime' do
259
+ event = described_class.new(start_time: Time.zone.parse('2009-01-01 05:30'))
260
+ expect(event.start_time).to eq Time.zone.parse('2009-01-01 05:30')
261
+ end
262
+
263
+ it 'flags an invalid time and reset to nil' do
264
+ event = described_class.new(start_time: '2010/1/1')
265
+ event.start_time = '1/0'
266
+ expect(event.start_time).to be_nil
267
+ expect(event.errors[:start_time]).to be_present
268
+ end
269
+ end
270
+
271
+ describe '#end_time=' do
272
+ it 'clears with nil' do
273
+ expect(described_class.new(end_time: nil).end_time).to be_nil
274
+ end
275
+
276
+ it 'sets from date String' do
277
+ event = described_class.new(end_time: '2009-01-02')
278
+ expect(event.end_time).to eq Time.zone.parse('2009-01-02')
279
+ end
280
+
281
+ it 'sets from date-time String' do
282
+ event = described_class.new(end_time: '2009-01-02 03:45')
283
+ expect(event.end_time).to eq Time.zone.parse('2009-01-02 03:45')
284
+ end
285
+
286
+ it 'sets from Date' do
287
+ event = described_class.new(end_time: Date.parse('2009-02-01'))
288
+ expect(event.end_time).to eq Time.zone.parse('2009-02-01')
289
+ end
290
+
291
+ it 'sets from DateTime' do
292
+ event = described_class.new(end_time: Time.zone.parse('2009-01-01 05:30'))
293
+ expect(event.end_time).to eq Time.zone.parse('2009-01-01 05:30')
294
+ end
295
+
296
+ it 'flags an invalid time' do
297
+ event = described_class.new(end_time: '1/0')
298
+ expect(event.errors[:end_time]).to be_present
299
+ end
300
+ end
301
+
302
+ describe '#duration' do
303
+ it 'returns the event length in seconds' do
304
+ event = described_class.new(start_time: '2010-01-01', end_time: '2010-01-03')
305
+ expect(event.duration).to eq(172_800)
306
+ end
307
+
308
+ it "returns zero if start and end times aren't present" do
309
+ expect(described_class.new.duration).to eq(0)
310
+ end
311
+ end
312
+
313
+ describe '.search_tag' do
314
+ before do
315
+ @c = create(:event, title: 'c', start_time: 3.minutes.ago, tag_list: %w[tag wtf])
316
+ @b = create(:event, title: 'b', start_time: 2.minutes.ago, tag_list: %w[omg wtf])
317
+ @a = create(:event, title: 'a', start_time: 1.minute.ago, tag_list: %w[tag omg])
318
+ end
319
+
320
+ it 'finds events with the given tag' do
321
+ described_class.search_tag('tag').should == [@c, @a]
322
+ end
323
+
324
+ it 'accepts an order option' do
325
+ described_class.search_tag('tag', order: 'name').should == [@a, @c]
326
+ end
327
+ end
328
+
329
+ describe 'when finding by dates' do
330
+ before do
331
+ @today_midnight = today
332
+ @yesterday = @today_midnight.yesterday
333
+ @tomorrow = @today_midnight.tomorrow
334
+
335
+ @this_venue = Venue.create!(title: 'This venue')
336
+
337
+ @started_before_today_and_ends_after_today = described_class.create!(
338
+ title: 'Event in progress',
339
+ start_time: @yesterday,
340
+ end_time: @tomorrow,
341
+ venue_id: @this_venue.id
342
+ )
343
+
344
+ @started_midnight_and_continuing_after = described_class.create!(
345
+ title: 'Midnight start',
346
+ start_time: @today_midnight,
347
+ end_time: @tomorrow,
348
+ venue_id: @this_venue.id
349
+ )
350
+
351
+ @started_and_ended_yesterday = described_class.create!(
352
+ title: 'Yesterday start',
353
+ start_time: @yesterday,
354
+ end_time: @yesterday.end_of_day,
355
+ venue_id: @this_venue.id
356
+ )
357
+
358
+ @started_today_and_no_end_time = described_class.create!(
359
+ title: 'nil end time',
360
+ start_time: @today_midnight,
361
+ end_time: nil,
362
+ venue_id: @this_venue.id
363
+ )
364
+
365
+ @starts_and_ends_tomorrow = described_class.create!(
366
+ title: 'starts and ends tomorrow',
367
+ start_time: @tomorrow,
368
+ end_time: @tomorrow.end_of_day,
369
+ venue_id: @this_venue.id
370
+ )
371
+
372
+ @starts_after_tomorrow = described_class.create!(
373
+ title: 'Starting after tomorrow',
374
+ start_time: @tomorrow + 1.day,
375
+ venue_id: @this_venue.id
376
+ )
377
+
378
+ @started_before_today_and_ends_at_midnight = described_class.create!(
379
+ title: 'Midnight end',
380
+ start_time: @yesterday,
381
+ end_time: @today_midnight,
382
+ venue_id: @this_venue.id
383
+ )
384
+
385
+ @future_events_for_this_venue = @this_venue.events.future
386
+ end
387
+
388
+ describe 'for future events' do
389
+ before do
390
+ @future_events = described_class.future
391
+ end
392
+
393
+ it 'includes events that started earlier today' do
394
+ expect(@future_events).to include @started_midnight_and_continuing_after
395
+ end
396
+
397
+ it 'includes events with no end time that started today' do
398
+ expect(@future_events).to include @started_today_and_no_end_time
399
+ end
400
+
401
+ it 'includes events that started before today and ended after today' do
402
+ events = described_class.future
403
+ expect(events).to include @started_before_today_and_ends_after_today
404
+ end
405
+
406
+ it 'includes events with no end time that started today' do
407
+ expect(@future_events).to include @started_today_and_no_end_time
408
+ end
409
+
410
+ it 'does not include events that ended before today' do
411
+ expect(@future_events).not_to include @started_and_ended_yesterday
412
+ end
413
+ end
414
+
415
+ describe 'for future events with venue' do
416
+ before do
417
+ @another_venue = Venue.create!(title: 'Another venue')
418
+
419
+ @future_event_another_venue = described_class.create!(
420
+ title: 'Starting after tomorrow',
421
+ start_time: @tomorrow + 1.day,
422
+ venue_id: @another_venue.id
423
+ )
424
+
425
+ @future_event_no_venue = described_class.create!(
426
+ title: 'Starting after tomorrow',
427
+ start_time: @tomorrow + 1.day
428
+ )
429
+ end
430
+
431
+ # TODO: Consider moving these examples elsewhere because they don't appear to relate to this scope. This comment applies to the examples from here...
432
+ it 'includes events that started earlier today' do
433
+ expect(@future_events_for_this_venue).to include @started_midnight_and_continuing_after
434
+ end
435
+
436
+ it 'includes events with no end time that started today' do
437
+ expect(@future_events_for_this_venue).to include @started_today_and_no_end_time
438
+ end
439
+
440
+ it 'includes events that started before today and ended after today' do
441
+ expect(@future_events_for_this_venue).to include @started_before_today_and_ends_after_today
442
+ end
443
+
444
+ it 'does not include events that ended before today' do
445
+ expect(@future_events_for_this_venue).not_to include @started_and_ended_yesterday
446
+ end
447
+ # TODO: ...to here.
448
+
449
+ it 'does not include events for another venue' do
450
+ expect(@future_events_for_this_venue).not_to include @future_event_another_venue
451
+ end
452
+
453
+ it 'does not include events with no venue' do
454
+ expect(@future_events_for_this_venue).not_to include @future_event_no_venue
455
+ end
456
+ end
457
+
458
+ describe 'for date range' do
459
+ it 'includes events that started earlier today' do
460
+ events = described_class.within_dates(@today_midnight, @tomorrow)
461
+ expect(events).to include @started_midnight_and_continuing_after
462
+ end
463
+
464
+ it 'includes events that started before today and end after today' do
465
+ events = described_class.within_dates(@today_midnight, @tomorrow)
466
+ expect(events).to include @started_before_today_and_ends_after_today
467
+ end
468
+
469
+ it 'does not include past events' do
470
+ events = described_class.within_dates(@today_midnight, @tomorrow)
471
+ expect(events).not_to include @started_and_ended_yesterday
472
+ end
473
+
474
+ it 'excludes events that start after the end of the range' do
475
+ events = described_class.within_dates(@tomorrow, @tomorrow)
476
+ expect(events).not_to include @started_today_and_no_end_time
477
+ end
478
+ end
479
+ end
480
+
481
+ describe 'when ordering' do
482
+ describe 'with .ordered_by_ui_field' do
483
+ it 'defaults to order by start time' do
484
+ event1 = create(:event, start_time: Time.zone.parse('2003-01-01'))
485
+ event2 = create(:event, start_time: Time.zone.parse('2002-01-01'))
486
+ event3 = create(:event, start_time: Time.zone.parse('2001-01-01'))
487
+
488
+ events = described_class.ordered_by_ui_field(nil)
489
+ expect(events).to eq([event3, event2, event1])
490
+ end
491
+
492
+ it 'can order by event name' do
493
+ event1 = create(:event, title: 'CU there')
494
+ event2 = create(:event, title: 'Be there')
495
+ event3 = create(:event, title: 'An event')
496
+
497
+ events = described_class.ordered_by_ui_field('name')
498
+ expect(events).to eq([event3, event2, event1])
499
+ end
500
+
501
+ it 'can order by venue name' do
502
+ event1 = create(:event, venue: create(:venue, title: 'C venue'))
503
+ event2 = create(:event, venue: create(:venue, title: 'B venue'))
504
+ event3 = create(:event, venue: create(:venue, title: 'A venue'))
505
+
506
+ events = described_class.ordered_by_ui_field('venue')
507
+ expect(events).to eq([event3, event2, event1])
508
+ end
509
+ end
510
+ end
511
+
512
+ describe 'with finding duplicates' do
513
+ before do
514
+ @non_duplicate_event = create(:event)
515
+ @duplicate_event = create(:duplicate_event)
516
+ @events = [@non_duplicate_event, @duplicate_event]
517
+ end
518
+
519
+ it 'finds all events that have not been marked as duplicate' do
520
+ non_duplicates = described_class.non_duplicates
521
+ expect(non_duplicates).to include @non_duplicate_event
522
+ expect(non_duplicates).not_to include @duplicate_event
523
+ end
524
+
525
+ it 'finds all events that have been marked as duplicate' do
526
+ duplicates = described_class.marked_duplicates
527
+ expect(duplicates).to include @duplicate_event
528
+ expect(duplicates).not_to include @non_duplicate_event
529
+ end
530
+ end
531
+
532
+ describe 'with finding duplicates (integration test)' do
533
+ subject do
534
+ create(:event)
535
+ end
536
+
537
+ before do
538
+ # this event should always be omitted from the results
539
+ past = create(:event, start_time: 1.week.ago)
540
+ end
541
+
542
+ it 'returns future events when provided na' do
543
+ future = described_class.create!(title: subject.title, start_time: 1.day.from_now)
544
+ events = described_class.find_duplicates_by_type('na')
545
+ expect(events).to eq([nil] => [subject, future])
546
+ end
547
+
548
+ it 'finds duplicate title by title' do
549
+ clone = described_class.create!(title: subject.title, start_time: subject.start_time)
550
+ events = described_class.find_duplicates_by_type('title')
551
+ expect(events).to eq([subject.title] => [subject, clone])
552
+ end
553
+
554
+ it 'finds duplicate title by any' do
555
+ clone = described_class.create!(title: subject.title, start_time: subject.start_time + 1.minute)
556
+ events = described_class.find_duplicates_by_type('title')
557
+ expect(events).to eq([subject.title] => [subject, clone])
558
+ end
559
+
560
+ it 'does not find duplicate title by url' do
561
+ clone = described_class.create!(title: subject.title, start_time: subject.start_time)
562
+ events = described_class.find_duplicates_by_type('url')
563
+ expect(events).to be_empty
564
+ end
565
+
566
+ it 'finds complete duplicates by all' do
567
+ clone = described_class.create!(subject.attributes.merge(id: nil))
568
+ events = described_class.find_duplicates_by_type('all')
569
+ expect(events).to eq([nil] => [subject, clone])
570
+ end
571
+
572
+ it 'does not find incomplete duplicates by all' do
573
+ clone = described_class.create!(subject.attributes.merge(title: 'SpaceCube', start_time: subject.start_time, id: nil))
574
+ events = described_class.find_duplicates_by_type('all')
575
+ expect(events).to be_empty
576
+ end
577
+
578
+ it 'finds duplicate for matching multiple fields' do
579
+ clone = described_class.create!(title: subject.title, start_time: subject.start_time)
580
+ events = described_class.find_duplicates_by_type('title,start_time')
581
+ expect(events).to eq([subject.title, subject.start_time] => [subject, clone])
582
+ end
583
+
584
+ it 'does not find duplicates for mismatching multiple fields' do
585
+ clone = described_class.create!(title: 'SpaceCube', start_time: subject.start_time)
586
+ events = described_class.find_duplicates_by_type('title,start_time')
587
+ expect(events).to be_empty
588
+ end
589
+ end
590
+
591
+ describe 'when squashing duplicates (integration test)' do
592
+ before do
593
+ @event = create(:event, :with_venue)
594
+ @venue = @event.venue
595
+ end
596
+
597
+ it "consolidates associations, merge tags, and update the venue's counter_cache" do
598
+ @event.tag_list.add(%w[first second]) # primary event contains one duplicate tag, and one unique tag
599
+
600
+ clone = described_class.create!(@event.attributes.merge(id: nil))
601
+ clone.tag_list.replace %w[second third] # duplicate event also contains one duplicate tag, and one unique tag
602
+ clone.save!
603
+ clone.reload
604
+ expect(clone).not_to be_duplicate
605
+ expect(@venue.reload.events_count).to eq 2
606
+
607
+ described_class.squash(@event, clone)
608
+ expect(@event.tag_list.to_a.sort).to eq %w[first second third] # primary now contains all three tags
609
+ expect(clone.duplicate_of).to eq @event
610
+ expect(@venue.reload.events_count).to eq 1
611
+ end
612
+ end
613
+
614
+ describe 'when checking for squashing' do
615
+ before do
616
+ @today = today
617
+ @primary = described_class.create!(title: 'primary', start_time: @today)
618
+ @duplicate1 = described_class.create!(title: '1st duplicate', start_time: @today, duplicate_of_id: @primary.id)
619
+ @duplicate2 = described_class.create!(title: '2nd duplicate', start_time: @today, duplicate_of_id: @duplicate1.id)
620
+ @orphan = described_class.create!(title: 'orphan', start_time: @today, duplicate_of_id: 999_999)
621
+ end
622
+
623
+ it 'recognizes a primary' do
624
+ expect(@primary).to be_a_primary
625
+ end
626
+
627
+ it 'recognizes a duplicate' do
628
+ expect(@duplicate1).to be_a_duplicate
629
+ end
630
+
631
+ it 'does not think that a duplicate is a primary' do
632
+ expect(@duplicate2).not_to be_a_primary
633
+ end
634
+
635
+ it 'does not think that a primary is a duplicate' do
636
+ expect(@primary).not_to be_a_duplicate
637
+ end
638
+
639
+ it 'returns the originator of a duplicate' do
640
+ expect(@duplicate1.originator).to eq @primary
641
+ end
642
+
643
+ it 'returns the originator of a secondary duplicate' do
644
+ expect(@duplicate2.originator).to eq @primary
645
+ end
646
+
647
+ it 'returns a primary as its own originator' do
648
+ expect(@primary.originator).to eq @primary
649
+ end
650
+
651
+ it 'returns a marked duplicate as originator if it is orphaned' do
652
+ expect(@orphan.originator).to eq @orphan
653
+ end
654
+ end
655
+
656
+ describe 'when versioning' do
657
+ it 'has versions' do
658
+ expect(described_class.new.versions).to eq []
659
+ end
660
+
661
+ it 'creates a new version after updating' do
662
+ event = described_class.create!(title: 'Event title', start_time: Time.zone.parse('2008.04.12'))
663
+ expect(event.versions.count).to eq 1
664
+
665
+ event.title = 'New Title'
666
+ event.save!
667
+ expect(event.versions.count).to eq 2
668
+ end
669
+ end
670
+
671
+ describe 'when converting to iCal' do
672
+ def ical_roundtrip(events, opts = {})
673
+ parsed_events = RiCal.parse_string(Event::IcalRenderer.render(events, opts)).first.events
674
+ if events.is_a?(Event)
675
+ parsed_events.first
676
+ else
677
+ parsed_events
678
+ end
679
+ end
680
+
681
+ it 'produces parsable iCal output' do
682
+ expect { ical_roundtrip(build(:event)) }.not_to raise_error
683
+ end
684
+
685
+ it 'represents an event without an end time as a 1-hour block' do
686
+ event = build(:event, start_time: now, end_time: nil)
687
+ expect(event.end_time).to be_blank
688
+
689
+ rt = ical_roundtrip(event)
690
+ expect(rt.dtend - rt.dtstart).to eq 1.hour
691
+ end
692
+
693
+ it 'sets the appropriate end time if one is given' do
694
+ event = build(:event, start_time: now, end_time: now + 2.hours)
695
+
696
+ rt = ical_roundtrip(event)
697
+ expect(rt.dtend - rt.dtstart).to eq 2.hours
698
+ end
699
+
700
+ describe "when comparing Event's attributes to its iCalendar output" do
701
+ let(:event) { build(:event, id: 123, created_at: now) }
702
+ let(:ical) { ical_roundtrip(event) }
703
+
704
+ { summary: :title,
705
+ created: :created_at,
706
+ last_modified: :updated_at,
707
+ description: :description,
708
+ url: :url,
709
+ dtstart: :start_time,
710
+ dtstamp: :created_at }.each do |ical_attribute, model_attribute|
711
+ it "maps the Event's #{model_attribute} attribute to '#{ical_attribute}' in the iCalendar output" do
712
+ model_value = event.send(model_attribute)
713
+ ical_value = ical.send(ical_attribute)
714
+
715
+ case model_value
716
+ when ActiveSupport::TimeWithZone
717
+ # Compare raw time because one is using local time zone, while other is using UTC time.
718
+ expect(model_value.to_i).to eq ical_value.to_i
719
+ else
720
+ expect(model_value).to eq ical_value
721
+ end
722
+ end
723
+ end
724
+ end
725
+
726
+ it 'calls the URL helper to generate a UID' do
727
+ event = build(:event)
728
+ expect(ical_roundtrip(event, url_helper: ->(_e) { "UID'D!" }).uid).to eq "UID'D!"
729
+ end
730
+
731
+ it 'strips HTML from the description' do
732
+ event = create(:event, description: '<blink>OMFG HTML IS TEH AWESOME</blink>')
733
+ expect(ical_roundtrip(event).description).not_to include '<blink>'
734
+ end
735
+
736
+ it 'includes tags in the description' do
737
+ event = build(:event)
738
+ event.tag_list.add('tags, folksonomy, categorization', parse: true)
739
+ expect(ical_roundtrip(event).description).to include event.tag_list.to_s
740
+ end
741
+
742
+ it 'leaves URL blank if no URL is provided' do
743
+ event = build(:event, url: nil)
744
+ expect(ical_roundtrip(event).url).to be_nil
745
+ end
746
+
747
+ it 'has Source URL if URL helper is given)' do
748
+ event = build(:event)
749
+ expect(ical_roundtrip(event, url_helper: ->(_e) { 'FAKE' }).description).to match /FAKE/
750
+ end
751
+
752
+ it 'creates multi-day entries for multi-day events' do
753
+ time = Time.zone.now
754
+ event = build(:event, start_time: time, end_time: time + 4.days)
755
+ parsed_event = ical_roundtrip(event)
756
+
757
+ start_time = Date.current
758
+ expect(parsed_event.dtstart).to eq start_time
759
+ expect(parsed_event.dtend).to eq(start_time + 5.days)
760
+ end
761
+
762
+ describe 'sequence' do
763
+ def event_to_ical(event)
764
+ RiCal.parse_string(Event::IcalRenderer.render([event])).first.events.first
765
+ end
766
+
767
+ it 'sets an initial sequence on a new event' do
768
+ event = create(:event)
769
+ ical = event_to_ical(event)
770
+ expect(ical.sequence).to eq 1
771
+ end
772
+
773
+ it 'increments the sequence if it is updated' do
774
+ event = create(:event)
775
+ event.update_attribute(:title, 'Update 1')
776
+ ical = event_to_ical(event)
777
+ expect(ical.sequence).to eq 2
778
+ end
779
+
780
+ # it "should offset the squence based the global Calagator.icalendar_sequence_offset" do
781
+ # Calagator.should_receive(:icalendar_sequence_offset).and_return(41)
782
+ # event = build(:event)
783
+ # ical = event_to_ical(event)
784
+ # ical.sequence.should eq 42
785
+ # end
786
+ end
787
+
788
+ describe '- the headers' do
789
+ before do
790
+ @data = Event::IcalRenderer.render(build(:event))
791
+ end
792
+
793
+ it 'includes the calendar name' do
794
+ expect(@data).to match /\sX-WR-CALNAME:#{Calagator.title}\s/
795
+ end
796
+
797
+ it 'includes the method' do
798
+ expect(@data).to match /\sMETHOD:PUBLISH\s/
799
+ end
800
+
801
+ it 'includes the scale' do
802
+ expect(@data).to match /\sCALSCALE:Gregorian\s/i
803
+ end
804
+ end
805
+ end
806
+ end
807
+ end