flms 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (516) hide show
  1. checksums.yaml +15 -0
  2. data/README.md +102 -2
  3. data/app/assets/javascripts/flms/admin.js +1 -1
  4. data/app/assets/javascripts/flms/{bootstrap.js → admin/bootstrap.js} +0 -0
  5. data/app/assets/javascripts/flms/{layout.coffee → admin/layout.coffee} +2 -2
  6. data/app/assets/javascripts/flms/{blocks/index → admin/pages/edit}/block.coffee +0 -0
  7. data/app/assets/javascripts/flms/{blocks/index → admin/pages/edit}/block_list.coffee +1 -1
  8. data/app/assets/javascripts/flms/{blocks/index/index.coffee → admin/pages/edit/edit.coffee} +2 -2
  9. data/app/assets/javascripts/flms/public.js +17 -0
  10. data/app/assets/stylesheets/flms/admin.css +1 -1
  11. data/app/assets/stylesheets/flms/{blocks → admin/blocks}/show.sass +0 -0
  12. data/app/assets/stylesheets/flms/{home.sass → admin/home.sass} +0 -1
  13. data/app/assets/stylesheets/flms/admin/layers/form.sass +4 -0
  14. data/app/assets/stylesheets/flms/{layout.sass → admin/layout.sass} +0 -0
  15. data/app/assets/stylesheets/flms/{login.sass → admin/login.sass} +0 -0
  16. data/app/assets/stylesheets/flms/{blocks/index.sass → admin/pages/edit.sass} +1 -1
  17. data/app/assets/stylesheets/flms/public.css +8 -0
  18. data/app/assets/stylesheets/flms/public/public.sass +52 -0
  19. data/app/controllers/flms/abstract_layer_controller.rb +45 -0
  20. data/app/controllers/flms/animation_layers_controller.rb +26 -0
  21. data/app/controllers/flms/application_controller.rb +13 -0
  22. data/app/controllers/flms/blocks_controller.rb +20 -22
  23. data/app/controllers/flms/embed_layers_controller.rb +24 -0
  24. data/app/controllers/flms/image_layers_controller.rb +6 -54
  25. data/app/controllers/flms/layers_controller.rb +3 -10
  26. data/app/controllers/flms/pages_controller.rb +44 -5
  27. data/app/controllers/flms/paragraph_layers_controller.rb +24 -0
  28. data/app/controllers/flms/text_layers_controller.rb +24 -0
  29. data/app/helpers/flms/application_helper.rb +13 -0
  30. data/app/models/flms/animation_layer.rb +33 -0
  31. data/app/models/flms/block.rb +17 -1
  32. data/app/models/flms/blocks_page.rb +3 -0
  33. data/app/models/flms/embed_layer.rb +12 -0
  34. data/app/models/flms/end_state_keyframe.rb +17 -0
  35. data/app/models/flms/image_layer.rb +23 -1
  36. data/app/models/flms/keyframe.rb +130 -0
  37. data/app/models/flms/layer.rb +91 -2
  38. data/app/models/flms/page.rb +14 -2
  39. data/app/models/flms/paragraph_layer.rb +21 -0
  40. data/app/models/flms/start_state_keyframe.rb +17 -0
  41. data/app/models/flms/target_state_keyframe.rb +17 -0
  42. data/app/models/flms/text_layer.rb +20 -0
  43. data/app/uploaders/image_uploader.rb +21 -34
  44. data/app/uploaders/thumbnail_image_uploader.rb +36 -0
  45. data/app/view_objects/flms/animation_layer_view_object.rb +45 -0
  46. data/app/view_objects/flms/embed_layer_view_object.rb +15 -0
  47. data/app/view_objects/flms/image_layer_view_object.rb +22 -0
  48. data/app/view_objects/flms/keyframe_view_object.rb +92 -0
  49. data/app/view_objects/flms/layer_view_object.rb +72 -0
  50. data/app/view_objects/flms/paragraph_layer_view_object.rb +19 -0
  51. data/app/view_objects/flms/text_layer_view_object.rb +30 -0
  52. data/app/views/flms/animation_layers/_form.html.haml +56 -0
  53. data/app/views/flms/animation_layers/edit.html.haml +1 -0
  54. data/app/views/flms/animation_layers/new.html.haml +1 -0
  55. data/app/views/flms/blocks/_form.html.haml +32 -18
  56. data/app/views/flms/blocks/edit.html.haml +61 -2
  57. data/app/views/flms/blocks/index.html.haml +13 -22
  58. data/app/views/flms/blocks/show.html.haml +12 -35
  59. data/app/views/flms/elements/_animation_layer.html.haml +2 -0
  60. data/app/views/flms/elements/_block.html.haml +3 -0
  61. data/app/views/flms/elements/_embed_layer.html.haml +2 -0
  62. data/app/views/flms/elements/_image_layer.html.haml +2 -0
  63. data/app/views/flms/elements/_page.html.haml +11 -0
  64. data/app/views/flms/elements/_paragraph_layer.html.haml +4 -0
  65. data/app/views/flms/elements/_text_layer.html.haml +2 -0
  66. data/app/views/flms/embed_layers/_form.html.haml +29 -0
  67. data/app/views/flms/embed_layers/edit.html.haml +2 -0
  68. data/app/views/flms/embed_layers/new.html.haml +2 -0
  69. data/app/views/flms/image_layers/_form.html.haml +31 -17
  70. data/app/views/flms/image_layers/new.html.haml +1 -2
  71. data/app/views/flms/layers/_common_fields.html.haml +41 -0
  72. data/app/views/flms/layers/_keyframe_fields.html.haml +127 -0
  73. data/app/views/flms/pages/_add_block.html.haml +8 -0
  74. data/app/views/flms/pages/_block_list.html.haml +44 -0
  75. data/app/views/flms/pages/_form.html.haml +22 -23
  76. data/app/views/flms/pages/edit.html.haml +4 -3
  77. data/app/views/flms/pages/index.html.haml +4 -3
  78. data/app/views/flms/pages/show.html.haml +8 -6
  79. data/app/views/flms/paragraph_layers/_form.html.haml +41 -0
  80. data/app/views/flms/paragraph_layers/edit.html.haml +2 -0
  81. data/app/views/flms/paragraph_layers/new.html.haml +2 -0
  82. data/app/views/flms/text_layers/_form.html.haml +43 -0
  83. data/app/views/flms/text_layers/edit.html.haml +2 -0
  84. data/app/views/flms/text_layers/new.html.haml +2 -0
  85. data/app/views/layouts/flms/_plain_styling.html.haml +1 -0
  86. data/app/views/layouts/flms/admin.html.haml +8 -3
  87. data/app/views/layouts/flms/public.html.haml +13 -0
  88. data/config/initializers/carrierwave.rb +62 -6
  89. data/config/initializers/mime_types.rb +3 -0
  90. data/config/initializers/validators.rb +1 -0
  91. data/config/routes.rb +13 -5
  92. data/config/s3.yml.example +14 -0
  93. data/db/migrate/{20130302011705_create_flms_blocks.rb → 20130302011705_flms_create_blocks.rb} +3 -1
  94. data/db/migrate/{20130302015459_create_flms_blocks_pages.rb → 20130302015459_flms_create_blocks_pages.rb} +1 -1
  95. data/db/migrate/20130312220011_flms_create_layers.rb +40 -0
  96. data/db/migrate/20130327183815_flms_create_keyframes.rb +24 -0
  97. data/lib/flms/css_name_validator.rb +9 -0
  98. data/lib/flms/version.rb +1 -1
  99. data/lib/tasks/flms_tasks.rake +46 -6
  100. data/spec/controllers/animation_layers_controller_spec.rb +38 -0
  101. data/spec/controllers/blocks_controller_spec.rb +18 -44
  102. data/spec/controllers/embed_layers_controller_spec.rb +52 -0
  103. data/spec/controllers/image_layers_controller_spec.rb +73 -0
  104. data/spec/controllers/layers_controller_spec.rb +4 -5
  105. data/spec/controllers/pages_controller_spec.rb +66 -1
  106. data/spec/controllers/paragraph_layers_controller_spec.rb +53 -0
  107. data/spec/controllers/text_layers_controller_spec.rb +73 -0
  108. data/spec/dummy/app/views/home/index.html.haml +1 -1
  109. data/spec/dummy/config/environments/development.rb +1 -0
  110. data/spec/dummy/config/environments/production.rb +1 -0
  111. data/spec/dummy/config/environments/test.rb +1 -0
  112. data/spec/dummy/config/initializers/flms.rb +1 -0
  113. data/spec/dummy/config/s3.yml +12 -0
  114. data/spec/dummy/config/s3.yml.example +12 -0
  115. data/spec/dummy/db/development.sqlite3 +0 -0
  116. data/spec/dummy/db/schema.rb +40 -5
  117. data/spec/dummy/db/test.sqlite3 +0 -0
  118. data/spec/dummy/log/development.log +4376 -0
  119. data/spec/dummy/log/test.log +131766 -0
  120. data/spec/dummy/public/uploads/flms/animation_layer/image/1/normal_placeholder.png +0 -0
  121. data/spec/dummy/public/uploads/flms/animation_layer/image/1/placeholder.png +0 -0
  122. data/spec/dummy/public/uploads/flms/animation_layer/image/1/small_placeholder.png +0 -0
  123. data/spec/dummy/public/uploads/flms/animation_layer/image/1/thumb_placeholder.png +0 -0
  124. data/spec/dummy/public/uploads/flms/animation_layer/image/7/normal_placeholder.png +0 -0
  125. data/spec/dummy/public/uploads/flms/animation_layer/image/7/placeholder.png +0 -0
  126. data/spec/dummy/public/uploads/flms/animation_layer/image/7/small_placeholder.png +0 -0
  127. data/spec/dummy/public/uploads/flms/animation_layer/image/7/thumb_placeholder.png +0 -0
  128. data/spec/dummy/public/uploads/flms/block/thumbnail/1/placeholder.png +0 -0
  129. data/spec/dummy/public/uploads/flms/block/thumbnail/1/small_placeholder.png +0 -0
  130. data/spec/dummy/public/uploads/flms/block/thumbnail/1/thumb_placeholder.png +0 -0
  131. data/spec/dummy/public/uploads/flms/image_layer/image/1/normal_placeholder.png +0 -0
  132. data/spec/dummy/public/uploads/flms/image_layer/image/1/placeholder.png +0 -0
  133. data/spec/dummy/public/uploads/flms/image_layer/image/1/small_placeholder.png +0 -0
  134. data/spec/dummy/public/uploads/flms/image_layer/image/1/thumb_placeholder.png +0 -0
  135. data/spec/dummy/public/uploads/flms/image_layer/image/2/normal_placeholder.png +0 -0
  136. data/spec/dummy/public/uploads/flms/image_layer/image/2/placeholder.png +0 -0
  137. data/spec/dummy/public/uploads/flms/image_layer/image/2/small_placeholder.png +0 -0
  138. data/spec/dummy/public/uploads/flms/image_layer/image/2/thumb_placeholder.png +0 -0
  139. data/spec/dummy/public/uploads/flms/image_layer/image/3/normal_placeholder.png +0 -0
  140. data/spec/dummy/public/uploads/flms/image_layer/image/3/placeholder.png +0 -0
  141. data/spec/dummy/public/uploads/flms/image_layer/image/3/small_placeholder.png +0 -0
  142. data/spec/dummy/public/uploads/flms/image_layer/image/3/thumb_placeholder.png +0 -0
  143. data/spec/dummy/tmp/cache/assets/C4C/010/sprockets%2F74558ebf3d0666286090250c04b945a1 +0 -0
  144. data/spec/dummy/tmp/cache/assets/C4C/7C0/sprockets%2F829fa8a51f2e2266774e2007d7141414 +0 -0
  145. data/spec/dummy/tmp/cache/assets/C57/C80/sprockets%2F74f66b30036f872b250553c91f2981d8 +0 -0
  146. data/spec/dummy/tmp/cache/assets/C59/520/sprockets%2Ff2296184148079d68a35d80635c702fc +0 -0
  147. data/spec/dummy/tmp/cache/assets/C62/B80/sprockets%2Fe2573350e6996f3f19f06c03687339d2 +0 -0
  148. data/spec/dummy/tmp/cache/assets/C84/200/sprockets%2F6d5671bc22b630f45761e90488b3a909 +0 -0
  149. data/spec/dummy/tmp/cache/assets/C86/490/sprockets%2F196ee25088eb975920380e3b5fd22325 +0 -0
  150. data/spec/dummy/tmp/cache/assets/C86/F40/sprockets%2Fb9924512ef3de6aa72460258706865e2 +0 -0
  151. data/spec/dummy/tmp/cache/assets/CA7/AB0/sprockets%2F88f069985c1ffca86f6394209656964c +0 -0
  152. data/spec/dummy/tmp/cache/assets/CA9/AC0/sprockets%2F2f3e0ad16e81532007e094c081594f7e +0 -0
  153. data/spec/dummy/tmp/cache/assets/CA9/F00/sprockets%2F289543b9c4d5ea08789000ce30a95c00 +0 -0
  154. data/spec/dummy/tmp/cache/assets/CAB/C80/sprockets%2Fc4e739111d82c7189113aeb228816ba8 +0 -0
  155. data/spec/dummy/tmp/cache/assets/CB0/330/sprockets%2F228e5f742b01972dc6ce664713264d3c +0 -0
  156. data/spec/dummy/tmp/cache/assets/CB3/E00/sprockets%2F97a8391a80361fb1870669c06a27ae5c +0 -0
  157. data/spec/dummy/tmp/cache/assets/CC9/C00/sprockets%2F454c58b0a3b0a0a64fd60bb217197580 +0 -0
  158. data/spec/dummy/tmp/cache/assets/CD1/8F0/sprockets%2F4032f7a5b2133a8b8f963e12fd6120c5 +0 -0
  159. data/spec/dummy/tmp/cache/assets/CD7/000/sprockets%2Ff6534fbac7e738c013414d148211bd95 +0 -0
  160. data/spec/dummy/tmp/cache/assets/CD9/AA0/sprockets%2F80c500e462b3e91b00f48609b56ff91b +0 -0
  161. data/spec/dummy/tmp/cache/assets/CDB/510/sprockets%2Fd61745a24c4636f8813fa14038bac69a +0 -0
  162. data/spec/dummy/tmp/cache/assets/CDD/640/sprockets%2F557bde539a95020fd557e11f813242fa +0 -0
  163. data/spec/dummy/tmp/cache/assets/CDF/200/sprockets%2F9b251cfabb019f79e706200499d623c6 +0 -0
  164. data/spec/dummy/tmp/cache/assets/CE0/420/sprockets%2F5b3f22c66d8a269533a5689c1be5c800 +0 -0
  165. data/spec/dummy/tmp/cache/assets/CEE/C10/sprockets%2F39310232adc120c16210bdc84184fdaf +0 -0
  166. data/spec/dummy/tmp/cache/assets/D02/F10/sprockets%2Fd10499187b5f8d8d85769775d1ecb7c7 +0 -0
  167. data/spec/dummy/tmp/cache/assets/D07/A50/sprockets%2Fdda362e83c229c06b2bb63686e273d13 +0 -0
  168. data/spec/dummy/tmp/cache/assets/D09/5C0/sprockets%2F7cd3521c63623eb6f02dbb514991a6f6 +0 -0
  169. data/spec/dummy/tmp/cache/assets/D09/7C0/sprockets%2F892c677abcf22a046a610427fa29d4b7 +0 -0
  170. data/spec/dummy/tmp/cache/assets/D0B/0C0/sprockets%2Fb2722b54d89845b9619cadda1a04158c +0 -0
  171. data/spec/dummy/tmp/cache/assets/D11/9D0/sprockets%2F87436354c263adb7b069d7b3d19ace18 +0 -0
  172. data/spec/dummy/tmp/cache/assets/D15/6F0/sprockets%2F32e2b26b766ac7fb86d0c7062c976c29 +0 -0
  173. data/spec/dummy/tmp/cache/assets/D18/9C0/sprockets%2Ff92d239ff629c160ee015e3845a6c9c3 +0 -0
  174. data/spec/dummy/tmp/cache/assets/D18/DF0/sprockets%2F8d53dfef1f06c56f73026d82f29322a9 +0 -0
  175. data/spec/dummy/tmp/cache/assets/D19/060/sprockets%2F4be3ef7d038e55cffc27166271638f60 +0 -0
  176. data/spec/dummy/tmp/cache/assets/D1C/E30/sprockets%2F605ce82d89dce653d672485b9c1c52f1 +0 -0
  177. data/spec/dummy/tmp/cache/assets/D1E/1D0/sprockets%2Ffeec495723d877b92c74db2055516bc9 +0 -0
  178. data/spec/dummy/tmp/cache/assets/D22/660/sprockets%2F43f26c23b8ddf974767ca6f67b6530f6 +0 -0
  179. data/spec/dummy/tmp/cache/assets/D24/E10/sprockets%2Fd9032b251e778acab41d4639b003a1ca +0 -0
  180. data/spec/dummy/tmp/cache/assets/D25/A70/sprockets%2Fb7d53812242f41eafe2dc223317db30a +0 -0
  181. data/spec/dummy/tmp/cache/assets/D2D/190/sprockets%2Fcea5d014c171b7a836113bb9b0f9f712 +0 -0
  182. data/spec/dummy/tmp/cache/assets/D2E/130/sprockets%2F5ebb788f274dd034257c0bc0400fae50 +0 -0
  183. data/spec/dummy/tmp/cache/assets/D3B/440/sprockets%2Fabe31f236167ba051f6ff849d0a7282f +0 -0
  184. data/spec/dummy/tmp/cache/assets/D3B/550/sprockets%2Fb61caf9834ac8c31691851ac024f26ef +0 -0
  185. data/spec/dummy/tmp/cache/assets/D3B/980/sprockets%2Ff0e607eb6489ed61f27a5233cae0172e +0 -0
  186. data/spec/dummy/tmp/cache/assets/D3B/A90/sprockets%2F3a9f74af10313e521d21dc4d78b4f9b9 +0 -0
  187. data/spec/dummy/tmp/cache/assets/D46/210/sprockets%2F45a8d49c8edbaf91f38ab1495430384c +0 -0
  188. data/spec/dummy/tmp/cache/assets/D48/DD0/sprockets%2F75d43fac4136d1bbabf481f977b78637 +0 -0
  189. data/spec/dummy/tmp/cache/assets/D4A/B40/sprockets%2F509d2dc1350975d781c50dffc58ef53f +0 -0
  190. data/spec/dummy/tmp/cache/assets/D4B/D10/sprockets%2F76e4e1fa5d891fe2261834cf322f38ef +0 -0
  191. data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  192. data/spec/dummy/tmp/cache/assets/D50/0B0/sprockets%2F6c3a019b7442761786cc7bef8e8e7c6c +0 -0
  193. data/spec/dummy/tmp/cache/assets/D53/F80/sprockets%2F11d791b713f9b9cf2bb85bd7f6589b84 +0 -0
  194. data/spec/dummy/tmp/cache/assets/D54/BA0/sprockets%2F89de5abea3b3002f6e73210bb7a3c330 +0 -0
  195. data/spec/dummy/tmp/cache/assets/D54/DE0/sprockets%2F77af3e306bb966f71f83e90e2a8868db +0 -0
  196. data/spec/dummy/tmp/cache/assets/D5B/1F0/sprockets%2F4d98e747aa4bb9fc8859f49a45159e1c +0 -0
  197. data/spec/dummy/tmp/cache/assets/D64/D10/sprockets%2F9857068018fbac51ecd0a7510bcca55e +0 -0
  198. data/spec/dummy/tmp/cache/assets/D66/8E0/sprockets%2F0cbda18dbb9e414ed0bf1199358e1742 +0 -0
  199. data/spec/dummy/tmp/cache/assets/D6D/150/sprockets%2Fe84b6e0602e1c5218c9da9d46da4d74b +0 -0
  200. data/spec/dummy/tmp/cache/assets/D6E/870/sprockets%2F3f77e0b5396013fd145a6fdd21bc9b7f +0 -0
  201. data/spec/dummy/tmp/cache/assets/D71/2D0/sprockets%2F958685af3478f12a33ffaa5cfa26e0d1 +0 -0
  202. data/spec/dummy/tmp/cache/assets/D77/D80/sprockets%2F7ad794c63274a9812dfbabc1dae69692 +0 -0
  203. data/spec/dummy/tmp/cache/assets/D79/DE0/sprockets%2F9e7131d002f39be972e9918bdfbbcc66 +0 -0
  204. data/spec/dummy/tmp/cache/assets/D7C/3A0/sprockets%2Fec63717067efd6b2daf3423edf70f689 +0 -0
  205. data/spec/dummy/tmp/cache/assets/D7D/BB0/sprockets%2Fe66f1c4ba6885a4d1de08c3d81f991d9 +0 -0
  206. data/spec/dummy/tmp/cache/assets/D81/1D0/sprockets%2F9f446f7e8b3c18c6f7b636b71a8ba8d4 +0 -0
  207. data/spec/dummy/tmp/cache/assets/D81/400/sprockets%2F566656e2cc9e698b1dbbd56d6e2e6b36 +0 -0
  208. data/spec/dummy/tmp/cache/assets/D8C/DE0/sprockets%2Fb95e7d75de89e1285d0e6ef8d85cb508 +0 -0
  209. data/spec/dummy/tmp/cache/assets/D91/320/sprockets%2F322e2344c1fc1234ffd9b3142eecaf6f +0 -0
  210. data/spec/dummy/tmp/cache/assets/D92/9B0/sprockets%2F96f73ad8237fa0a4bb3aa8cbe083551a +0 -0
  211. data/spec/dummy/tmp/cache/assets/D93/0C0/sprockets%2Fab900c084c9c51c312ee3457cee8cdc2 +0 -0
  212. data/spec/dummy/tmp/cache/assets/D93/3F0/sprockets%2Fb6aecc2fe36010208fc8c4cc9e04672c +0 -0
  213. data/spec/dummy/tmp/cache/assets/D97/1B0/sprockets%2Fe0ae6a22a963d0e0819ce6436eb57cae +0 -0
  214. data/spec/dummy/tmp/cache/assets/D98/FD0/sprockets%2F6f253bd2bf824ac38c69bfe1418a04be +0 -0
  215. data/spec/dummy/tmp/cache/assets/D99/CF0/sprockets%2F015b5a48fa7906d045fc23db8a60feef +0 -0
  216. data/spec/dummy/tmp/cache/assets/D9A/820/sprockets%2F594caa19e550457af23ae9fba500a9fe +0 -0
  217. data/spec/dummy/tmp/cache/assets/D9E/220/sprockets%2Fd129fcf804e89814c2f4abbe0336cba9 +0 -0
  218. data/spec/dummy/tmp/cache/assets/D9E/8D0/sprockets%2F2ae41880ba1dbb6f570fe0e790678dbf +0 -0
  219. data/spec/dummy/tmp/cache/assets/D9E/A30/sprockets%2Fc82d9ee0ea1a5360faa296957c2bf17e +0 -0
  220. data/spec/dummy/tmp/cache/assets/DA0/C20/sprockets%2Fe1a590abeca61529529de36efa97b43e +0 -0
  221. data/spec/dummy/tmp/cache/assets/DA2/330/sprockets%2F27697dddd23a0913339ccb95dabd7ae7 +0 -0
  222. data/spec/dummy/tmp/cache/assets/DA3/920/sprockets%2F6c45b9f8e0152c78b3c9be1c2e8be53c +0 -0
  223. data/spec/dummy/tmp/cache/assets/DA5/3A0/sprockets%2Fa02e5a4a95bb7c92ec5b63f908eff870 +0 -0
  224. data/spec/dummy/tmp/cache/assets/DA5/BC0/sprockets%2F5b86068a872e5bd841750d6cbd2dfdbf +0 -0
  225. data/spec/dummy/tmp/cache/assets/DA6/360/sprockets%2F1d7b3df8a061fd27e6a956bfd84a93f1 +0 -0
  226. data/spec/dummy/tmp/cache/assets/DA6/A10/sprockets%2Fd226de7dc43ae36657be35fb6e31db89 +0 -0
  227. data/spec/dummy/tmp/cache/assets/DA8/4A0/sprockets%2Ff8ba39d58ace11df624bf7e24c7b5882 +0 -0
  228. data/spec/dummy/tmp/cache/assets/DA8/C30/sprockets%2Fb7d14d588a70a56d7ddac542eef557d6 +0 -0
  229. data/spec/dummy/tmp/cache/assets/DAE/680/sprockets%2Fcd28d437e7fc959fe1e328bca40f5e74 +0 -0
  230. data/spec/dummy/tmp/cache/assets/DB2/1F0/sprockets%2F9fe57997f92efbee3b03df4510a2df57 +0 -0
  231. data/spec/dummy/tmp/cache/assets/DB8/C30/sprockets%2Fca860af2d10e0c745b6e38b12dabe05f +0 -0
  232. data/spec/dummy/tmp/cache/assets/DBF/630/sprockets%2F8423ad7ae72b0bc6baeac10405389fdf +0 -0
  233. data/spec/dummy/tmp/cache/assets/DC1/530/sprockets%2F4db0b289eee7dad03453a5924c20dcfa +0 -0
  234. data/spec/dummy/tmp/cache/assets/DC2/BA0/sprockets%2Feb1b52f8e6baba5409e0e09c3cc70e45 +0 -0
  235. data/spec/dummy/tmp/cache/assets/DCF/0B0/sprockets%2F23db7ab96a5549546bbdd0bc2e6ea86f +0 -0
  236. data/spec/dummy/tmp/cache/assets/DD0/EE0/sprockets%2F4b34c7c215efccbeaf495ee4715734fb +0 -0
  237. data/spec/dummy/tmp/cache/assets/DD4/990/sprockets%2F8dc6b77dc74dfdf830aa8f19b92c130d +0 -0
  238. data/spec/dummy/tmp/cache/assets/DD7/FC0/sprockets%2Fdee985ae48773ae9b4fc4dd0b85ce201 +0 -0
  239. data/spec/dummy/tmp/cache/assets/DD8/DC0/sprockets%2Fcc82f3b4753fc2d729ebbcfec94e3077 +0 -0
  240. data/spec/dummy/tmp/cache/assets/DD9/170/sprockets%2Fccaea8553317199dc77c526fefdfbb27 +0 -0
  241. data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  242. data/spec/dummy/tmp/cache/assets/DEA/350/sprockets%2Ffc836da09a20cdbc0b7b49b2525e1bbe +0 -0
  243. data/spec/dummy/tmp/cache/assets/DF1/A10/sprockets%2Fa925a815ca0bff4d6f42fbdf0d323a4f +0 -0
  244. data/spec/dummy/tmp/cache/assets/DF3/820/sprockets%2Fede955e751bbec440cbbfc00473c34ec +0 -0
  245. data/spec/dummy/tmp/cache/assets/DFC/4B0/sprockets%2F30bac9bffe7e6a5ae42a675f55d1c29a +0 -0
  246. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  247. data/spec/dummy/tmp/cache/assets/E09/1A0/sprockets%2Fc76bb4e6dbb4f2afc0f09c79a41e988f +0 -0
  248. data/spec/dummy/tmp/cache/assets/E2D/E20/sprockets%2Fec8c39aa4e1ce3059eeab8f265ead07d +0 -0
  249. data/spec/dummy/tmp/cache/assets/E2E/010/sprockets%2Fab7b35e5d27eba9893aaef6f2bde1b72 +0 -0
  250. data/spec/dummy/tmp/cache/assets/E2E/A50/sprockets%2Fc7e5c2d6c06cfc59aabd0f814de69c3c +0 -0
  251. data/spec/dummy/tmp/cache/assets/E4B/EE0/sprockets%2F06c4dea4fc3cb561b87bd078aab0facc +0 -0
  252. data/spec/dummy/tmp/cache/assets/E5E/A60/sprockets%2Ff83d84dceff86c25a7bab27cbff33ac0 +0 -0
  253. data/spec/dummy/tmp/cache/assets/E6D/8B0/sprockets%2F9edfdf7e85cdd1a69b0eb14c6ce8ed19 +0 -0
  254. data/spec/dummy/tmp/cache/assets/E94/6D0/sprockets%2F3bdb0f5d3a20cbd18bafaaea4ba2a7b2 +0 -0
  255. data/spec/dummy/tmp/uploads/20130503-1614-5904-3619/normal_placeholder.png +0 -0
  256. data/spec/dummy/tmp/uploads/20130503-1614-5904-3619/placeholder.png +0 -0
  257. data/spec/dummy/tmp/uploads/20130503-1614-5904-3619/small_placeholder.png +0 -0
  258. data/spec/dummy/tmp/uploads/20130503-1614-5904-3619/thumb_placeholder.png +0 -0
  259. data/spec/dummy/tmp/uploads/20130503-1614-5904-6961/normal_placeholder.png +0 -0
  260. data/spec/dummy/tmp/uploads/20130503-1614-5904-6961/placeholder.png +0 -0
  261. data/spec/dummy/tmp/uploads/20130503-1614-5904-6961/small_placeholder.png +0 -0
  262. data/spec/dummy/tmp/uploads/20130503-1614-5904-6961/thumb_placeholder.png +0 -0
  263. data/spec/dummy/tmp/uploads/20130503-1614-5904-8166/normal_placeholder.png +0 -0
  264. data/spec/dummy/tmp/uploads/20130503-1614-5904-8166/placeholder.png +0 -0
  265. data/spec/dummy/tmp/uploads/20130503-1614-5904-8166/small_placeholder.png +0 -0
  266. data/spec/dummy/tmp/uploads/20130503-1614-5904-8166/thumb_placeholder.png +0 -0
  267. data/spec/dummy/tmp/uploads/20130503-1630-6161-2793/normal_placeholder.png +0 -0
  268. data/spec/dummy/tmp/uploads/20130503-1630-6161-2793/placeholder.png +0 -0
  269. data/spec/dummy/tmp/uploads/20130503-1630-6161-2793/small_placeholder.png +0 -0
  270. data/spec/dummy/tmp/uploads/20130503-1630-6161-2793/thumb_placeholder.png +0 -0
  271. data/spec/dummy/tmp/uploads/20130503-1630-6161-4124/normal_placeholder.png +0 -0
  272. data/spec/dummy/tmp/uploads/20130503-1630-6161-4124/placeholder.png +0 -0
  273. data/spec/dummy/tmp/uploads/20130503-1630-6161-4124/small_placeholder.png +0 -0
  274. data/spec/dummy/tmp/uploads/20130503-1630-6161-4124/thumb_placeholder.png +0 -0
  275. data/spec/dummy/tmp/uploads/20130503-1630-6161-5065/normal_placeholder.png +0 -0
  276. data/spec/dummy/tmp/uploads/20130503-1630-6161-5065/placeholder.png +0 -0
  277. data/spec/dummy/tmp/uploads/20130503-1630-6161-5065/small_placeholder.png +0 -0
  278. data/spec/dummy/tmp/uploads/20130503-1630-6161-5065/thumb_placeholder.png +0 -0
  279. data/spec/dummy/tmp/uploads/20130506-1009-4529-0167/normal_placeholder.png +0 -0
  280. data/spec/dummy/tmp/uploads/20130506-1009-4529-0167/placeholder.png +0 -0
  281. data/spec/dummy/tmp/uploads/20130506-1009-4529-0167/small_placeholder.png +0 -0
  282. data/spec/dummy/tmp/uploads/20130506-1009-4529-0167/thumb_placeholder.png +0 -0
  283. data/spec/dummy/tmp/uploads/20130506-1009-4529-1078/normal_placeholder.png +0 -0
  284. data/spec/dummy/tmp/uploads/20130506-1009-4529-1078/placeholder.png +0 -0
  285. data/spec/dummy/tmp/uploads/20130506-1009-4529-1078/small_placeholder.png +0 -0
  286. data/spec/dummy/tmp/uploads/20130506-1009-4529-1078/thumb_placeholder.png +0 -0
  287. data/spec/dummy/tmp/uploads/20130506-1009-4529-8277/normal_placeholder.png +0 -0
  288. data/spec/dummy/tmp/uploads/20130506-1009-4529-8277/placeholder.png +0 -0
  289. data/spec/dummy/tmp/uploads/20130506-1009-4529-8277/small_placeholder.png +0 -0
  290. data/spec/dummy/tmp/uploads/20130506-1009-4529-8277/thumb_placeholder.png +0 -0
  291. data/spec/dummy/tmp/uploads/20130506-1015-4718-5926/normal_placeholder.png +0 -0
  292. data/spec/dummy/tmp/uploads/20130506-1015-4718-5926/placeholder.png +0 -0
  293. data/spec/dummy/tmp/uploads/20130506-1015-4718-5926/small_placeholder.png +0 -0
  294. data/spec/dummy/tmp/uploads/20130506-1015-4718-5926/thumb_placeholder.png +0 -0
  295. data/spec/dummy/tmp/uploads/20130506-1015-4718-8555/normal_placeholder.png +0 -0
  296. data/spec/dummy/tmp/uploads/20130506-1015-4718-8555/placeholder.png +0 -0
  297. data/spec/dummy/tmp/uploads/20130506-1015-4718-8555/small_placeholder.png +0 -0
  298. data/spec/dummy/tmp/uploads/20130506-1015-4718-8555/thumb_placeholder.png +0 -0
  299. data/spec/dummy/tmp/uploads/20130506-1015-4718-8970/normal_placeholder.png +0 -0
  300. data/spec/dummy/tmp/uploads/20130506-1015-4718-8970/placeholder.png +0 -0
  301. data/spec/dummy/tmp/uploads/20130506-1015-4718-8970/small_placeholder.png +0 -0
  302. data/spec/dummy/tmp/uploads/20130506-1015-4718-8970/thumb_placeholder.png +0 -0
  303. data/spec/dummy/tmp/uploads/20130506-1016-4827-2822/normal_placeholder.png +0 -0
  304. data/spec/dummy/tmp/uploads/20130506-1016-4827-2822/placeholder.png +0 -0
  305. data/spec/dummy/tmp/uploads/20130506-1016-4827-2822/small_placeholder.png +0 -0
  306. data/spec/dummy/tmp/uploads/20130506-1016-4827-2822/thumb_placeholder.png +0 -0
  307. data/spec/dummy/tmp/uploads/20130506-1016-4827-5903/normal_placeholder.png +0 -0
  308. data/spec/dummy/tmp/uploads/20130506-1016-4827-5903/placeholder.png +0 -0
  309. data/spec/dummy/tmp/uploads/20130506-1016-4827-5903/small_placeholder.png +0 -0
  310. data/spec/dummy/tmp/uploads/20130506-1016-4827-5903/thumb_placeholder.png +0 -0
  311. data/spec/dummy/tmp/uploads/20130506-1016-4827-7236/normal_placeholder.png +0 -0
  312. data/spec/dummy/tmp/uploads/20130506-1016-4827-7236/placeholder.png +0 -0
  313. data/spec/dummy/tmp/uploads/20130506-1016-4827-7236/small_placeholder.png +0 -0
  314. data/spec/dummy/tmp/uploads/20130506-1016-4827-7236/thumb_placeholder.png +0 -0
  315. data/spec/dummy/tmp/uploads/20130514-1348-12420-1171/normal_placeholder.png +0 -0
  316. data/spec/dummy/tmp/uploads/20130514-1348-12420-1171/placeholder.png +0 -0
  317. data/spec/dummy/tmp/uploads/20130514-1348-12420-1171/small_placeholder.png +0 -0
  318. data/spec/dummy/tmp/uploads/20130514-1348-12420-1171/thumb_placeholder.png +0 -0
  319. data/spec/dummy/tmp/uploads/20130514-1348-12420-1953/normal_placeholder.png +0 -0
  320. data/spec/dummy/tmp/uploads/20130514-1348-12420-1953/placeholder.png +0 -0
  321. data/spec/dummy/tmp/uploads/20130514-1348-12420-1953/small_placeholder.png +0 -0
  322. data/spec/dummy/tmp/uploads/20130514-1348-12420-1953/thumb_placeholder.png +0 -0
  323. data/spec/dummy/tmp/uploads/20130514-1348-12420-2097/normal_placeholder.png +0 -0
  324. data/spec/dummy/tmp/uploads/20130514-1348-12420-2097/placeholder.png +0 -0
  325. data/spec/dummy/tmp/uploads/20130514-1348-12420-2097/small_placeholder.png +0 -0
  326. data/spec/dummy/tmp/uploads/20130514-1348-12420-2097/thumb_placeholder.png +0 -0
  327. data/spec/dummy/tmp/uploads/20130514-1348-12420-2484/normal_placeholder.png +0 -0
  328. data/spec/dummy/tmp/uploads/20130514-1348-12420-2484/placeholder.png +0 -0
  329. data/spec/dummy/tmp/uploads/20130514-1348-12420-2484/small_placeholder.png +0 -0
  330. data/spec/dummy/tmp/uploads/20130514-1348-12420-2484/thumb_placeholder.png +0 -0
  331. data/spec/dummy/tmp/uploads/20130514-1348-12420-2606/normal_placeholder.png +0 -0
  332. data/spec/dummy/tmp/uploads/20130514-1348-12420-2606/placeholder.png +0 -0
  333. data/spec/dummy/tmp/uploads/20130514-1348-12420-2606/small_placeholder.png +0 -0
  334. data/spec/dummy/tmp/uploads/20130514-1348-12420-2606/thumb_placeholder.png +0 -0
  335. data/spec/dummy/tmp/uploads/20130514-1348-12420-2640/normal_placeholder.png +0 -0
  336. data/spec/dummy/tmp/uploads/20130514-1348-12420-2640/placeholder.png +0 -0
  337. data/spec/dummy/tmp/uploads/20130514-1348-12420-2640/small_placeholder.png +0 -0
  338. data/spec/dummy/tmp/uploads/20130514-1348-12420-2640/thumb_placeholder.png +0 -0
  339. data/spec/dummy/tmp/uploads/20130514-1348-12420-3942/normal_placeholder.png +0 -0
  340. data/spec/dummy/tmp/uploads/20130514-1348-12420-3942/placeholder.png +0 -0
  341. data/spec/dummy/tmp/uploads/20130514-1348-12420-3942/small_placeholder.png +0 -0
  342. data/spec/dummy/tmp/uploads/20130514-1348-12420-3942/thumb_placeholder.png +0 -0
  343. data/spec/dummy/tmp/uploads/20130514-1348-12420-3995/normal_placeholder.png +0 -0
  344. data/spec/dummy/tmp/uploads/20130514-1348-12420-3995/placeholder.png +0 -0
  345. data/spec/dummy/tmp/uploads/20130514-1348-12420-3995/small_placeholder.png +0 -0
  346. data/spec/dummy/tmp/uploads/20130514-1348-12420-3995/thumb_placeholder.png +0 -0
  347. data/spec/dummy/tmp/uploads/20130514-1348-12420-4465/normal_placeholder.png +0 -0
  348. data/spec/dummy/tmp/uploads/20130514-1348-12420-4465/placeholder.png +0 -0
  349. data/spec/dummy/tmp/uploads/20130514-1348-12420-4465/small_placeholder.png +0 -0
  350. data/spec/dummy/tmp/uploads/20130514-1348-12420-4465/thumb_placeholder.png +0 -0
  351. data/spec/dummy/tmp/uploads/20130514-1348-12420-4513/normal_placeholder.png +0 -0
  352. data/spec/dummy/tmp/uploads/20130514-1348-12420-4513/placeholder.png +0 -0
  353. data/spec/dummy/tmp/uploads/20130514-1348-12420-4513/small_placeholder.png +0 -0
  354. data/spec/dummy/tmp/uploads/20130514-1348-12420-4513/thumb_placeholder.png +0 -0
  355. data/spec/dummy/tmp/uploads/20130514-1348-12420-4527/normal_placeholder.png +0 -0
  356. data/spec/dummy/tmp/uploads/20130514-1348-12420-4527/placeholder.png +0 -0
  357. data/spec/dummy/tmp/uploads/20130514-1348-12420-4527/small_placeholder.png +0 -0
  358. data/spec/dummy/tmp/uploads/20130514-1348-12420-4527/thumb_placeholder.png +0 -0
  359. data/spec/dummy/tmp/uploads/20130514-1348-12420-4926/normal_placeholder.png +0 -0
  360. data/spec/dummy/tmp/uploads/20130514-1348-12420-4926/placeholder.png +0 -0
  361. data/spec/dummy/tmp/uploads/20130514-1348-12420-4926/small_placeholder.png +0 -0
  362. data/spec/dummy/tmp/uploads/20130514-1348-12420-4926/thumb_placeholder.png +0 -0
  363. data/spec/dummy/tmp/uploads/20130514-1348-12420-5213/normal_placeholder.png +0 -0
  364. data/spec/dummy/tmp/uploads/20130514-1348-12420-5213/placeholder.png +0 -0
  365. data/spec/dummy/tmp/uploads/20130514-1348-12420-5213/small_placeholder.png +0 -0
  366. data/spec/dummy/tmp/uploads/20130514-1348-12420-5213/thumb_placeholder.png +0 -0
  367. data/spec/dummy/tmp/uploads/20130514-1348-12420-5546/normal_placeholder.png +0 -0
  368. data/spec/dummy/tmp/uploads/20130514-1348-12420-5546/placeholder.png +0 -0
  369. data/spec/dummy/tmp/uploads/20130514-1348-12420-5546/small_placeholder.png +0 -0
  370. data/spec/dummy/tmp/uploads/20130514-1348-12420-5546/thumb_placeholder.png +0 -0
  371. data/spec/dummy/tmp/uploads/20130514-1348-12420-5678/normal_placeholder.png +0 -0
  372. data/spec/dummy/tmp/uploads/20130514-1348-12420-5678/placeholder.png +0 -0
  373. data/spec/dummy/tmp/uploads/20130514-1348-12420-5678/small_placeholder.png +0 -0
  374. data/spec/dummy/tmp/uploads/20130514-1348-12420-5678/thumb_placeholder.png +0 -0
  375. data/spec/dummy/tmp/uploads/20130514-1348-12420-5947/normal_placeholder.png +0 -0
  376. data/spec/dummy/tmp/uploads/20130514-1348-12420-5947/placeholder.png +0 -0
  377. data/spec/dummy/tmp/uploads/20130514-1348-12420-5947/small_placeholder.png +0 -0
  378. data/spec/dummy/tmp/uploads/20130514-1348-12420-5947/thumb_placeholder.png +0 -0
  379. data/spec/dummy/tmp/uploads/20130514-1348-12420-6549/normal_placeholder.png +0 -0
  380. data/spec/dummy/tmp/uploads/20130514-1348-12420-6549/placeholder.png +0 -0
  381. data/spec/dummy/tmp/uploads/20130514-1348-12420-6549/small_placeholder.png +0 -0
  382. data/spec/dummy/tmp/uploads/20130514-1348-12420-6549/thumb_placeholder.png +0 -0
  383. data/spec/dummy/tmp/uploads/20130514-1348-12420-6797/normal_placeholder.png +0 -0
  384. data/spec/dummy/tmp/uploads/20130514-1348-12420-6797/placeholder.png +0 -0
  385. data/spec/dummy/tmp/uploads/20130514-1348-12420-6797/small_placeholder.png +0 -0
  386. data/spec/dummy/tmp/uploads/20130514-1348-12420-6797/thumb_placeholder.png +0 -0
  387. data/spec/dummy/tmp/uploads/20130514-1348-12420-6962/normal_placeholder.png +0 -0
  388. data/spec/dummy/tmp/uploads/20130514-1348-12420-6962/placeholder.png +0 -0
  389. data/spec/dummy/tmp/uploads/20130514-1348-12420-6962/small_placeholder.png +0 -0
  390. data/spec/dummy/tmp/uploads/20130514-1348-12420-6962/thumb_placeholder.png +0 -0
  391. data/spec/dummy/tmp/uploads/20130514-1348-12420-6970/normal_placeholder.png +0 -0
  392. data/spec/dummy/tmp/uploads/20130514-1348-12420-6970/placeholder.png +0 -0
  393. data/spec/dummy/tmp/uploads/20130514-1348-12420-6970/small_placeholder.png +0 -0
  394. data/spec/dummy/tmp/uploads/20130514-1348-12420-6970/thumb_placeholder.png +0 -0
  395. data/spec/dummy/tmp/uploads/20130514-1348-12420-8091/normal_placeholder.png +0 -0
  396. data/spec/dummy/tmp/uploads/20130514-1348-12420-8091/placeholder.png +0 -0
  397. data/spec/dummy/tmp/uploads/20130514-1348-12420-8091/small_placeholder.png +0 -0
  398. data/spec/dummy/tmp/uploads/20130514-1348-12420-8091/thumb_placeholder.png +0 -0
  399. data/spec/dummy/tmp/uploads/20130514-1348-12420-8800/normal_placeholder.png +0 -0
  400. data/spec/dummy/tmp/uploads/20130514-1348-12420-8800/placeholder.png +0 -0
  401. data/spec/dummy/tmp/uploads/20130514-1348-12420-8800/small_placeholder.png +0 -0
  402. data/spec/dummy/tmp/uploads/20130514-1348-12420-8800/thumb_placeholder.png +0 -0
  403. data/spec/dummy/tmp/uploads/20130514-1348-12420-8918/normal_placeholder.png +0 -0
  404. data/spec/dummy/tmp/uploads/20130514-1348-12420-8918/placeholder.png +0 -0
  405. data/spec/dummy/tmp/uploads/20130514-1348-12420-8918/small_placeholder.png +0 -0
  406. data/spec/dummy/tmp/uploads/20130514-1348-12420-8918/thumb_placeholder.png +0 -0
  407. data/spec/dummy/tmp/uploads/20130514-1348-12420-9407/normal_placeholder.png +0 -0
  408. data/spec/dummy/tmp/uploads/20130514-1348-12420-9407/placeholder.png +0 -0
  409. data/spec/dummy/tmp/uploads/20130514-1348-12420-9407/small_placeholder.png +0 -0
  410. data/spec/dummy/tmp/uploads/20130514-1348-12420-9407/thumb_placeholder.png +0 -0
  411. data/spec/dummy/tmp/uploads/20130514-1348-12420-9499/normal_placeholder.png +0 -0
  412. data/spec/dummy/tmp/uploads/20130514-1348-12420-9499/placeholder.png +0 -0
  413. data/spec/dummy/tmp/uploads/20130514-1348-12420-9499/small_placeholder.png +0 -0
  414. data/spec/dummy/tmp/uploads/20130514-1348-12420-9499/thumb_placeholder.png +0 -0
  415. data/spec/dummy/tmp/uploads/20130514-1348-12420-9908/normal_placeholder.png +0 -0
  416. data/spec/dummy/tmp/uploads/20130514-1348-12420-9908/placeholder.png +0 -0
  417. data/spec/dummy/tmp/uploads/20130514-1348-12420-9908/small_placeholder.png +0 -0
  418. data/spec/dummy/tmp/uploads/20130514-1348-12420-9908/thumb_placeholder.png +0 -0
  419. data/spec/dummy/tmp/uploads/20130514-1348-12420-9932/normal_placeholder.png +0 -0
  420. data/spec/dummy/tmp/uploads/20130514-1348-12420-9932/placeholder.png +0 -0
  421. data/spec/dummy/tmp/uploads/20130514-1348-12420-9932/small_placeholder.png +0 -0
  422. data/spec/dummy/tmp/uploads/20130514-1348-12420-9932/thumb_placeholder.png +0 -0
  423. data/spec/dummy/tmp/uploads/20130514-1349-12420-0034/normal_placeholder.png +0 -0
  424. data/spec/dummy/tmp/uploads/20130514-1349-12420-0034/placeholder.png +0 -0
  425. data/spec/dummy/tmp/uploads/20130514-1349-12420-0034/small_placeholder.png +0 -0
  426. data/spec/dummy/tmp/uploads/20130514-1349-12420-0034/thumb_placeholder.png +0 -0
  427. data/spec/dummy/tmp/uploads/20130514-1349-12420-2633/normal_placeholder.png +0 -0
  428. data/spec/dummy/tmp/uploads/20130514-1349-12420-2633/placeholder.png +0 -0
  429. data/spec/dummy/tmp/uploads/20130514-1349-12420-2633/small_placeholder.png +0 -0
  430. data/spec/dummy/tmp/uploads/20130514-1349-12420-2633/thumb_placeholder.png +0 -0
  431. data/spec/dummy/tmp/uploads/20130514-1349-12420-3840/normal_placeholder.png +0 -0
  432. data/spec/dummy/tmp/uploads/20130514-1349-12420-3840/placeholder.png +0 -0
  433. data/spec/dummy/tmp/uploads/20130514-1349-12420-3840/small_placeholder.png +0 -0
  434. data/spec/dummy/tmp/uploads/20130514-1349-12420-3840/thumb_placeholder.png +0 -0
  435. data/spec/dummy/tmp/uploads/20130514-1349-12420-4800/normal_placeholder.png +0 -0
  436. data/spec/dummy/tmp/uploads/20130514-1349-12420-4800/placeholder.png +0 -0
  437. data/spec/dummy/tmp/uploads/20130514-1349-12420-4800/small_placeholder.png +0 -0
  438. data/spec/dummy/tmp/uploads/20130514-1349-12420-4800/thumb_placeholder.png +0 -0
  439. data/spec/dummy/tmp/uploads/20130514-1349-12420-6878/normal_placeholder.png +0 -0
  440. data/spec/dummy/tmp/uploads/20130514-1349-12420-6878/placeholder.png +0 -0
  441. data/spec/dummy/tmp/uploads/20130514-1349-12420-6878/small_placeholder.png +0 -0
  442. data/spec/dummy/tmp/uploads/20130514-1349-12420-6878/thumb_placeholder.png +0 -0
  443. data/spec/dummy/tmp/uploads/20130514-1349-12420-7145/normal_placeholder.png +0 -0
  444. data/spec/dummy/tmp/uploads/20130514-1349-12420-7145/placeholder.png +0 -0
  445. data/spec/dummy/tmp/uploads/20130514-1349-12420-7145/small_placeholder.png +0 -0
  446. data/spec/dummy/tmp/uploads/20130514-1349-12420-7145/thumb_placeholder.png +0 -0
  447. data/spec/dummy/tmp/uploads/20130514-1349-12420-7187/normal_placeholder.png +0 -0
  448. data/spec/dummy/tmp/uploads/20130514-1349-12420-7187/placeholder.png +0 -0
  449. data/spec/dummy/tmp/uploads/20130514-1349-12420-7187/small_placeholder.png +0 -0
  450. data/spec/dummy/tmp/uploads/20130514-1349-12420-7187/thumb_placeholder.png +0 -0
  451. data/spec/dummy/tmp/uploads/20130514-1349-12420-7499/normal_placeholder.png +0 -0
  452. data/spec/dummy/tmp/uploads/20130514-1349-12420-7499/placeholder.png +0 -0
  453. data/spec/dummy/tmp/uploads/20130514-1349-12420-7499/small_placeholder.png +0 -0
  454. data/spec/dummy/tmp/uploads/20130514-1349-12420-7499/thumb_placeholder.png +0 -0
  455. data/spec/dummy/tmp/uploads/20130515-1904-24025-2789/normal_placeholder.png +0 -0
  456. data/spec/dummy/tmp/uploads/20130515-1904-24025-2789/placeholder.png +0 -0
  457. data/spec/dummy/tmp/uploads/20130515-1904-24025-2789/small_placeholder.png +0 -0
  458. data/spec/dummy/tmp/uploads/20130515-1904-24025-2789/thumb_placeholder.png +0 -0
  459. data/spec/factories/blocks.rb +1 -0
  460. data/spec/factories/keyframes.rb +8 -0
  461. data/spec/factories/layer.rb +33 -0
  462. data/spec/features/blocks/create_spec.rb +8 -5
  463. data/spec/features/blocks/delete_spec.rb +2 -2
  464. data/spec/features/blocks/edit_spec.rb +29 -7
  465. data/spec/features/blocks/index_spec.rb +15 -0
  466. data/spec/features/blocks/show_spec.rb +19 -5
  467. data/spec/features/layers/animation_layers/create_spec.rb +27 -0
  468. data/spec/features/layers/animation_layers/edit_spec.rb +27 -0
  469. data/spec/features/layers/embed_layers/create_spec.rb +25 -0
  470. data/spec/features/layers/embed_layers/edit_spec.rb +28 -0
  471. data/spec/features/layers/image_layers/create_spec.rb +8 -5
  472. data/spec/features/layers/image_layers/delete_spec.rb +3 -4
  473. data/spec/features/layers/image_layers/edit_spec.rb +34 -6
  474. data/spec/features/layers/paragraph_layers/create_spec.rb +27 -0
  475. data/spec/features/layers/paragraph_layers/edit_spec.rb +31 -0
  476. data/spec/features/layers/text_layers/create_spec.rb +29 -0
  477. data/spec/features/layers/text_layers/edit_spec.rb +29 -0
  478. data/spec/features/logout_spec.rb +12 -0
  479. data/spec/features/pages/edit_spec.rb +74 -0
  480. data/spec/features/pages/show_spec.rb +32 -0
  481. data/spec/models/animation_layer_spec.rb +46 -0
  482. data/spec/models/block_spec.rb +18 -0
  483. data/spec/models/embed_layer_spec.rb +21 -0
  484. data/spec/models/end_state_keyframe_spec.rb +18 -0
  485. data/spec/models/image_layer_spec.rb +19 -0
  486. data/spec/models/keyframe_spec.rb +185 -0
  487. data/spec/models/layer_spec.rb +147 -0
  488. data/spec/models/page_spec.rb +57 -7
  489. data/spec/models/paragraph_layer_spec.rb +44 -0
  490. data/spec/models/start_state_keyframe_spec.rb +18 -0
  491. data/spec/models/target_state_keyframe_spec.rb +18 -0
  492. data/spec/models/text_layer_spec.rb +56 -0
  493. data/spec/placeholder.png +0 -0
  494. data/spec/spec_helper.rb +4 -1
  495. data/spec/support/lets.rb +17 -6
  496. data/spec/validators/css_name_validator_spec.rb +34 -0
  497. data/spec/view_objects/animation_layer_view_object_spec.rb +77 -0
  498. data/spec/view_objects/image_layer_view_object_spec.rb +13 -0
  499. data/spec/view_objects/keyframe_view_object_spec.rb +119 -0
  500. data/spec/view_objects/layer_view_object_spec.rb +57 -0
  501. data/spec/view_objects/paragraph_layer_view_object_spec.rb +23 -0
  502. data/spec/view_objects/text_layer_view_object_spec.rb +33 -0
  503. data/vendor/assets/javascripts/jquery-1.8.3.min.js +2 -0
  504. data/vendor/assets/javascripts/jquery.easing.1.3.js +205 -0
  505. data/vendor/assets/javascripts/jquery.quicksand.js +443 -0
  506. data/vendor/assets/javascripts/scroll-startstop.events.jquery.js +69 -0
  507. data/vendor/assets/javascripts/skrollr.ie.min.js +2 -0
  508. data/vendor/assets/javascripts/skrollr.min.js +2 -0
  509. data/vendor/assets/javascripts/skrollr.mobile.min.js +2 -0
  510. metadata +816 -101
  511. data/app/views/layouts/flms/application.html.erb +0 -14
  512. data/db/migrate/20130312220011_create_flms_layers.rb +0 -13
  513. data/db/migrate/20130313002421_add_image_to_layers.rb +0 -5
  514. data/spec/dummy/tmp/pids/server.pid +0 -1
  515. data/spec/factories/image_layer.rb +0 -6
  516. data/spec/features/blocks/activating_blocks_spec.rb +0 -18
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'AnimationLayers > Edit', js: true do
4
+ include NamedFactories
5
+
6
+ scenario 'editing an existing animation layer' do
7
+ animation_layer_1a1
8
+
9
+ capybara_sign_in user_1
10
+ visit "/flms/blocks/#{block_1a.id}/edit"
11
+
12
+ # click on the 'edit' button.
13
+ click_link "edit-layer-#{animation_layer_1a1.id}"
14
+
15
+ fill_in 'Name', with: 'new-layer-name'
16
+ select 'contain', from: 'animation_layer_image_display_mode'
17
+
18
+ click_button 'Update Animation layer'
19
+
20
+ # Expect to be back at the block edit page.
21
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
22
+
23
+ # Check database updates.
24
+ expect(Flms::Layer).to have(1).instances
25
+ expect(Flms::Layer.first.name).to eql 'new-layer-name'
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Embed Layers > Create' do
4
+ include NamedFactories
5
+
6
+ scenario 'creating a new embed layer' do
7
+ capybara_sign_in user_1
8
+ visit "/flms/blocks/#{block_1a.id}/edit"
9
+ click_link 'Add Embed Layer'
10
+ fill_in 'Name', with: 'my-new-layer'
11
+ fill_in 'Embed code', with: '<iframe src="http://my.video.com"></iframe>'
12
+ click_button 'Create Embed layer'
13
+
14
+ # Expect to be back at the block edit page.
15
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
16
+
17
+ # Expect that the layer is created.
18
+ expect(Flms::Layer).to have(1).instances
19
+ expect(block_1a.reload).to have(1).layers
20
+ layer = block_1a.layers.first
21
+ expect(layer.class).to eql Flms::EmbedLayer
22
+ expect(layer.name).to eql 'my-new-layer'
23
+ expect(layer.embed_code).to eql '<iframe src="http://my.video.com"></iframe>'
24
+ end
25
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'EmbedLayers > Edit', js: true do
4
+ include NamedFactories
5
+
6
+ scenario 'editing an existing embed layer' do
7
+ embed_layer_1a1
8
+
9
+ capybara_sign_in user_1
10
+ visit "/flms/blocks/#{block_1a.id}/edit"
11
+
12
+ # click on the 'edit' button.
13
+ click_link "edit-layer-#{embed_layer_1a1.id}"
14
+
15
+ fill_in 'Name', with: 'new-layer-name'
16
+ fill_in 'Embed code', with: 'a-new-embed-code'
17
+
18
+ click_button 'Update Embed layer'
19
+
20
+ # Expect to be back at the block edit page.
21
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
22
+
23
+ # Check database updates.
24
+ expect(Flms::Layer).to have(1).instances
25
+ expect(Flms::Layer.first.name).to eql 'new-layer-name'
26
+ expect(Flms::Layer.first.embed_code).to eql 'a-new-embed-code'
27
+ end
28
+ end
@@ -5,19 +5,22 @@ feature 'ImageLayers > Create' do
5
5
 
6
6
  scenario 'creating a new image layer' do
7
7
  capybara_sign_in user_1
8
- visit "/flms/pages/#{page_1.url}/blocks/#{block_1a.id}"
8
+ visit "/flms/blocks/#{block_1a.id}/edit"
9
9
  click_link 'Add Image Layer'
10
- fill_in 'Name', with: 'my new layer'
10
+ fill_in 'Name', with: 'my-new-layer'
11
+ fill_in 'Z index', with: '20'
11
12
  click_button 'Create Image layer'
12
13
 
13
- # Expect to be back at the block page.
14
- expect(current_path).to eql "/flms/pages/#{page_1.url}/blocks/#{block_1a.id}"
14
+ # Expect to be back at the block edit page.
15
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
15
16
 
16
17
  # Expect that the layer is created.
17
18
  expect(Flms::Layer).to have(1).instances
18
19
  expect(block_1a.reload).to have(1).layers
19
20
  layer = block_1a.layers.first
20
21
  expect(layer.class).to eql Flms::ImageLayer
21
- expect(layer.name).to eql 'my new layer'
22
+ expect(layer.name).to eql 'my-new-layer'
23
+ expect(layer.z_index).to eql '20'
22
24
  end
25
+
23
26
  end
@@ -7,17 +7,16 @@ feature 'ImageLayers > Delete', js: true do
7
7
  image_layer_1a1
8
8
 
9
9
  capybara_sign_in user_1
10
- visit "/flms/pages/#{page_1.url}/blocks/#{block_1a.id}"
10
+ visit "/flms/blocks/#{block_1a.id}/edit"
11
11
 
12
12
  # Click on the 'delete' button.
13
13
  page.execute_script 'window.confirm = function() { return true }'
14
- find('.icon-trash').click
14
+ click_link "delete-layer-#{image_layer_1a1.id}"
15
15
 
16
16
  # Expect to be back at the block page.
17
- expect(current_path).to eql "/flms/pages/#{page_1.url}/blocks/#{block_1a.id}"
17
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
18
18
 
19
19
  # Expect that the layer is deleted.
20
20
  expect(Flms::Layer).to have(0).instances
21
21
  end
22
22
  end
23
-
@@ -7,19 +7,47 @@ feature 'ImageLayers > Edit', js: true do
7
7
  image_layer_1a1
8
8
 
9
9
  capybara_sign_in user_1
10
- visit "/flms/pages/#{page_1.url}/blocks/#{block_1a.id}"
10
+ visit "/flms/blocks/#{block_1a.id}/edit"
11
11
 
12
12
  # click on the 'edit' button.
13
- find('.btn.edit').click
13
+ click_link "edit-layer-#{image_layer_1a1.id}"
14
+
15
+ fill_in 'Name', with: 'new-layer-name'
16
+ check 'Hide at end'
17
+ check 'Active'
18
+
19
+ select 'contain', from: 'image_layer_image_display_mode'
20
+
21
+ fill_in 'image_layer_start_state_keyframe_attributes_scroll_start', with: 1
22
+ fill_in 'image_layer_start_state_keyframe_attributes_scroll_duration', with: '2'
23
+ fill_in 'image_layer_start_state_keyframe_attributes_opacity_percent', with: '50'
24
+ fill_in 'image_layer_start_state_keyframe_attributes_scale_percent', with: '25'
25
+ fill_in 'image_layer_start_state_keyframe_attributes_blur_percent', with: '50'
26
+ select 'center', from: 'image_layer_start_state_keyframe_attributes_position_name'
27
+ fill_in 'image_layer_start_state_keyframe_attributes_margin_left_percent', with: '10'
28
+ fill_in 'image_layer_start_state_keyframe_attributes_margin_top_percent', with: '20'
29
+
30
+ fill_in 'image_layer_target_state_keyframe_attributes_scroll_duration', with: '3'
31
+ select 'center', from: 'image_layer_target_state_keyframe_attributes_position_name'
32
+ fill_in 'image_layer_target_state_keyframe_attributes_margin_left_percent', with: '10'
33
+ fill_in 'image_layer_target_state_keyframe_attributes_margin_top_percent', with: '20'
34
+
35
+ fill_in 'image_layer_end_state_keyframe_attributes_scroll_duration', with: '4'
36
+ fill_in 'image_layer_end_state_keyframe_attributes_opacity_percent', with: '60'
37
+ fill_in 'image_layer_end_state_keyframe_attributes_scale_percent', with: '30'
38
+ fill_in 'image_layer_end_state_keyframe_attributes_blur_percent', with: '60'
39
+ select 'center', from: 'image_layer_end_state_keyframe_attributes_position_name'
40
+ fill_in 'image_layer_end_state_keyframe_attributes_margin_left_percent', with: '10'
41
+ fill_in 'image_layer_end_state_keyframe_attributes_margin_top_percent', with: '20'
14
42
 
15
- fill_in 'Name', with: 'new layer name'
16
43
  click_button 'Update Image layer'
17
44
 
18
- # Expect to be back at the block page.
19
- expect(current_path).to eql "/flms/pages/#{page_1.url}/blocks/#{block_1a.id}"
45
+ # Expect to be back at the block edit page.
46
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
20
47
 
21
48
  # Check database updates.
22
49
  expect(Flms::Layer).to have(1).instances
23
- expect(image_layer_1a1.reload.name).to eql 'new layer name'
50
+ expect(Flms::Layer.first.name).to eql 'new-layer-name'
51
+ expect(Flms::Layer.first.active).to be_true
24
52
  end
25
53
  end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'TextLayers > Create' do
4
+ include NamedFactories
5
+
6
+ scenario 'creating a new paragraph layer' do
7
+ capybara_sign_in user_1
8
+ visit "/flms/blocks/#{block_1a.id}/edit"
9
+ click_link 'Add Paragraph Layer'
10
+ fill_in 'Name', with: 'my-new-layer'
11
+ fill_in 'Header', with: 'header text'
12
+ fill_in 'Body', with: 'body content'
13
+ click_button 'Create Paragraph layer'
14
+
15
+ # Expect to be back at the block edit page.
16
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
17
+
18
+ # Expect that the layer is created.
19
+ expect(Flms::Layer).to have(1).instances
20
+ expect(block_1a.reload).to have(1).layers
21
+ layer = block_1a.layers.first
22
+ expect(layer.class).to eql Flms::ParagraphLayer
23
+ expect(layer.name).to eql 'my-new-layer'
24
+ expect(layer.header).to eql 'header text'
25
+ expect(layer.body).to eql 'body content'
26
+ end
27
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'ParagraphLayers > Edit', js: true do
4
+ include NamedFactories
5
+
6
+ scenario 'editing an existing paragraph layer' do
7
+ paragraph_layer_1a1
8
+
9
+ capybara_sign_in user_1
10
+ visit "/flms/blocks/#{block_1a.id}/edit"
11
+
12
+ # click on the 'edit' button.
13
+ click_link "edit-layer-#{paragraph_layer_1a1.id}"
14
+
15
+ fill_in 'Name', with: 'new-layer-name'
16
+ fill_in 'Header', with: 'header text'
17
+ fill_in 'Body', with: 'body text'
18
+ fill_in 'Color', with: 'abcabc'
19
+
20
+ click_button 'Update Paragraph layer'
21
+
22
+ # Expect to be back at the block edit page.
23
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
24
+
25
+ # Check database updates.
26
+ expect(Flms::Layer).to have(1).instances
27
+ expect(Flms::Layer.first.name).to eql 'new-layer-name'
28
+ expect(Flms::Layer.first.header).to eql 'header text'
29
+ expect(Flms::Layer.first.body).to eql 'body text'
30
+ end
31
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'TextLayers > Create' do
4
+ include NamedFactories
5
+
6
+ scenario 'creating a new text layer' do
7
+ capybara_sign_in user_1
8
+ visit "/flms/blocks/#{block_1a.id}/edit"
9
+ click_link 'Add Text Layer'
10
+ fill_in 'Name', with: 'my-new-layer'
11
+ fill_in 'Text', with: 'layer text content'
12
+ fill_in 'Font size', with: '0.5'
13
+ fill_in 'Color', with: 'fff'
14
+ click_button 'Create Text layer'
15
+
16
+ # Expect to be back at the block edit page.
17
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
18
+
19
+ # Expect that the layer is created.
20
+ expect(Flms::Layer).to have(1).instances
21
+ expect(block_1a.reload).to have(1).layers
22
+ layer = block_1a.layers.first
23
+ expect(layer.class).to eql Flms::TextLayer
24
+ expect(layer.name).to eql 'my-new-layer'
25
+ expect(layer.text).to eql 'layer text content'
26
+ expect(layer.font_size).to eql 0.5
27
+ expect(layer.color).to eql 'fff'
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'TextLayers > Edit', js: true do
4
+ include NamedFactories
5
+
6
+ scenario 'editing an existing text layer' do
7
+ text_layer_1a1
8
+
9
+ capybara_sign_in user_1
10
+ visit "/flms/blocks/#{block_1a.id}/edit"
11
+
12
+ # click on the 'edit' button.
13
+ click_link "edit-layer-#{text_layer_1a1.id}"
14
+
15
+ fill_in 'Name', with: 'new-layer-name'
16
+ fill_in 'Text', with: 'layer text content'
17
+ fill_in 'Font size', with: '0.5'
18
+ fill_in 'Color', with: 'fff'
19
+
20
+ click_button 'Update Text layer'
21
+
22
+ # Expect to be back at the block page.
23
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
24
+
25
+ # Check database updates.
26
+ expect(Flms::Layer).to have(1).instances
27
+ expect(Flms::Layer.first.name).to eql 'new-layer-name'
28
+ end
29
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'log out' do
4
+ include NamedFactories
5
+
6
+ scenario 'logged in user can log out via /flms/logout' do
7
+ capybara_sign_in user_1
8
+ visit '/flms/logout'
9
+ expect(current_path).to eql "/"
10
+ end
11
+ end
12
+
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Pages > Edit' do
4
+ include NamedFactories
5
+
6
+ scenario 'edit title and url for an existing page' do
7
+ capybara_sign_in user_1
8
+ visit "/flms/pages/#{page_1.url}/edit"
9
+ fill_in 'Title', with: 'my new title'
10
+ fill_in 'Url', with: 'my new url'
11
+ click_button 'Update Page'
12
+ expect(page_1.reload.title).to eql 'my new title'
13
+ expect(page_1.url).to eql 'my new url'
14
+ end
15
+
16
+ scenario 'click name of block to link to edit page for that block' do
17
+ block_1a
18
+ capybara_sign_in user_1
19
+ visit "/flms/pages/#{page_1.url}/edit"
20
+ click_link block_1a.name
21
+ expect(current_path).to eql "/flms/blocks/#{block_1a.id}/edit"
22
+ end
23
+
24
+ scenario 'click the button to remote a block from the page' do
25
+ block_1a
26
+ block_1c
27
+ capybara_sign_in user_1
28
+ visit "/flms/pages/#{page_1.url}/edit"
29
+ expect(page.find('.block_list')).to have_text block_1a.name
30
+ expect(page.find('.block_list')).to have_text block_1c.name
31
+ click_link "remove-block-#{block_1c.id}"
32
+ expect(page.find('.block_list')).to have_text block_1a.name
33
+ expect(page.find('.block_list')).not_to have_text block_1c.name
34
+ expect(current_path).to eql "/flms/pages/#{page_1.url}/edit"
35
+ end
36
+
37
+ scenario 'link an existing block to this page' do
38
+ block
39
+ capybara_sign_in user_1
40
+ visit "/flms/pages/#{page_1.url}/edit"
41
+ expect(page.find('.block_list')).not_to have_text block.name
42
+ select block.name, from: 'block_id'
43
+ click_button 'Add'
44
+ expect(page.find('.block_list')).to have_text block.name
45
+ end
46
+
47
+ scenario 'activate a block', js: true do
48
+ block_1a
49
+ capybara_sign_in user_1
50
+ visit "/flms/pages/#{page_1.url}/edit"
51
+ page.evaluate_script "$('.switch').bootstrapSwitch('setState', true);"
52
+ click_on 'save'
53
+ sleep 0.1
54
+ expect(block_1a.reload.blocks_pages.first).to be_active
55
+ end
56
+
57
+ scenario 'drag blocks to rearrange them', js: true do
58
+ block_1a
59
+ block_1c
60
+ capybara_sign_in user_1
61
+ visit "/flms/pages/#{page_1.url}/edit"
62
+
63
+ drag_shim_url = 'https://raw.github.com/mattheworiordan/jquery.simulate.drag-sortable.js/master/jquery.simulate.drag-sortable.js'
64
+ page.evaluate_script "$.getScript( \"#{ drag_shim_url }\", function () { "\
65
+ "$('[data-block-id=\"#{block_1a.id}\"]').simulateDragSortable({ move: 1 }); " \
66
+ "});"
67
+
68
+ sleep 0.1
69
+ click_on 'save'
70
+ sleep 0.1
71
+ expect(block_1c.reload.blocks_pages.first.ordering).to eql 0
72
+ expect(block_1a.reload.blocks_pages.first.ordering).to eql 1
73
+ end
74
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Pages > Show' do
4
+ include NamedFactories
5
+
6
+ let(:disabled_layer) { create :text_layer, block: block_1a, active: false }
7
+
8
+ scenario 'shows the page for a standard html request and only includes active blocks' do
9
+ page_1
10
+ image_layer_1a1
11
+ image_layer_1b1_inactive
12
+ image_layer_1c1
13
+ visit "/flms/pages/#{page_1.url}"
14
+ expect(page.body).to have_content page_1.title
15
+ expect(page).to have_selector ".block\##{block_1a.name}"
16
+ expect(page).not_to have_selector ".block\##{block_1b_inactive.name}"
17
+ expect(page).to have_selector ".block\##{block_1c.name}"
18
+ end
19
+
20
+ scenario 'shows the page and includes an unordered list with nav items' do
21
+ page_1
22
+ image_layer_1a1
23
+ image_layer_1c1
24
+ visit "/flms/pages/#{page_1.url}"
25
+ expect(page).to have_selector "li\##{ block_1a.name }"
26
+ expect(page).to have_selector ".name\##{ block_1a.name }"
27
+ expect(page).to have_selector "a\##{ block_1a.name }"
28
+ expect(page).to have_content block_1a.title
29
+ expect(page).to have_content block_1c.title
30
+ end
31
+
32
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe Flms::AnimationLayer do
4
+ include NamedFactories
5
+
6
+ describe 'view_object' do
7
+ it 'provides a view object' do
8
+ expect(subject.view_object.is_a?(Flms::AnimationLayerViewObject)).to be_true
9
+ end
10
+ end
11
+
12
+ describe 'image attachments' do
13
+ let(:layer) { animation_layer_1a1 }
14
+
15
+ it 'has an attachment' do
16
+ expect(layer.image.path).to match 'placeholder.png'
17
+ end
18
+ end
19
+
20
+ describe 'validations' do
21
+ describe 'for frame_rate' do
22
+ it 'does not allow negative frame rate' do
23
+ animation_layer_1a1.update_attributes frame_rate: -1
24
+ expect(animation_layer_1a1).to have(1).error_on(:frame_rate)
25
+ end
26
+
27
+ it 'does not allow frame rate of zero' do
28
+ animation_layer_1a1.update_attributes frame_rate: 0
29
+ expect(animation_layer_1a1).to have(1).error_on(:frame_rate)
30
+ end
31
+ end
32
+
33
+ describe 'for frame_count' do
34
+ it 'does not allow negative frame count' do
35
+ animation_layer_1a1.update_attributes frame_count: -1
36
+ expect(animation_layer_1a1).to have(1).error_on(:frame_count)
37
+ end
38
+
39
+ it 'does not allow frame count of zero' do
40
+ animation_layer_1a1.update_attributes frame_count: 0
41
+ expect(animation_layer_1a1).to have(1).error_on(:frame_count)
42
+ end
43
+ end
44
+ end
45
+
46
+ end