inkwell_timelines 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +187 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/images/inkwell_timelines/checkbox-checked.png +0 -0
  5. data/app/assets/images/inkwell_timelines/checkbox-unchecked.png +0 -0
  6. data/app/assets/images/inkwell_timelines/minus.png +0 -0
  7. data/app/assets/images/inkwell_timelines/plus.png +0 -0
  8. data/app/assets/images/inkwell_timelines/radiobutton_no.png +0 -0
  9. data/app/assets/images/inkwell_timelines/radiobutton_yes.png +0 -0
  10. data/app/assets/images/inkwell_timelines/up-down.png +0 -0
  11. data/app/assets/images/inkwell_timelines/wi-comment-hover.png +0 -0
  12. data/app/assets/images/inkwell_timelines/wi-comment.png +0 -0
  13. data/app/assets/images/inkwell_timelines/wi-favorite-active.png +0 -0
  14. data/app/assets/images/inkwell_timelines/wi-favorite-hover.png +0 -0
  15. data/app/assets/images/inkwell_timelines/wi-favorite.png +0 -0
  16. data/app/assets/images/inkwell_timelines/wi-reblog-active.png +0 -0
  17. data/app/assets/images/inkwell_timelines/wi-reblog-hover.png +0 -0
  18. data/app/assets/images/inkwell_timelines/wi-reblog.png +0 -0
  19. data/app/assets/javascripts/inkwell_timelines/index.js.erb +17 -0
  20. data/app/assets/javascripts/inkwell_timelines/inkwell_multi_selector.js +216 -0
  21. data/app/assets/javascripts/inkwell_timelines/inkwell_timeline.js.erb +149 -0
  22. data/app/assets/stylesheets/inkwell_timelines/index.css +30 -0
  23. data/app/assets/stylesheets/inkwell_timelines/multi_selector.css.erb +112 -0
  24. data/app/assets/stylesheets/inkwell_timelines/tab-menu.css +26 -0
  25. data/app/assets/stylesheets/inkwell_timelines/wall_item.css.erb +106 -0
  26. data/app/controllers/inkwell_timelines/application_controller.rb +4 -0
  27. data/app/helpers/inkwell_timelines/application_helper.rb +4 -0
  28. data/app/views/default_partials/_comment.html.erb +21 -0
  29. data/app/views/default_partials/_multi_selector.html.erb +15 -0
  30. data/app/views/default_partials/_multi_selector_items.html.erb +8 -0
  31. data/app/views/default_partials/_post.html.erb +22 -0
  32. data/app/views/default_partials/_tab_menu.html.erb +9 -0
  33. data/app/views/layouts/inkwell_timelines/application.html.erb +14 -0
  34. data/config/routes.rb +2 -0
  35. data/lib/inkwell_timelines.rb +6 -0
  36. data/lib/inkwell_timelines/engine.rb +5 -0
  37. data/lib/inkwell_timelines/version.rb +3 -0
  38. data/lib/main/to_controller.rb +22 -0
  39. data/lib/main/to_helpers.rb +93 -0
  40. data/lib/tasks/inkwell_timelines_tasks.rake +4 -0
  41. data/test/dummy/Rakefile +7 -0
  42. data/test/dummy/app/assets/javascripts/application.js +16 -0
  43. data/test/dummy/app/assets/javascripts/test.js +2 -0
  44. data/test/dummy/app/assets/stylesheets/application.css +14 -0
  45. data/test/dummy/app/assets/stylesheets/test.css +4 -0
  46. data/test/dummy/app/controllers/application_controller.rb +9 -0
  47. data/test/dummy/app/controllers/test_controller.rb +5 -0
  48. data/test/dummy/app/controllers/timeline_controller.rb +11 -0
  49. data/test/dummy/app/helpers/application_helper.rb +2 -0
  50. data/test/dummy/app/helpers/test_helper.rb +2 -0
  51. data/test/dummy/app/models/blogline.rb +3 -0
  52. data/test/dummy/app/models/bloglines_categories.rb +3 -0
  53. data/test/dummy/app/models/category.rb +7 -0
  54. data/test/dummy/app/models/comment.rb +16 -0
  55. data/test/dummy/app/models/favoriteline.rb +3 -0
  56. data/test/dummy/app/models/post.rb +16 -0
  57. data/test/dummy/app/models/user.rb +109 -0
  58. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  59. data/test/dummy/app/views/test/show.html.erb +1 -0
  60. data/test/dummy/app/views/timeline/show.html.erb +1 -0
  61. data/test/dummy/config.ru +4 -0
  62. data/test/dummy/config/application.rb +59 -0
  63. data/test/dummy/config/boot.rb +10 -0
  64. data/test/dummy/config/database.yml +25 -0
  65. data/test/dummy/config/environment.rb +5 -0
  66. data/test/dummy/config/environments/development.rb +37 -0
  67. data/test/dummy/config/environments/production.rb +67 -0
  68. data/test/dummy/config/environments/test.rb +37 -0
  69. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  70. data/test/dummy/config/initializers/inflections.rb +15 -0
  71. data/test/dummy/config/initializers/inkwell_timelines.rb +42 -0
  72. data/test/dummy/config/initializers/mime_types.rb +5 -0
  73. data/test/dummy/config/initializers/secret_token.rb +7 -0
  74. data/test/dummy/config/initializers/session_store.rb +8 -0
  75. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  76. data/test/dummy/config/locales/en.yml +5 -0
  77. data/test/dummy/config/routes.rb +5 -0
  78. data/test/dummy/db/development.sqlite3 +0 -0
  79. data/test/dummy/db/migrate/20130422111954_create_posts.rb +16 -0
  80. data/test/dummy/db/migrate/20130422112200_create_users.rb +10 -0
  81. data/test/dummy/db/migrate/20130422112350_create_comments.rb +16 -0
  82. data/test/dummy/db/migrate/20130422112504_create_bloglines.rb +13 -0
  83. data/test/dummy/db/migrate/20130422112804_create_favoritelines.rb +11 -0
  84. data/test/dummy/db/migrate/20130422112954_create_categories.rb +14 -0
  85. data/test/dummy/db/migrate/20130422113135_create_bloglines_categories.rb +12 -0
  86. data/test/dummy/db/schema.rb +92 -0
  87. data/test/dummy/db/seeds.rb +625 -0
  88. data/test/dummy/db/test.sqlite3 +0 -0
  89. data/test/dummy/log/development.log +104306 -0
  90. data/test/dummy/log/test.log +815 -0
  91. data/test/dummy/public/404.html +26 -0
  92. data/test/dummy/public/422.html +26 -0
  93. data/test/dummy/public/500.html +25 -0
  94. data/test/dummy/public/favicon.ico +0 -0
  95. data/test/dummy/script/rails +6 -0
  96. data/test/dummy/spec/helpers/test_helper_spec.rb +8 -0
  97. data/test/dummy/spec/spec_helper.rb +52 -0
  98. data/test/dummy/spec/watir/autoload_spec.rb +33 -0
  99. data/test/dummy/spec/watir/main_spec.rb +80 -0
  100. data/test/dummy/spec/watir/selector_spec.rb +103 -0
  101. data/test/dummy/spec/watir/tab_menu_spec.rb +36 -0
  102. data/test/dummy/tmp/cache/assets/C56/8F0/sprockets%2F1ad046fb9937420d5382984483fc8401 +0 -0
  103. data/test/dummy/tmp/cache/assets/C63/420/sprockets%2F5daa64d9601a1dd14726112003d08364 +0 -0
  104. data/test/dummy/tmp/cache/assets/C65/790/sprockets%2Feacce513669090988829f66e61634451 +0 -0
  105. data/test/dummy/tmp/cache/assets/C77/DD0/sprockets%2F055f9cd12326c5150492b8c584314fa3 +0 -0
  106. data/test/dummy/tmp/cache/assets/C84/E70/sprockets%2F0530f24346bbf970634035b6e55f886e +0 -0
  107. data/test/dummy/tmp/cache/assets/C85/420/sprockets%2F4734da42d41574596ab532629d0867ec +0 -0
  108. data/test/dummy/tmp/cache/assets/C87/A50/sprockets%2F667342f892546b573c52d11f814ae4f3 +0 -0
  109. data/test/dummy/tmp/cache/assets/CA1/750/sprockets%2Fa8471b3ea18986e7368e8273a95865e8 +0 -0
  110. data/test/dummy/tmp/cache/assets/CAC/DB0/sprockets%2Fc424393ee4e4f66aa4014619048753cb +0 -0
  111. data/test/dummy/tmp/cache/assets/CB2/170/sprockets%2F4479eb189646408ec3130b45153ebf7b +0 -0
  112. data/test/dummy/tmp/cache/assets/CB9/630/sprockets%2Fe5952cc2ece61727517547af4232892e +0 -0
  113. data/test/dummy/tmp/cache/assets/CBD/960/sprockets%2F5a35c922c979e889b0338374a9b3f4b0 +0 -0
  114. data/test/dummy/tmp/cache/assets/CC4/730/sprockets%2F78d0941e0543313bbb0a9f0cf630030d +0 -0
  115. data/test/dummy/tmp/cache/assets/CD1/F50/sprockets%2Fbf2261613d1c32c54a6e38a7673531fa +0 -0
  116. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  117. data/test/dummy/tmp/cache/assets/CD9/1E0/sprockets%2F293460f7bea2aea456231b769212f36f +0 -0
  118. data/test/dummy/tmp/cache/assets/CDC/EC0/sprockets%2Ff9a21d40846491577ab5ebe00de07077 +0 -0
  119. data/test/dummy/tmp/cache/assets/CE6/8D0/sprockets%2F9e823d2b49662dbb4389f2841a23e8c1 +0 -0
  120. data/test/dummy/tmp/cache/assets/CEE/110/sprockets%2Faf0654ff711843e082592cd70cf89a88 +0 -0
  121. data/test/dummy/tmp/cache/assets/CEE/490/sprockets%2F97139dc7ad35759531fc7fa572f0c761 +0 -0
  122. data/test/dummy/tmp/cache/assets/CF9/6F0/sprockets%2F952426cea414c6c2a04cc1216a1f36f5 +0 -0
  123. data/test/dummy/tmp/cache/assets/CFA/DE0/sprockets%2F25bf1e7766a300a4c37195df0cbb1107 +0 -0
  124. data/test/dummy/tmp/cache/assets/CFB/A10/sprockets%2F72699e3ed6f9c3984a718b62932ba66e +0 -0
  125. data/test/dummy/tmp/cache/assets/CFC/640/sprockets%2Fc7f89943cb904e76b2437e59348cc5c9 +0 -0
  126. data/test/dummy/tmp/cache/assets/D13/0C0/sprockets%2F218a6e24bfe5005a8a86798baa2585c8 +0 -0
  127. data/test/dummy/tmp/cache/assets/D13/3B0/sprockets%2F00cf5d507582a705af9694cde93ba186 +0 -0
  128. data/test/dummy/tmp/cache/assets/D13/6A0/sprockets%2F4819aa020210496ecf49ee70b78e8be6 +0 -0
  129. data/test/dummy/tmp/cache/assets/D15/560/sprockets%2Ff0007939832a29a27abe3a9579eed81c +0 -0
  130. data/test/dummy/tmp/cache/assets/D16/860/sprockets%2Fb45890d98668c132fee5cae4b15320d9 +0 -0
  131. data/test/dummy/tmp/cache/assets/D1A/150/sprockets%2F49ad9f8620b7712e6f2d4fc2e354e545 +0 -0
  132. data/test/dummy/tmp/cache/assets/D20/4F0/sprockets%2Fb15d3257899ad89007d1348eb9a5f5fe +0 -0
  133. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  134. data/test/dummy/tmp/cache/assets/D36/810/sprockets%2Fb84416b6a4f5a39b0bc23ab72ad94279 +0 -0
  135. data/test/dummy/tmp/cache/assets/D39/390/sprockets%2F3c87a321da4296312f18efc704cd6d2f +0 -0
  136. data/test/dummy/tmp/cache/assets/D3A/260/sprockets%2F69551919ec05c0eb11e55bb59dc143ec +0 -0
  137. data/test/dummy/tmp/cache/assets/D41/350/sprockets%2F2111b16bc0081c14b803cfd350eb4baa +0 -0
  138. data/test/dummy/tmp/cache/assets/D43/D20/sprockets%2Fbcbf2f35591e507593ec6116eac6e924 +0 -0
  139. data/test/dummy/tmp/cache/assets/D48/3C0/sprockets%2F41be77d9f6b62168967ca14ccc6b51d6 +0 -0
  140. data/test/dummy/tmp/cache/assets/D4D/7C0/sprockets%2F5f4f24c2540cffe8b3c5e835756c35f7 +0 -0
  141. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  142. data/test/dummy/tmp/cache/assets/D51/6A0/sprockets%2F80b05d6f75c78bdb1e450c898e47d97a +0 -0
  143. data/test/dummy/tmp/cache/assets/D56/4C0/sprockets%2F66059379b6c72ffe570f4ae394a89eda +0 -0
  144. data/test/dummy/tmp/cache/assets/D56/D30/sprockets%2Fe910c76d93fd4da6984d82e469f62f0c +0 -0
  145. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  146. data/test/dummy/tmp/cache/assets/D65/600/sprockets%2Fdaa0e3c217673cb0ebb89d97438a1b80 +0 -0
  147. data/test/dummy/tmp/cache/assets/D66/6C0/sprockets%2Fa06355ade2a095c01afd8c6f5e67019d +0 -0
  148. data/test/dummy/tmp/cache/assets/D6A/E70/sprockets%2Fc9f71142e4d4a807cb6be80451f74adb +0 -0
  149. data/test/dummy/tmp/cache/assets/D76/E50/sprockets%2F6289e3eb865565eab3fdfb4fae810702 +0 -0
  150. data/test/dummy/tmp/cache/assets/D86/6A0/sprockets%2Fac97d7e4e37faa819a833c7c52c9e687 +0 -0
  151. data/test/dummy/tmp/cache/assets/D91/C00/sprockets%2Fb1cf6c48f161db0a058d10817ddd5e5b +0 -0
  152. data/test/dummy/tmp/cache/assets/D9C/C90/sprockets%2Fa903431f8703bbaafcae42e4f4692ff8 +0 -0
  153. data/test/dummy/tmp/cache/assets/DA0/C60/sprockets%2F90d8e40e6baa19d6556ab9c6ac891a2e +0 -0
  154. data/test/dummy/tmp/cache/assets/DA1/F90/sprockets%2F3bd196480867f8e3c74b10dbcbbe1f9b +0 -0
  155. data/test/dummy/tmp/cache/assets/DA7/EE0/sprockets%2Ffced4a1e089dc82bf773475da4e53c46 +0 -0
  156. data/test/dummy/tmp/cache/assets/DA9/4D0/sprockets%2F3d68828b990fbfa9cdf51daa76c242d5 +0 -0
  157. data/test/dummy/tmp/cache/assets/DB5/4C0/sprockets%2F5e815df4827231fe949b2f9bffd0d9de +0 -0
  158. data/test/dummy/tmp/cache/assets/DB6/910/sprockets%2F3c19b64141a5ceeccf3a3baf4c452a06 +0 -0
  159. data/test/dummy/tmp/cache/assets/DC4/8D0/sprockets%2Fd8daccd2ece841a83a2a584c50e352d5 +0 -0
  160. data/test/dummy/tmp/cache/assets/DCC/6A0/sprockets%2Fa92fb625cc83fe72fc4115e2fb2ed61e +0 -0
  161. data/test/dummy/tmp/cache/assets/DCC/940/sprockets%2Fe7f0ee8bf122b8b72b8e3c7cd13a5d81 +0 -0
  162. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  163. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  164. data/test/dummy/tmp/cache/assets/E08/E50/sprockets%2F22c72aded517c5cdf8cce6f4b58c76b8 +0 -0
  165. data/test/dummy/tmp/cache/assets/E24/740/sprockets%2F2ecee9c0ae221af87da9c5d034c8dd0c +0 -0
  166. data/test/dummy/tmp/cache/assets/E2D/160/sprockets%2Fdb479da69eeed6322f3b8dab3bf91bb0 +0 -0
  167. data/test/dummy/tmp/cache/assets/E4C/810/sprockets%2Fdaf244418a8cfda1aca3e32dbdf17fd2 +0 -0
  168. data/test/dummy/tmp/pids/server.pid +1 -0
  169. data/test/screen/main.png +0 -0
  170. data/test/test_helper.rb +15 -0
  171. metadata +413 -0
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,8 @@
1
+ #require 'spec_helper'
2
+ #include InkwellTimelines::InkwellTimelinesHelpers
3
+ #
4
+ #describe "Main" do
5
+ # it "test" do
6
+ # inkwell_timelines_tag("this").should == "this that"
7
+ # end
8
+ #end
@@ -0,0 +1,52 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV["RAILS_ENV"] ||= 'test'
3
+ require File.expand_path("../../config/environment", __FILE__)
4
+ require 'rspec/rails'
5
+ require 'rspec/autorun'
6
+ require 'database_cleaner'
7
+
8
+ # Requires supporting ruby files with custom matchers and macros, etc,
9
+ # in spec/support/ and its subdirectories.
10
+ Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
11
+
12
+ RSpec.configure do |config|
13
+ # ## Mock Framework
14
+ #
15
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
16
+ #
17
+ # config.mock_with :mocha
18
+ # config.mock_with :flexmock
19
+ # config.mock_with :rr
20
+
21
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
22
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
23
+
24
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
25
+ # examples within a transaction, remove the following line or assign false
26
+ # instead of true.
27
+ config.use_transactional_fixtures = true
28
+
29
+ # If true, the base class of anonymous controllers will be inferred
30
+ # automatically. This will be the default behavior in future versions of
31
+ # rspec-rails.
32
+ config.infer_base_class_for_anonymous_controllers = false
33
+
34
+ # Run specs in random order to surface order dependencies. If you find an
35
+ # order dependency and want to debug it, you can fix the order by providing
36
+ # the seed, which is printed after each run.
37
+ # --seed 1234
38
+ config.order = "random"
39
+
40
+ config.before(:suite) do
41
+ DatabaseCleaner.strategy = :truncation
42
+ end
43
+
44
+ config.before(:each) do
45
+ DatabaseCleaner.clean
46
+ DatabaseCleaner.start
47
+ end
48
+
49
+ config.after(:each) do
50
+ DatabaseCleaner.clean
51
+ end
52
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+ require 'watir-webdriver'
3
+
4
+ describe 'Main' do
5
+
6
+ before(:all) do
7
+ @browser = Watir::Browser.new
8
+ @browser.goto "http://0.0.0.0:3000/"
9
+ @inkwell_timeline = @browser.div(:class => /inkwell_timelines/, :id => /timelines_block/)
10
+ end
11
+
12
+ after(:all) do
13
+ @browser.close
14
+ end
15
+
16
+ it 'new items should be autoloaded' do
17
+ @browser.execute_script("window.scrollBy(0,document.documentElement.scrollHeight)")
18
+ @browser.wait_until {@inkwell_timeline.div(:id => /blogline_14/).exists?}
19
+ (5..13).each {|i| @inkwell_timeline.div(:id => /blogline_#{i}/).exists?.should == true}
20
+ end
21
+
22
+ it 'not default timeline should be autoloaded' do
23
+ @inkwell_timeline.span(:class => /timeline_favoriteline/).click
24
+ @browser.wait_until {@inkwell_timeline.div(:class => /wall_item/, :id => /favoriteline_13/).exists?}
25
+ @browser.execute_script("window.scrollBy(0,document.documentElement.scrollHeight)")
26
+ @browser.wait_until {@inkwell_timeline.div(:class => /wall_item/, :id => /favoriteline_3/).exists?}
27
+ wall_items = @browser.divs(:class => /wall_item/)
28
+ wall_items.size.should == 13
29
+ (1..2).each do |i|
30
+ wall_items.select { |item| item.id =~ /favoriteline_#{i}$/ }.size.should == 1
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+ require 'watir-webdriver'
3
+
4
+ describe 'Main' do
5
+
6
+ before(:all) do
7
+ @browser = Watir::Browser.new
8
+ @browser.goto "http://0.0.0.0:3000/"
9
+ end
10
+
11
+ after(:all) do
12
+ @browser.close
13
+ end
14
+
15
+ it 'tab menu items should be' do
16
+ @browser.span(:class => /timeline_favoriteline/).exists?.should == true
17
+ @browser.span(:class => /timeline_blogline/).exists?.should == true
18
+ @browser.span(:class => /timeline_blogline/).class_name.include?('active').should == true
19
+ end
20
+
21
+ it 'selector should be' do
22
+ selector = @browser.div(:class => /inkwell_multi_selector/)
23
+ selector.exists?.should == true
24
+ selector.span(:class => /name/, :text => /Category:/).exists?.should == true
25
+ end
26
+
27
+ it 'wall items should be' do
28
+ wall_items = @browser.divs(:class => /wall_item/)
29
+ wall_items.size.should == 10
30
+ (15..24).each do |i|
31
+ wall_items.select {|item| item.id =~ /blogline_#{i}/}.size.should == 1
32
+ end
33
+ end
34
+
35
+ it 'post items should be' do
36
+ wall_item = @browser.div(:id => /blogline_24/)
37
+ wall_item.image(:class => /avatar/).exists?.should == true
38
+ wall_item.span(:class => /name/, :text => /^Alexander Pushkin:$/).exists?.should == true
39
+ wall_item.span(:class => /title/, :text => /^A wish$/).exists?.should == true
40
+ wall_item.div(:class => /item_container/).image(:class => /^item_img$/).exists?.should == true
41
+ wall_item.p(:text => /My days still linger, slow and rough/).exists?.should == true
42
+ item_menu = wall_item.div(:class => /item_menu/)
43
+ item_menu.exists?.should == true
44
+ favorite_item = item_menu.span(:class => /favorite_action/, :text => /^1$/)
45
+ favorite_item.exists?.should == true
46
+ favorite_item.class_name.include?('active').should == true
47
+ reblog_item = item_menu.span(:class => /reblog_action/, :text => /^1$/)
48
+ reblog_item.exists?.should == true
49
+ reblog_item.class_name.include?('active').should == true
50
+ comment_item = item_menu.span(:class => /comment_action/, :text => /^1$/)
51
+ comment_item.exists?.should == true
52
+ date = item_menu.span(:class => /date/, :text => /\..*\..*:/)
53
+ date.exists?.should == true
54
+ end
55
+
56
+ it 'comment should be' do
57
+ wall_item = @browser.div(:id => /blogline_21/)
58
+ wall_item.image(:class => /avatar/).exists?.should == true
59
+ wall_item.span(:class => /name/, :text => /^Alexander Pushkin:$/).exists?.should == true
60
+ wall_item.p(:text => /Alas! How come she's glimmering With temporary/).exists?.should == true
61
+ item_menu = wall_item.div(:class => /item_menu/)
62
+ item_menu.exists?.should == true
63
+ favorite_item = item_menu.span(:class => /favorite_action/, :text => /^1$/)
64
+ favorite_item.exists?.should == true
65
+ favorite_item.class_name.include?('active').should == true
66
+ reblog_item = item_menu.span(:class => /reblog_action/, :text => /^1$/)
67
+ reblog_item.exists?.should == true
68
+ reblog_item.class_name.include?('active').should == true
69
+ comment_item = item_menu.span(:class => /comment_action/, :text => /^1$/)
70
+ comment_item.exists?.should == true
71
+ date = item_menu.span(:class => /date/, :text => /\..*\..*:/)
72
+ date.exists?.should == true
73
+ end
74
+
75
+ it 'hidden transferred_params should be' do
76
+ inkwell_timelines = @browser.div(:class => /inkwell_timelines/, :id => /timelines_block/)
77
+ inkwell_timelines.hidden(:class => /(?=.*transferred_params)(?=.*blogline)/, :value => /{"user_id":1}/).exists?.should == true
78
+ inkwell_timelines.hidden(:class => /(?=.*transferred_params)(?=.*favoriteline)/, :value => /{"user_id":1}/).exists?.should == true
79
+ end
80
+ end
@@ -0,0 +1,103 @@
1
+ require 'spec_helper'
2
+ require 'watir-webdriver'
3
+
4
+ describe 'Main' do
5
+
6
+ before(:all) do
7
+ @browser = Watir::Browser.new
8
+ @browser.goto "http://0.0.0.0:3000/"
9
+ @inkwell_timeline = @browser.div(:class => /inkwell_timelines/, :id => /timelines_block/)
10
+ @selector = @inkwell_timeline.div(:class => /inkwell_multi_selector/)
11
+ end
12
+
13
+ before(:each) do
14
+ @browser.refresh
15
+ end
16
+
17
+ after(:all) do
18
+ @browser.close
19
+ end
20
+
21
+ it 'dropdown should be displayed and hided on user actions' do
22
+ @selector.div(:class => /action/).click
23
+ @browser.wait_until {@selector.div(:class => /dropdown/).visible? }
24
+ @selector.div(:class => /action/).click
25
+ @browser.wait_until {!@selector.div(:class => /dropdown/).visible?}
26
+
27
+ @selector.div(:class => /action/).click
28
+ @browser.wait_until {@selector.div(:class => /dropdown/).visible?}
29
+ @inkwell_timeline.click
30
+ @browser.wait_until {!@selector.div(:class => /dropdown/).visible?}
31
+ end
32
+
33
+ it 'all checkboxes should be checked and synchronized with state on first load' do
34
+ checkboxes = @selector.spans(:class => /(?=.*checkbox_with_label)(?=.*checked)/)
35
+ checkboxes.size.should == 9
36
+ states = @selector.spans(:id => /inkwell_category_state_/)
37
+ states.size.should == 4
38
+ [1,2,7,8].each do |i|
39
+ checkboxes.select { |item| item.id =~ /inkwell_category_checkbox_#{i}$/ }.size.should == 1
40
+ states.select { |item| item.id =~ /inkwell_category_state_#{i}$/ }.size.should == 1
41
+ end
42
+ end
43
+
44
+ it 'checkbox should be checked/unchecked on click' do
45
+ @selector.div(:class => /action/).click
46
+ @browser.wait_until {@selector.div(:class => /dropdown/).visible? }
47
+ checkbox = @selector.span(:id => /inkwell_category_checkbox_1/)
48
+ checkbox.class_name.include?('checked').should == true
49
+ @selector.span(:id => /inkwell_category_state_1/).exists?.should == true
50
+ checkbox.click
51
+ checkbox.class_name.include?('checked').should == false
52
+ @selector.span(:id => /inkwell_category_state_1/).exists?.should == false
53
+ checkbox.click
54
+ checkbox.class_name.include?('checked').should == true
55
+ @selector.span(:id => /inkwell_category_state_1/).exists?.should == true
56
+ end
57
+
58
+ it 'upper checkboxes should be unchecked after uncheck their child (2-level)' do
59
+ @selector.div(:class => /action/).click
60
+ @browser.wait_until {@selector.div(:class => /dropdown/).visible? }
61
+ @selector.spans(:class => /(?=.*nesting)(?=.*collapsed)/).each {|span| span.click if span.visible?}
62
+ @selector.span(:id => /inkwell_category_checkbox_3/).click
63
+ @selector.span(:id => /inkwell_category_checkbox_2/).class_name.include?('checked').should == false
64
+ @selector.span(:id => /inkwell_category_state_2/).exists?.should == false
65
+ @selector.span(:id => /inkwell_category_state_3/).exists?.should == false
66
+ @selector.span(:id => /inkwell_category_state_4/).exists?.should == true
67
+ @selector.span(:id => /inkwell_category_state_5/).exists?.should == true
68
+ @selector.span(:id => /inkwell_category_state_6/).exists?.should == true
69
+ end
70
+
71
+ it 'upper checkboxes should be unchecked after uncheck their child (3-level)' do
72
+ @selector.div(:class => /action/).click
73
+ @browser.wait_until { @selector.div(:class => /dropdown/).visible? }
74
+ @selector.spans(:class => /(?=.*nesting)(?=.*collapsed)/).each { |span| span.click if span.visible? }
75
+ @selector.spans(:class => /(?=.*nesting)(?=.*collapsed)/).each { |span| span.click if span.visible? }
76
+ @selector.span(:id => /inkwell_category_checkbox_4/).click
77
+ @selector.span(:id => /inkwell_category_checkbox_2/).class_name.include?('checked').should == false
78
+ @selector.span(:id => /inkwell_category_checkbox_3/).class_name.include?('checked').should == false
79
+ @selector.span(:id => /inkwell_category_state_2/).exists?.should == false
80
+ @selector.span(:id => /inkwell_category_state_3/).exists?.should == false
81
+ @selector.span(:id => /inkwell_category_state_4/).exists?.should == false
82
+ @selector.span(:id => /inkwell_category_state_5/).exists?.should == true
83
+ @selector.span(:id => /inkwell_category_state_6/).exists?.should == true
84
+ end
85
+
86
+ it 'child checkboxes should be checked after check their parent' do
87
+ @selector.div(:class => /action/).click
88
+ @browser.wait_until { @selector.div(:class => /dropdown/).visible? }
89
+ @selector.spans(:class => /(?=.*nesting)(?=.*collapsed)/).each { |span| span.click if span.visible? }
90
+ @selector.spans(:class => /(?=.*nesting)(?=.*collapsed)/).each { |span| span.click if span.visible? }
91
+ @selector.span(:id => /inkwell_category_checkbox_4/).click
92
+ @selector.span(:id => /inkwell_category_checkbox_5/).click
93
+ @selector.span(:id => /inkwell_category_checkbox_2/).click
94
+ @selector.span(:id => /inkwell_category_checkbox_2/).class_name.include?('checked').should == true
95
+ @selector.span(:id => /inkwell_category_checkbox_3/).class_name.include?('checked').should == true
96
+ @selector.span(:id => /inkwell_category_checkbox_4/).class_name.include?('checked').should == true
97
+ @selector.span(:id => /inkwell_category_checkbox_5/).class_name.include?('checked').should == true
98
+ @selector.span(:id => /inkwell_category_state_2/).exists?.should == true
99
+ @selector.span(:id => /inkwell_category_state_5/).exists?.should == false
100
+ @selector.span(:id => /inkwell_category_state_3/).exists?.should == false
101
+ @selector.span(:id => /inkwell_category_state_4/).exists?.should == false
102
+ end
103
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+ require 'watir-webdriver'
3
+
4
+ describe 'Main' do
5
+
6
+ before(:all) do
7
+ @browser = Watir::Browser.new
8
+ @browser.goto "http://0.0.0.0:3000/"
9
+ @inkwell_timeline = @browser.div(:class => /inkwell_timelines/, :id => /timelines_block/)
10
+ end
11
+
12
+ after(:all) do
13
+ @browser.close
14
+ end
15
+
16
+ it 'favorite line should be displayed after click on Favorite tab' do
17
+ @inkwell_timeline.span(:class => /timeline_favoriteline/).click
18
+ @browser.wait_until {@inkwell_timeline.div(:class => /wall_item/, :id => /favoriteline_13/).exists?}
19
+ wall_items = @browser.divs(:class => /wall_item/)
20
+ wall_items.size.should == 10
21
+ (4..12).each do |i|
22
+ wall_items.select { |item| item.id =~ /favoriteline_#{i}$/ }.size.should == 1
23
+ end
24
+ end
25
+
26
+ it 'tab should receive active class on click' do
27
+ blogline = @inkwell_timeline.span(:class => /timeline_blogline/)
28
+ blogline.click
29
+ blogline.class_name.include?('active').should == true
30
+ favoriteline = @inkwell_timeline.span(:class => /timeline_favoriteline/)
31
+ favoriteline.class_name.include?('active').should == false
32
+ favoriteline.click
33
+ favoriteline.class_name.include?('active').should == true
34
+ blogline.class_name.include?('active').should == false
35
+ end
36
+ end