ominous 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +97 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/ominous/application.js +15 -0
  5. data/app/assets/javascripts/ominous/warnings.js +33 -0
  6. data/app/assets/stylesheets/ominous/_ominous_colours.scss +4 -0
  7. data/app/assets/stylesheets/ominous/application.scss +13 -0
  8. data/app/assets/stylesheets/ominous/warnings.scss +41 -0
  9. data/app/controllers/ominous/application_controller.rb +16 -0
  10. data/app/controllers/ominous/warnings_controller.rb +15 -0
  11. data/app/helpers/ominous/application_helper.rb +39 -0
  12. data/app/helpers/ominous/warnings_helper.rb +29 -0
  13. data/app/models/ominous/closer.rb +19 -0
  14. data/app/models/ominous/warning.rb +74 -0
  15. data/app/models/ominous/warning_closer.rb +11 -0
  16. data/app/views/layouts/ominous/application.html.erb +14 -0
  17. data/app/views/ominous/warnings/_list.html.erb +20 -0
  18. data/config/locales/en.yml +1 -0
  19. data/config/routes.rb +8 -0
  20. data/db/migrate/20121206144249_create_ominous_warnings.rb +8 -0
  21. data/db/migrate/20121206145743_create_ominous_warning_closers.rb +10 -0
  22. data/db/migrate/20121206153254_create_ominous_closers.rb +11 -0
  23. data/lib/ominous/engine.rb +14 -0
  24. data/lib/ominous/version.rb +3 -0
  25. data/lib/ominous.rb +4 -0
  26. data/lib/tasks/ominous_tasks.rake +4 -0
  27. data/test/dummy/README.rdoc +261 -0
  28. data/test/dummy/Rakefile +7 -0
  29. data/test/dummy/app/assets/javascripts/application.js +16 -0
  30. data/test/dummy/app/assets/javascripts/things.js +2 -0
  31. data/test/dummy/app/assets/stylesheets/application.scss +14 -0
  32. data/test/dummy/app/assets/stylesheets/scaffold.scss +56 -0
  33. data/test/dummy/app/assets/stylesheets/things.scss +4 -0
  34. data/test/dummy/app/controllers/application_controller.rb +4 -0
  35. data/test/dummy/app/controllers/things_controller.rb +54 -0
  36. data/test/dummy/app/helpers/application_helper.rb +2 -0
  37. data/test/dummy/app/helpers/things_helper.rb +2 -0
  38. data/test/dummy/app/models/thing.rb +5 -0
  39. data/test/dummy/app/views/layouts/application.html.erb +15 -0
  40. data/test/dummy/app/views/things/_form.html.erb +27 -0
  41. data/test/dummy/app/views/things/edit.html.erb +6 -0
  42. data/test/dummy/app/views/things/index.html.erb +23 -0
  43. data/test/dummy/app/views/things/new.html.erb +5 -0
  44. data/test/dummy/app/views/things/show.html.erb +10 -0
  45. data/test/dummy/config/application.rb +59 -0
  46. data/test/dummy/config/boot.rb +10 -0
  47. data/test/dummy/config/database.yml +18 -0
  48. data/test/dummy/config/environment.rb +5 -0
  49. data/test/dummy/config/environments/development.rb +37 -0
  50. data/test/dummy/config/environments/production.rb +67 -0
  51. data/test/dummy/config/environments/test.rb +37 -0
  52. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  53. data/test/dummy/config/initializers/inflections.rb +15 -0
  54. data/test/dummy/config/initializers/mime_types.rb +5 -0
  55. data/test/dummy/config/initializers/secret_token.rb +7 -0
  56. data/test/dummy/config/initializers/session_store.rb +8 -0
  57. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  58. data/test/dummy/config/locales/en.yml +20 -0
  59. data/test/dummy/config/routes.rb +6 -0
  60. data/test/dummy/config.ru +4 -0
  61. data/test/dummy/db/migrate/20121207090710_create_things.rb +9 -0
  62. data/test/dummy/db/schema.rb +46 -0
  63. data/test/dummy/db/seeds/ominous/closers.yml +11 -0
  64. data/test/dummy/db/seeds/ominous/warnings.yml +1 -0
  65. data/test/dummy/db/seeds.rb +11 -0
  66. data/test/dummy/log/development.log +6329 -0
  67. data/test/dummy/log/test.log +16544 -0
  68. data/test/dummy/public/404.html +26 -0
  69. data/test/dummy/public/422.html +26 -0
  70. data/test/dummy/public/500.html +25 -0
  71. data/test/dummy/public/favicon.ico +0 -0
  72. data/test/dummy/script/rails +6 -0
  73. data/test/dummy/test/fixtures/things.yml +9 -0
  74. data/test/dummy/test/functional/things_controller_test.rb +98 -0
  75. data/test/dummy/test/unit/helpers/things_helper_test.rb +4 -0
  76. data/test/dummy/test/unit/thing_test.rb +7 -0
  77. data/test/dummy/tmp/cache/assets/C8C/B80/sprockets%2F371bf96e99717688ed7313a0c53f4212 +0 -0
  78. data/test/dummy/tmp/cache/assets/CB1/FD0/sprockets%2F6e1bd95023705b5529e7ccc754a02867 +0 -0
  79. data/test/dummy/tmp/cache/assets/CC9/A60/sprockets%2F07383698788b2e4738d47ae3ec6a1d87 +0 -0
  80. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  81. data/test/dummy/tmp/cache/assets/CD8/D80/sprockets%2Fc021b5f59c2af065ff29a632752434f2 +0 -0
  82. data/test/dummy/tmp/cache/assets/CDA/7C0/sprockets%2F12b62b18784b4353d97f6a97a41f0ad0 +0 -0
  83. data/test/dummy/tmp/cache/assets/CDC/310/sprockets%2Ffcc31591d15ae084c418fc172660b956 +0 -0
  84. data/test/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2 +0 -0
  85. data/test/dummy/tmp/cache/assets/CFF/E00/sprockets%2F352bab412d75fa19d0a07504553b59df +0 -0
  86. data/test/dummy/tmp/cache/assets/D06/CE0/sprockets%2F41d74669fa9b15be92441ba007ab0c68 +0 -0
  87. data/test/dummy/tmp/cache/assets/D2B/540/sprockets%2Fc83f54ae55237ceb746bbb53c00b1142 +0 -0
  88. data/test/dummy/tmp/cache/assets/D2C/6D0/sprockets%2F3d403240cf0f43b784f29abbcb44f206 +0 -0
  89. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  90. data/test/dummy/tmp/cache/assets/D47/090/sprockets%2F3f61bf7b226774e61d49a5c2bf4ba788 +0 -0
  91. data/test/dummy/tmp/cache/assets/D49/8D0/sprockets%2F92613a75279536c4bcf4f3ba6cfde494 +0 -0
  92. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  93. data/test/dummy/tmp/cache/assets/D55/D30/sprockets%2F7736f39574ccd9ee349df6370cacc753 +0 -0
  94. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  95. data/test/dummy/tmp/cache/assets/D63/460/sprockets%2Fb9c8c98e6433f883fef1c54e67727ae9 +0 -0
  96. data/test/dummy/tmp/cache/assets/D6A/BF0/sprockets%2F762d06ba45dbecea1ec4f91d06449184 +0 -0
  97. data/test/dummy/tmp/cache/assets/D6B/810/sprockets%2Fb86f0cb0c0c0e267d26cf93fa606b578 +0 -0
  98. data/test/dummy/tmp/cache/assets/D6D/E30/sprockets%2F22dcb449e5cb7993f426a6f2ba336b2d +0 -0
  99. data/test/dummy/tmp/cache/assets/D70/F20/sprockets%2F1769eda3bb9755fed833c4ba761231dc +0 -0
  100. data/test/dummy/tmp/cache/assets/D77/D00/sprockets%2F4d1e5a8a96bd3c395214fd8ca879bf41 +0 -0
  101. data/test/dummy/tmp/cache/assets/D96/950/sprockets%2F5eee98198ef9d6273cdca638b9865fa8 +0 -0
  102. data/test/dummy/tmp/cache/assets/DA5/F70/sprockets%2F859ce38bab39b76b3dfcd28026aa8f62 +0 -0
  103. data/test/dummy/tmp/cache/assets/DAB/9C0/sprockets%2F8cadb8398e03f9730da11f8e7c9dc73b +0 -0
  104. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  105. data/test/dummy/tmp/cache/assets/DF4/C60/sprockets%2F9a20e4568aca578053dddb4e4aca0def +0 -0
  106. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  107. data/test/fixtures/ominous/closers.yml +10 -0
  108. data/test/fixtures/ominous/warning_closers.yml +15 -0
  109. data/test/fixtures/ominous/warnings.yml +8 -0
  110. data/test/fixtures/things.yml +11 -0
  111. data/test/functional/ominous/warnings_controller_test.rb +22 -0
  112. data/test/integration/navigation_test.rb +10 -0
  113. data/test/ominous_test.rb +7 -0
  114. data/test/test_helper.rb +19 -0
  115. data/test/unit/helpers/ominous/warnings_helper_test.rb +6 -0
  116. data/test/unit/ominous/closer_test.rb +9 -0
  117. data/test/unit/ominous/warning_closer_test.rb +9 -0
  118. data/test/unit/ominous/warning_test.rb +37 -0
  119. metadata +352 -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,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ one:
4
+ id: 1
5
+ name: Foo
6
+
7
+ two:
8
+ id: 2
9
+ name: Bar
@@ -0,0 +1,98 @@
1
+ require 'test_helper'
2
+
3
+ class ThingsControllerTest < ActionController::TestCase
4
+ def setup
5
+ @thing = Thing.find(1)
6
+ @thing_with_warning = Thing.find(2)
7
+ @warning = Ominous::Warning.find(1)
8
+ end
9
+
10
+ def test_show_without_warning
11
+ get :show, id: @thing
12
+ assert_response :success
13
+ assert_warning_is_not_displayed
14
+ end
15
+
16
+ def test_show_with_warning
17
+ get :show, id: @thing_with_warning
18
+ assert_response :success
19
+ assert_warning_displayed
20
+ end
21
+
22
+ def test_show_when_thing_without_warning_but_warning_in_session
23
+ get(
24
+ :show,
25
+ {id: @thing},
26
+ {:ominous_warnings => {@warning.name.to_sym => :show}}
27
+ )
28
+ assert_response :success
29
+ assert_warning_displayed
30
+ end
31
+
32
+ def test_show_when_warning_in_session_marked_as_hide
33
+ get(
34
+ :show,
35
+ {id: @thing},
36
+ {:ominous_warnings => {@warning.name.to_sym => :hide}}
37
+ )
38
+ assert_response :success
39
+ assert_warning_is_not_displayed
40
+ end
41
+
42
+ def test_triggering_warning_does_not_over_ride_existing_flags
43
+ get(
44
+ :show,
45
+ {id: @thing_with_warning},
46
+ {:ominous_warnings => {@warning.name.to_sym => :hide}}
47
+ )
48
+ assert_response :success
49
+ assert_warning_is_not_displayed
50
+ end
51
+
52
+ def test_edit
53
+ get :edit, id: @thing
54
+ assert_response :success
55
+ end
56
+
57
+ def test_update
58
+ put :update, id: @thing, thing: { name: @thing.name }
59
+ assert_redirected_to thing_path(assigns(:thing))
60
+ end
61
+
62
+ def test_destroy
63
+ assert_difference('Thing.count', -1) do
64
+ delete :destroy, id: @thing
65
+ end
66
+
67
+ assert_redirected_to things_path
68
+ end
69
+
70
+ def test_index
71
+ get :index
72
+ assert_response :success
73
+ assert_not_nil assigns(:things)
74
+
75
+ end
76
+
77
+ def test_new
78
+ get :new
79
+ assert_response :success
80
+ end
81
+
82
+ def test_create
83
+ assert_difference('Thing.count') do
84
+ post :create, thing: { name: @thing.name }
85
+ end
86
+
87
+ assert_redirected_to thing_path(assigns(:thing))
88
+ end
89
+
90
+ private
91
+ def assert_warning_displayed
92
+ assert_tag :tag => "div", :attributes => { :class => "ominous_warnings" }
93
+ end
94
+
95
+ def assert_warning_is_not_displayed
96
+ assert_no_tag :tag => "div", :attributes => { :class => "ominous_warnings" }
97
+ end
98
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class ThingsHelperTest < ActionView::TestCase
4
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class ThingTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,10 @@
1
+ one:
2
+ id: 1
3
+ name: closer_one
4
+ closure_method: close_and_dismiss_warning
5
+
6
+ two:
7
+ id: 2
8
+ name: closer_two
9
+ url: http://undervale.co.uk
10
+ closure_method: redirect
@@ -0,0 +1,15 @@
1
+ one:
2
+ warning_id: 1
3
+ closer_id: 1
4
+ position: 1
5
+
6
+ two:
7
+ warning_id: 1
8
+ closer_id: 2
9
+ position: 2
10
+
11
+ three:
12
+ warning_id: 2
13
+ closer_id: 2
14
+ position: 1
15
+
@@ -0,0 +1,8 @@
1
+ one:
2
+ id: 1
3
+ name: thing_alert
4
+
5
+ two:
6
+ id: 2
7
+ name: other_alert
8
+
@@ -0,0 +1,11 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ one:
4
+ id: 1
5
+ name: Foo
6
+ has_warning: false
7
+
8
+ two:
9
+ id: 2
10
+ name: Bar
11
+ has_warning: true
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ module Ominous
4
+ class WarningsControllerTest < ActionController::TestCase
5
+
6
+ def setup
7
+ @warning = Ominous::Warning.find(1)
8
+ @routes = Engine.routes # Added so that test action is matched to correct route
9
+ end
10
+
11
+
12
+ def test_dismiss
13
+ put(
14
+ :dismiss,
15
+ {id: @warning},
16
+ {:ominous_warnings => {@warning.name.to_sym => :show}}
17
+ )
18
+ assert_equal(:hide, session[:ominous_warnings][@warning.name.to_sym])
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class NavigationTest < ActionDispatch::IntegrationTest
4
+ fixtures :all
5
+
6
+ # test "the truth" do
7
+ # assert true
8
+ # end
9
+ end
10
+
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class OminousTest < ActiveSupport::TestCase
4
+ test "truth" do
5
+ assert_kind_of Module, Ominous
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+
7
+ Rails.backtrace_cleaner.remove_silencers!
8
+
9
+ # Load support files
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
11
+
12
+ # Load fixtures from the engine
13
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
14
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures/", __FILE__)
15
+ end
16
+
17
+ class ActiveSupport::TestCase
18
+ fixtures :all
19
+ end
@@ -0,0 +1,6 @@
1
+ require 'test_helper'
2
+
3
+ module Ominous
4
+ class WarningsHelperTest < ActionView::TestCase
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ module Ominous
4
+ class CloserTest < ActiveSupport::TestCase
5
+ # test "the truth" do
6
+ # assert true
7
+ # end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ module Ominous
4
+ class WarningCloserTest < ActiveSupport::TestCase
5
+ # test "the truth" do
6
+ # assert true
7
+ # end
8
+ end
9
+ end
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ module Ominous
4
+ class WarningTest < ActiveSupport::TestCase
5
+ def setup
6
+ @warning = Warning.find(1)
7
+ @closer = Closer.find(1)
8
+ end
9
+
10
+ def test_join_to_closer
11
+ assert_equal(@closer, @warning.closers.find_by_id(@closer.id))
12
+ end
13
+
14
+ def test_requests
15
+ assert_equal([], Warning.requests)
16
+ end
17
+
18
+ def test_trigger
19
+ Warning.trigger(@warning.name)
20
+ assert_equal([@warning.name.to_sym], Warning.requests)
21
+ end
22
+
23
+ def test_trigger_with_non_existent_warning
24
+ assert_raise RuntimeError do
25
+ Warning.trigger(:does_not_exist)
26
+ end
27
+ end
28
+
29
+ def test_moving_closers
30
+ closer_one = Closer.find(1)
31
+ closer_two = Closer.find(2)
32
+ assert_equal([closer_one, closer_two], @warning.closers)
33
+ @warning.move_to_top(closer_two)
34
+ assert_equal([closer_two, closer_one], @warning.reload.closers)
35
+ end
36
+ end
37
+ end