disclaimer 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 (122) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +60 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/disclaimer/application.js +16 -0
  5. data/app/assets/javascripts/disclaimer/documents.js +2 -0
  6. data/app/assets/javascripts/disclaimer/segments.js +2 -0
  7. data/app/assets/stylesheets/disclaimer/application.css +13 -0
  8. data/app/assets/stylesheets/disclaimer/documents.css +9 -0
  9. data/app/assets/stylesheets/disclaimer/segments.css +4 -0
  10. data/app/controllers/disclaimer/application_controller.rb +4 -0
  11. data/app/controllers/disclaimer/documents_controller.rb +74 -0
  12. data/app/controllers/disclaimer/segments_controller.rb +45 -0
  13. data/app/helpers/disclaimer/application_helper.rb +4 -0
  14. data/app/helpers/disclaimer/documents_helper.rb +4 -0
  15. data/app/helpers/disclaimer/segments_helper.rb +4 -0
  16. data/app/models/disclaimer/document.rb +57 -0
  17. data/app/models/disclaimer/segment.rb +26 -0
  18. data/app/models/disclaimer/segment_holder.rb +17 -0
  19. data/app/views/disclaimer/documents/delete.html.erb +8 -0
  20. data/app/views/disclaimer/documents/index.html.erb +28 -0
  21. data/app/views/disclaimer/documents/new.html.erb +48 -0
  22. data/app/views/disclaimer/documents/show.html.erb +19 -0
  23. data/app/views/disclaimer/segments/_segment.html.erb +8 -0
  24. data/app/views/disclaimer/segments/delete.html.erb +8 -0
  25. data/app/views/disclaimer/segments/index.html.erb +26 -0
  26. data/app/views/disclaimer/segments/new.html.erb +24 -0
  27. data/app/views/disclaimer/segments/show.html.erb +2 -0
  28. data/app/views/layouts/disclaimer/application.html.erb +15 -0
  29. data/config/routes.rb +18 -0
  30. data/db/migrate/20121023125748_create_disclaimer_documents.rb +12 -0
  31. data/db/migrate/20121024074240_create_segments.rb +10 -0
  32. data/db/migrate/20121024080818_create_disclaimer_segment_holders.rb +11 -0
  33. data/lib/disclaimer/engine.rb +5 -0
  34. data/lib/disclaimer/version.rb +3 -0
  35. data/lib/disclaimer.rb +6 -0
  36. data/lib/rails/actionpack/lib/action_controller/base.rb +28 -0
  37. data/lib/tasks/disclaimer_tasks.rake +4 -0
  38. data/test/disclaimer_test.rb +7 -0
  39. data/test/dummy/README.rdoc +261 -0
  40. data/test/dummy/Rakefile +7 -0
  41. data/test/dummy/app/assets/javascripts/application.js +15 -0
  42. data/test/dummy/app/assets/javascripts/sample.js +2 -0
  43. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  44. data/test/dummy/app/assets/stylesheets/sample.css +4 -0
  45. data/test/dummy/app/controllers/application_controller.rb +3 -0
  46. data/test/dummy/app/controllers/sample_controller.rb +12 -0
  47. data/test/dummy/app/helpers/application_helper.rb +2 -0
  48. data/test/dummy/app/helpers/sample_helper.rb +2 -0
  49. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  50. data/test/dummy/app/views/sample/index.html.erb +4 -0
  51. data/test/dummy/config/application.rb +59 -0
  52. data/test/dummy/config/boot.rb +10 -0
  53. data/test/dummy/config/database.yml +25 -0
  54. data/test/dummy/config/environment.rb +5 -0
  55. data/test/dummy/config/environments/development.rb +37 -0
  56. data/test/dummy/config/environments/production.rb +67 -0
  57. data/test/dummy/config/environments/test.rb +37 -0
  58. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  59. data/test/dummy/config/initializers/inflections.rb +15 -0
  60. data/test/dummy/config/initializers/mime_types.rb +5 -0
  61. data/test/dummy/config/initializers/secret_token.rb +7 -0
  62. data/test/dummy/config/initializers/session_store.rb +8 -0
  63. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  64. data/test/dummy/config/locales/en.yml +5 -0
  65. data/test/dummy/config/routes.rb +10 -0
  66. data/test/dummy/config.ru +4 -0
  67. data/test/dummy/db/development.sqlite3 +0 -0
  68. data/test/dummy/db/schema.rb +41 -0
  69. data/test/dummy/db/test.sqlite3 +0 -0
  70. data/test/dummy/log/development.log +13228 -0
  71. data/test/dummy/log/test.log +35207 -0
  72. data/test/dummy/public/404.html +26 -0
  73. data/test/dummy/public/422.html +26 -0
  74. data/test/dummy/public/500.html +25 -0
  75. data/test/dummy/public/favicon.ico +0 -0
  76. data/test/dummy/script/rails +6 -0
  77. data/test/dummy/test/functional/sample_controller_test.rb +29 -0
  78. data/test/dummy/test/unit/helpers/sample_helper_test.rb +4 -0
  79. data/test/dummy/tmp/cache/assets/B9D/BB0/sprockets%2Fc3340956015865527b738281d0798842 +0 -0
  80. data/test/dummy/tmp/cache/assets/C5A/090/sprockets%2F163158930fc7f594992ed570eb262440 +0 -0
  81. data/test/dummy/tmp/cache/assets/C65/6C0/sprockets%2F6411c0191302133114dd7b9452abec58 +0 -0
  82. data/test/dummy/tmp/cache/assets/C83/2C0/sprockets%2F99d131cd7946c82b8a39070e6b434530 +0 -0
  83. data/test/dummy/tmp/cache/assets/CD4/F20/sprockets%2F9705276958dc30aad02ae1f4618a60a4 +0 -0
  84. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  85. data/test/dummy/tmp/cache/assets/CE3/0F0/sprockets%2F1c1d13e6a59e0476d7663354de087ff0 +0 -0
  86. data/test/dummy/tmp/cache/assets/D05/D80/sprockets%2F0f27d3a1d395bf559a2d725033de721c +0 -0
  87. data/test/dummy/tmp/cache/assets/D14/8E0/sprockets%2F1d0962a03dd3d782c8eadf712769a972 +0 -0
  88. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  89. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  90. data/test/dummy/tmp/cache/assets/D51/800/sprockets%2F0b6c1b1792d877f8e8fb3d82d577ca92 +0 -0
  91. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  92. data/test/dummy/tmp/cache/assets/D69/ED0/sprockets%2F5e34b8807c9168eb298bc1eb4d01bc1b +0 -0
  93. data/test/dummy/tmp/cache/assets/D6A/080/sprockets%2Fb083da81ad739ec14c03d78b63c22d9f +0 -0
  94. data/test/dummy/tmp/cache/assets/D73/200/sprockets%2Ff550d44b0e67ff62964de563da84c2ab +0 -0
  95. data/test/dummy/tmp/cache/assets/D9D/D20/sprockets%2F17bfe7df9a25cca0b3e5604f442be847 +0 -0
  96. data/test/dummy/tmp/cache/assets/DA6/F40/sprockets%2F55aedaf8fe75d461c2c82239e7e1d0b9 +0 -0
  97. data/test/dummy/tmp/cache/assets/DB4/B10/sprockets%2F1419cefd434468f9dfea571aa7ee59f7 +0 -0
  98. data/test/dummy/tmp/cache/assets/DC6/910/sprockets%2Faad8dad748c771644d1bbbcf02409fe2 +0 -0
  99. data/test/dummy/tmp/cache/assets/DCD/6D0/sprockets%2Fe8e47b38d458acad468a0b2bdcd12e76 +0 -0
  100. data/test/dummy/tmp/cache/assets/DD1/600/sprockets%2Fd61c971a175fe64d20ceefe3e7f4e2b3 +0 -0
  101. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  102. data/test/dummy/tmp/cache/assets/DDD/C60/sprockets%2F59ec92d2bcdf9ece368f07a4ca6509c7 +0 -0
  103. data/test/dummy/tmp/cache/assets/DE1/2B0/sprockets%2Fdca152daab7ddab59235356c1d2b21db +0 -0
  104. data/test/dummy/tmp/cache/assets/DFB/DF0/sprockets%2Fa1fb1cc09fd766dcc9e2b9d4a9421db4 +0 -0
  105. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  106. data/test/dummy/tmp/cache/assets/E22/0C0/sprockets%2F72c5c1adba8375dda425a7bfb5ba7c4f +0 -0
  107. data/test/dummy/tmp/cache/assets/E27/370/sprockets%2Ff374d3bfba2ca636ce768ab8eecb31b3 +0 -0
  108. data/test/dummy/tmp/cache/assets/E2C/8D0/sprockets%2F234ff42c359a2beddfb9d10ee75aef3d +0 -0
  109. data/test/dummy/tmp/pids/server.pid +1 -0
  110. data/test/fixtures/disclaimer/documents.yml +9 -0
  111. data/test/fixtures/disclaimer/segment_holders.yml +9 -0
  112. data/test/fixtures/disclaimer/segments.yml +13 -0
  113. data/test/functional/disclaimer/documents_controller_test.rb +129 -0
  114. data/test/functional/disclaimer/segments_controller_test.rb +77 -0
  115. data/test/integration/navigation_test.rb +10 -0
  116. data/test/test_helper.rb +35 -0
  117. data/test/unit/disclaimer/document_test.rb +36 -0
  118. data/test/unit/disclaimer/segment_holder_test.rb +9 -0
  119. data/test/unit/disclaimer/segment_test.rb +59 -0
  120. data/test/unit/helpers/disclaimer/documents_helper_test.rb +6 -0
  121. data/test/unit/helpers/disclaimer/segments_helper_test.rb +6 -0
  122. metadata +330 -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,29 @@
1
+ require 'test_helper'
2
+
3
+ class SampleControllerTest < ActionController::TestCase
4
+
5
+ def setup
6
+ @document = Disclaimer::Document.first
7
+ end
8
+
9
+ def test_index_default_redirect
10
+ get :index
11
+ assert_redirected_to("/disclaimer/documents/#{@document.name}")
12
+ assert_equal({@document.name.to_sym => "http://#{request.host}/sample"}, session[:disclaimer])
13
+ end
14
+
15
+ def test_index_with_disclaimer_accepted
16
+ get(
17
+ :index,
18
+ {},
19
+ :disclaimer => {@document.name.to_sym => :accepted}
20
+ )
21
+ assert_response :success
22
+ end
23
+
24
+ def test_bypass_disclaimer
25
+ get :bypass_disclaimer
26
+ assert_response :success
27
+ assert_nil session[:disclaimer], "Session should not be set when disclaimer is bypassed"
28
+ end
29
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class SampleHelperTest < ActionView::TestCase
4
+ end
@@ -0,0 +1 @@
1
+ 8925
@@ -0,0 +1,9 @@
1
+
2
+ one:
3
+ id: 1
4
+ name: one
5
+ title: A Disclaimer
6
+ header: You must read my disclaimer
7
+ footer: Disclaimer bottom
8
+
9
+
@@ -0,0 +1,9 @@
1
+ one:
2
+ document_id: 1
3
+ segment_id: 1
4
+ position: 1
5
+
6
+ two:
7
+ document_id: 1
8
+ segment_id: 2
9
+ position: 2
@@ -0,0 +1,13 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ one:
4
+ id: 1
5
+ name: one
6
+ title: MyString
7
+ body: MyText
8
+
9
+ two:
10
+ id: 2
11
+ name: two
12
+ title: MyString
13
+ body: MyText
@@ -0,0 +1,129 @@
1
+ require 'test_helper'
2
+
3
+ module Disclaimer
4
+ class DocumentsControllerTest < ActionController::TestCase
5
+
6
+ def setup
7
+ @document = Document.find(1)
8
+ end
9
+
10
+ def test_index
11
+ get :index
12
+ assert_response :success
13
+ assert_equal(Document.all, assigns('documents'))
14
+ end
15
+
16
+ def test_show
17
+ get :show, :id => @document.name
18
+ assert_response :success
19
+ assert_equal(@document, assigns('document'))
20
+ end
21
+
22
+ def test_new
23
+ get :new
24
+ assert_response :success
25
+ end
26
+
27
+ def test_create
28
+ title = "Create document"
29
+ assert_difference 'Document.count', 1 do
30
+ post(
31
+ :create,
32
+ :document => {
33
+ :title => title,
34
+ :name => 'new document'
35
+ }
36
+ )
37
+ end
38
+ assert_response :redirect
39
+ assert_equal(title, Document.last.title)
40
+ end
41
+
42
+ def test_edit
43
+ get :edit, :id => @document.name
44
+ assert_equal(@document, assigns('document'))
45
+ assert_response :success
46
+ end
47
+
48
+ def test_update
49
+ title = "Document update"
50
+ assert_no_difference 'Document.count' do
51
+ post(
52
+ :update,
53
+ :id => @document.name,
54
+ :document => {
55
+ :title => title
56
+ }
57
+ )
58
+ end
59
+ assert_response :redirect
60
+ assert_equal(title, @document.reload.title)
61
+ end
62
+
63
+ def test_update_with_no_segments
64
+ assert_equal(2, @document.segments.length)
65
+ post(
66
+ :update,
67
+ :id => @document.name,
68
+ :document => {
69
+ :segments => nil
70
+ }
71
+ )
72
+ assert_equal(0, @document.reload.segments.length)
73
+ end
74
+
75
+ def test_adding_one_segment
76
+ segment = Segment.last
77
+ post(
78
+ :update,
79
+ :id => @document.name,
80
+ :document => {
81
+ :segments => {
82
+ segment.id => 'yes'
83
+ }
84
+ }
85
+ )
86
+ assert_equal([segment], @document.reload.segments)
87
+ end
88
+
89
+ def test_adding_two_segments
90
+ test_update_with_no_segments
91
+ post(
92
+ :update,
93
+ :id => @document.name,
94
+ :document => {
95
+ :segments => {
96
+ Segment.first.id => 'yes',
97
+ Segment.last.id => 'yes'
98
+ }
99
+ }
100
+ )
101
+ assert_equal(2, @document.reload.segments.length)
102
+ end
103
+
104
+ def test_adding_one_segment_after_two_segments_removed_the_extra_segment
105
+ test_adding_two_segments
106
+ test_adding_one_segment
107
+ end
108
+
109
+ def test_delete
110
+ get :delete, :id => @document.name
111
+ assert_response :success
112
+ assert_equal(@document, assigns('document'))
113
+ end
114
+
115
+ def test_destroy
116
+ assert_difference 'Document.count', -1 do
117
+ delete :destroy, :id => @document.name, :use_route => :disclaimer
118
+ end
119
+ assert_response :redirect
120
+ end
121
+
122
+ def test_accept
123
+ post :accept, :id => @document.name
124
+ assert_response :redirect
125
+ assert_equal({@document.name.to_sym => ACCEPTED}, session[:disclaimer])
126
+ end
127
+
128
+ end
129
+ end
@@ -0,0 +1,77 @@
1
+ require 'test_helper'
2
+
3
+ module Disclaimer
4
+ class SegmentsControllerTest < ActionController::TestCase
5
+
6
+ def setup
7
+ @segment = Segment.find(1)
8
+ end
9
+
10
+ def test_index
11
+ get :index
12
+ assert_response :success
13
+ assert_equal(Segment.all, assigns('segments'))
14
+ end
15
+
16
+ def test_show
17
+ get :show, :id => @segment.name
18
+ assert_response :success
19
+ assert_equal(@segment, assigns('segment'))
20
+ end
21
+
22
+ def test_new
23
+ get :new
24
+ assert_response :success
25
+ end
26
+
27
+ def test_create
28
+ title = "Create segment"
29
+ assert_difference 'Segment.count', 1 do
30
+ post(
31
+ :create,
32
+ :segment => {
33
+ :title => title,
34
+ :name => 'new segment'
35
+ }
36
+ )
37
+ end
38
+ assert_response :redirect
39
+ assert_equal(title, Segment.last.title)
40
+ end
41
+
42
+ def test_edit
43
+ get :edit, :id => @segment.name
44
+ assert_equal(@segment, assigns('segment'))
45
+ assert_response :success
46
+ end
47
+
48
+ def test_update
49
+ title = "Segment update"
50
+ assert_no_difference 'Segment.count' do
51
+ post(
52
+ :update,
53
+ :id => @segment.name,
54
+ :segment => {
55
+ :title => title
56
+ }
57
+ )
58
+ end
59
+ assert_response :redirect
60
+ assert_equal(title, @segment.reload.title)
61
+ end
62
+
63
+ def test_delete
64
+ get :delete, :id => @segment.name
65
+ assert_response :success
66
+ assert_equal(@segment, assigns('segment'))
67
+ end
68
+
69
+ def test_destroy
70
+ assert_difference 'Segment.count', -1 do
71
+ delete :destroy, :id => @segment.name, :use_route => :disclaimer
72
+ end
73
+ assert_response :redirect
74
+ end
75
+
76
+ end
77
+ 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,35 @@
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
+ require 'minitest/reporters'
10
+ MiniTest::Reporters.use!
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Load fixtures from the engine
16
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
18
+ end
19
+
20
+ class ActiveSupport::TestCase
21
+ fixtures :all
22
+ end
23
+
24
+ class ActionController::TestCase
25
+
26
+ #Overrides get, post etc. to use a default :use_route of :disclaimer
27
+ def process(action, parameters, session = nil, flash = nil, http_method = 'GET')
28
+ parameters ||= Hash.new
29
+ parameters[:use_route] = :disclaimer unless parameters[:use_route]
30
+ super
31
+ end
32
+
33
+ end
34
+
35
+
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+
3
+ module Disclaimer
4
+ class DocumentTest < ActiveSupport::TestCase
5
+ def setup
6
+ @document = Document.find(1)
7
+ @segment = Segment.find(1)
8
+ end
9
+
10
+ def test_setup
11
+ assert_equal(1, @document.id)
12
+ end
13
+
14
+ def test_segment_holder_for
15
+ segment_holder = @segment.segment_holders.first
16
+ assert_equal(segment_holder, @document.segment_holder_for(@segment))
17
+ end
18
+
19
+ def test_name_under_scored_on_save
20
+ @document.update_attribute(:name, "This is a Name")
21
+ assert_equal('this_is_a_name', @document.name)
22
+ end
23
+
24
+ def test_title_if_empty
25
+ @document.title = ""
26
+ @document.name = "this_is_a_name"
27
+ assert_equal("This is a name", @document.title)
28
+ end
29
+
30
+ def test_title_if_nil
31
+ @document.title = nil
32
+ @document.name = "this_is_a_name"
33
+ assert_equal("This is a name", @document.title)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ module Disclaimer
4
+ class SegmentHolderTest < ActiveSupport::TestCase
5
+ # test "the truth" do
6
+ # assert true
7
+ # end
8
+ end
9
+ end
@@ -0,0 +1,59 @@
1
+ require 'test_helper'
2
+
3
+ module Disclaimer
4
+ class SegmentTest < ActiveSupport::TestCase
5
+ def setup
6
+ @document = Document.find(1)
7
+ @segment = Segment.find(1)
8
+ @segment_two = Segment.find(2)
9
+ end
10
+
11
+ def test_ordering_preserver_via_through
12
+ assert_equal([@segment.segment_holders.first, @segment_two.segment_holders.first], @document.segment_holders)
13
+ assert_equal([@segment, @segment_two], @document.segments)
14
+ end
15
+
16
+ def test_reordering_via_segment_holder
17
+ @document.segment_holders.first.move_to_bottom
18
+ assert_equal([@segment_two, @segment], @document.segments)
19
+ end
20
+
21
+ def test_reordering_via_document
22
+ @document.move_to_bottom(@segment)
23
+ assert_equal([@segment_two, @segment], @document.segments)
24
+ end
25
+
26
+ def test_reordering_via_document_when_segment_not_in_document
27
+ assert_raise RuntimeError do
28
+ @document.move_to_bottom(new_segment)
29
+ end
30
+ end
31
+
32
+ def test_cannot_add_duplicate_segments_to_document
33
+ assert_no_difference '@document.segments.length' do
34
+ @document.segments << @segment
35
+ end
36
+ end
37
+
38
+ def test_name_under_scored_on_save
39
+ @segment.update_attribute(:name, "This is a Name")
40
+ assert_equal('this_is_a_name', @segment.name)
41
+ end
42
+
43
+ def test_title_if_empty
44
+ @segment.title = ""
45
+ @segment.name = "this_is_a_name"
46
+ assert_equal("This is a name", @segment.title)
47
+ end
48
+
49
+ def test_title_if_nil
50
+ @segment.title = nil
51
+ @segment.name = "this_is_a_name"
52
+ assert_equal("This is a name", @segment.title)
53
+ end
54
+
55
+ def new_segment
56
+ Segment.new(:name => 'not in document')
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,6 @@
1
+ require 'test_helper'
2
+
3
+ module Disclaimer
4
+ class DocumentsHelperTest < ActionView::TestCase
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require 'test_helper'
2
+
3
+ module Disclaimer
4
+ class SegmentsHelperTest < ActionView::TestCase
5
+ end
6
+ end