ominous 0.0.1

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 (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