fine_print 1.4.1 → 2.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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -2
  3. data/Rakefile +0 -1
  4. data/app/assets/javascripts/fine_print/application.js +0 -1
  5. data/app/assets/stylesheets/fine_print/application.css +0 -1
  6. data/app/controllers/fine_print/application_controller.rb +9 -4
  7. data/app/controllers/fine_print/contracts_controller.rb +16 -12
  8. data/app/controllers/fine_print/home_controller.rb +5 -0
  9. data/app/controllers/fine_print/signatures_controller.rb +44 -2
  10. data/app/models/fine_print/contract.rb +17 -45
  11. data/app/models/fine_print/signature.rb +4 -3
  12. data/app/views/fine_print/contracts/_show.html.erb +11 -0
  13. data/app/views/fine_print/contracts/edit.html.erb +1 -1
  14. data/app/views/fine_print/contracts/index.html.erb +12 -14
  15. data/app/views/fine_print/contracts/new_version.html.erb +1 -1
  16. data/app/views/fine_print/contracts/show.html.erb +18 -29
  17. data/app/views/fine_print/signatures/_form.html.erb +21 -0
  18. data/app/views/fine_print/signatures/index.html.erb +3 -7
  19. data/app/views/fine_print/signatures/new.html.erb +13 -0
  20. data/config/initializers/fine_print.rb +36 -33
  21. data/config/routes.rb +5 -5
  22. data/db/migrate/0_install_fine_print.rb +2 -3
  23. data/lib/fine_print/controller_includes.rb +41 -67
  24. data/lib/fine_print/engine.rb +3 -0
  25. data/lib/fine_print/version.rb +1 -1
  26. data/lib/fine_print.rb +48 -57
  27. data/spec/controllers/contracts_controller_spec.rb +98 -98
  28. data/spec/controllers/home_controller_spec.rb +7 -5
  29. data/spec/controllers/signatures_controller_spec.rb +48 -19
  30. data/spec/dummy/app/models/dummy_user.rb +0 -1
  31. data/spec/dummy/config/initializers/fine_print.rb +2 -1
  32. data/spec/dummy/db/development.sqlite3 +0 -0
  33. data/spec/dummy/db/test.sqlite3 +0 -0
  34. data/spec/dummy/log/development.log +31970 -0
  35. data/spec/dummy/log/test.log +71587 -0
  36. data/spec/lib/fine_print/controller_includes_spec.rb +9 -14
  37. data/spec/lib/fine_print_spec.rb +15 -9
  38. data/spec/models/contract_spec.rb +17 -25
  39. data/spec/models/signature_spec.rb +4 -14
  40. data/spec/spec_helper.rb +1 -2
  41. metadata +33 -4
  42. data/app/views/fine_print/home/index.html.erb +0 -16
  43. data/lib/fine_print/security_transgression.rb +0 -3
@@ -2,14 +2,9 @@ require 'spec_helper'
2
2
 
3
3
  module FinePrint
4
4
  describe ControllerIncludes do
5
- it 'must add fine_print_get_unsigned_contract_names to ActionController instances' do
6
- expect(ActionController::Base.new.respond_to? :fine_print_get_unsigned_contract_names).to eq true
7
- expect(DummyModelsController.new.respond_to? :fine_print_get_unsigned_contract_names).to eq true
8
- end
9
-
10
- it 'must add fine_print_redirect to ActionController instances' do
11
- expect(ActionController::Base.new.respond_to? :fine_print_redirect).to eq true
12
- expect(DummyModelsController.new.respond_to? :fine_print_redirect).to eq true
5
+ it 'must add fine_print_sign to ActionController instances' do
6
+ expect(ActionController::Base.new.respond_to? :fine_print_sign).to eq true
7
+ expect(DummyModelsController.new.respond_to? :fine_print_sign).to eq true
13
8
  end
14
9
 
15
10
  it 'must add fine_print_return to ActionController instances' do
@@ -17,14 +12,14 @@ module FinePrint
17
12
  expect(DummyModelsController.new.respond_to?(:fine_print_return, true)).to eq true
18
13
  end
19
14
 
20
- it 'must add fine_print_get_signatures to ActionController and subclasses' do
21
- expect(ActionController::Base.respond_to? :fine_print_get_signatures).to eq true
22
- expect(DummyModelsController.respond_to? :fine_print_get_signatures).to eq true
15
+ it 'must add fine_print_require to ActionController and subclasses' do
16
+ expect(ActionController::Base.respond_to? :fine_print_require).to eq true
17
+ expect(DummyModelsController.respond_to? :fine_print_require).to eq true
23
18
  end
24
19
 
25
- it 'must add fine_print_skip_signatures to ActionController and subclasses' do
26
- expect(ActionController::Base.respond_to? :fine_print_skip_signatures).to eq true
27
- expect(DummyModelsController.respond_to? :fine_print_skip_signatures).to eq true
20
+ it 'must add fine_print_skip to ActionController and subclasses' do
21
+ expect(ActionController::Base.respond_to? :fine_print_skip).to eq true
22
+ expect(DummyModelsController.respond_to? :fine_print_skip).to eq true
28
23
  end
29
24
  end
30
25
  end
@@ -5,11 +5,11 @@ describe FinePrint do
5
5
  @alpha_1 = FactoryGirl.create(:published_contract, :name => 'alpha')
6
6
  @beta_1 = FactoryGirl.create(:published_contract, :name => 'beta')
7
7
 
8
- @user = mock_model 'DummyUser', :id => -1
8
+ @user = DummyUser.create
9
9
  @alpha_1_sig = FactoryGirl.create(:signature, :contract => @alpha_1, :user => @user)
10
10
  @beta_1_sig = FactoryGirl.create(:signature, :contract => @beta_1, :user => @user)
11
11
 
12
- @alpha_2 = @alpha_1.draft_copy
12
+ @alpha_2 = @alpha_1.new_version
13
13
  @alpha_2.update_attribute(:content, 'foo')
14
14
  @alpha_2.publish
15
15
  end
@@ -23,25 +23,31 @@ describe FinePrint do
23
23
  expect(FinePrint.get_contract('alpha')).to eq @alpha_2
24
24
  end
25
25
 
26
+ it 'gets signed contracts' do
27
+ expect(FinePrint.get_signed_contract_ids(@user)).to(
28
+ eq [@beta_1.id])
29
+ end
30
+
26
31
  it 'gets unsigned contracts' do
27
- expect(FinePrint.get_unsigned_contract_names(@user, 'beta', 'alpha')).to eq ['alpha']
32
+ expect(FinePrint.get_unsigned_contract_ids(@user, @alpha_2.id, @beta_1.id)).to(
33
+ eq [@alpha_2.id])
28
34
  end
29
35
 
30
36
  it 'allows users to sign contracts' do
31
37
  expect(FinePrint.signed_contract?(@user, @alpha_1)).to eq true
32
38
  expect(FinePrint.signed_contract?(@user, @alpha_2)).to eq false
33
39
  expect(FinePrint.signed_contract?(@user, @beta_1)).to eq true
34
- expect(FinePrint.signed_any_contract_version?(@user, @alpha_1)).to eq true
35
- expect(FinePrint.signed_any_contract_version?(@user, @alpha_2)).to eq true
36
- expect(FinePrint.signed_any_contract_version?(@user, @beta_1)).to eq true
40
+ expect(FinePrint.signed_any_version_of_contract?(@user, @alpha_1)).to eq true
41
+ expect(FinePrint.signed_any_version_of_contract?(@user, @alpha_2)).to eq true
42
+ expect(FinePrint.signed_any_version_of_contract?(@user, @beta_1)).to eq true
37
43
 
38
44
  expect(FinePrint.sign_contract(@user, @alpha_2)).to be_a FinePrint::Signature
39
45
 
40
46
  expect(FinePrint.signed_contract?(@user, @alpha_1)).to eq true
41
47
  expect(FinePrint.signed_contract?(@user, @alpha_2)).to eq true
42
48
  expect(FinePrint.signed_contract?(@user, @beta_1)).to eq true
43
- expect(FinePrint.signed_any_contract_version?(@user, @alpha_1)).to eq true
44
- expect(FinePrint.signed_any_contract_version?(@user, @alpha_2)).to eq true
45
- expect(FinePrint.signed_any_contract_version?(@user, @beta_1)).to eq true
49
+ expect(FinePrint.signed_any_version_of_contract?(@user, @alpha_1)).to eq true
50
+ expect(FinePrint.signed_any_version_of_contract?(@user, @alpha_2)).to eq true
51
+ expect(FinePrint.signed_any_version_of_contract?(@user, @beta_1)).to eq true
46
52
  end
47
53
  end
@@ -4,12 +4,10 @@ module FinePrint
4
4
  describe Contract do
5
5
  it 'can be published and unpublished' do
6
6
  contract = FactoryGirl.create(:contract)
7
- expect(contract.is_published?).to be_false
7
+ expect(contract.is_published?).to eq false
8
8
  expect(contract.version).to be_nil
9
- expect(contract.is_latest?).to be_false
10
- expect(contract.can_be_updated?).to be_true
11
- expect(contract.can_be_published?).to be_true
12
- expect(contract.can_be_unpublished?).to be_false
9
+ expect(contract.is_latest?).to eq false
10
+ expect(contract.signatures).to be_empty
13
11
 
14
12
  contract.unpublish
15
13
  expect(contract.errors).not_to be_empty
@@ -17,12 +15,10 @@ module FinePrint
17
15
  expect(contract.errors).to be_empty
18
16
  contract.publish
19
17
  expect(contract.errors).to be_empty
20
- expect(contract.is_published?).to be_true
21
- expect(contract.version).to be 1
22
- expect(contract.is_latest?).to be_true
23
- expect(contract.can_be_updated?).to be_true
24
- expect(contract.can_be_published?).to be_false
25
- expect(contract.can_be_unpublished?).to be_true
18
+ expect(contract.is_published?).to eq true
19
+ expect(contract.version).to eq 1
20
+ expect(contract.is_latest?).to eq true
21
+ expect(contract.signatures).to be_empty
26
22
 
27
23
  contract.publish
28
24
  expect(contract.errors).not_to be_empty
@@ -30,23 +26,19 @@ module FinePrint
30
26
  expect(contract.errors).to be_empty
31
27
  contract.unpublish
32
28
  expect(contract.errors).to be_empty
33
- expect(contract.is_published?).to be_false
29
+ expect(contract.is_published?).to eq false
34
30
  end
35
31
 
36
- it "can't be modified after a user signs" do
32
+ it "can't be modified after a user signs it" do
37
33
  contract = FactoryGirl.create(:contract)
38
34
 
39
35
  contract.publish
40
- expect(contract.is_published?).to be_true
41
- expect(contract.can_be_updated?).to be_true
42
- expect(contract.can_be_published?).to be_false
43
- expect(contract.can_be_unpublished?).to be_true
36
+ expect(contract.is_published?).to eq true
37
+ expect(contract.signatures).to be_empty
44
38
 
45
39
  ua = FactoryGirl.create(:signature, :contract => contract)
46
40
  contract.reload
47
- expect(contract.can_be_updated?).to be_false
48
- expect(contract.can_be_published?).to be_false
49
- expect(contract.can_be_unpublished?).to be_false
41
+ expect(contract.signatures).not_to be_empty
50
42
 
51
43
  contract.save
52
44
  expect(contract.errors).not_to be_empty
@@ -54,14 +46,14 @@ module FinePrint
54
46
  expect(contract.errors).to be_empty
55
47
  contract.unpublish
56
48
  expect(contract.errors).not_to be_empty
57
- expect(contract.is_published?).to be_true
49
+ expect(contract.reload.is_published?).to eq true
58
50
  end
59
51
 
60
52
  it 'results in a new version if a copy is published' do
61
53
  contract = FactoryGirl.create(:published_contract)
62
54
  expect(contract.version).to eq 1
63
- new_version = contract.draft_copy
64
- expect(new_version.save).to be_true
55
+ new_version = contract.new_version
56
+ expect(new_version.save).to eq true
65
57
  new_version.publish
66
58
  expect(new_version.version).to eq 2
67
59
  end
@@ -69,9 +61,9 @@ module FinePrint
69
61
  it 'results in a first version if a name is changed after publishing' do
70
62
  contract = FactoryGirl.create(:published_contract)
71
63
  expect(contract.version).to eq 1
72
- new_version = contract.draft_copy
64
+ new_version = contract.new_version
73
65
  new_version.name = 'Joe'
74
- expect(new_version.save).to be_true
66
+ expect(new_version.save).to eq true
75
67
  new_version.publish
76
68
  expect(new_version.version).to eq 1
77
69
  end
@@ -4,25 +4,15 @@ module FinePrint
4
4
  describe Signature do
5
5
  it 'can''t be associated with unpublished contracts' do
6
6
  contract = FactoryGirl.create(:contract)
7
- expect(contract.is_published?).to be_false
8
- expect(contract.can_be_updated?).to be_true
7
+ expect(contract.is_published?).to eq false
8
+ expect(contract.signatures).to be_empty
9
9
 
10
10
  sig = FactoryGirl.build(:signature)
11
11
  sig.contract = contract
12
- expect(sig.save).to be_false
12
+ expect(sig.save).to eq false
13
13
 
14
14
  contract.reload
15
- expect(contract.can_be_updated?).to be_true
16
- end
17
-
18
- it 'prevents contract from being updated' do
19
- sig = FactoryGirl.build(:signature)
20
- contract = sig.contract
21
- expect(contract.can_be_updated?).to be_true
22
-
23
- sig.save!
24
- contract.reload
25
- expect(contract.can_be_updated?).to be_false
15
+ expect(contract.signatures).to be_empty
26
16
  end
27
17
  end
28
18
  end
data/spec/spec_helper.rb CHANGED
@@ -2,7 +2,6 @@ ENV['RAILS_ENV'] ||= 'test'
2
2
 
3
3
  require File.expand_path('../dummy/config/environment.rb', __FILE__)
4
4
  require 'rspec/rails'
5
- require 'rspec/autorun'
6
5
  require 'factory_girl_rails'
7
6
  require 'faker'
8
7
 
@@ -13,7 +12,7 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
13
12
 
14
13
  RSpec.configure do |config|
15
14
  config.mock_with :rspec
16
- config.use_transactional_fixtures = true
15
+ config.use_transactional_fixtures = false
17
16
  config.infer_base_class_for_anonymous_controllers = false
18
17
  config.order = 'random'
19
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fine_print
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Slavinsky
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-08 00:00:00.000000000 Z
12
+ date: 2014-09-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -39,6 +39,34 @@ dependencies:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: action_interceptor
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 0.4.1
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 0.4.1
56
+ - !ruby/object:Gem::Dependency
57
+ name: squeel
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
42
70
  - !ruby/object:Gem::Dependency
43
71
  name: sqlite3
44
72
  requirement: !ruby/object:Gem::Requirement
@@ -132,13 +160,15 @@ files:
132
160
  - app/models/fine_print/contract.rb
133
161
  - app/models/fine_print/signature.rb
134
162
  - app/views/fine_print/contracts/_form.html.erb
163
+ - app/views/fine_print/contracts/_show.html.erb
135
164
  - app/views/fine_print/contracts/edit.html.erb
136
165
  - app/views/fine_print/contracts/index.html.erb
137
166
  - app/views/fine_print/contracts/new.html.erb
138
167
  - app/views/fine_print/contracts/new_version.html.erb
139
168
  - app/views/fine_print/contracts/show.html.erb
140
- - app/views/fine_print/home/index.html.erb
169
+ - app/views/fine_print/signatures/_form.html.erb
141
170
  - app/views/fine_print/signatures/index.html.erb
171
+ - app/views/fine_print/signatures/new.html.erb
142
172
  - app/views/layouts/fine_print/application.html.erb
143
173
  - config/initializers/fine_print.rb
144
174
  - config/routes.rb
@@ -146,7 +176,6 @@ files:
146
176
  - lib/fine_print.rb
147
177
  - lib/fine_print/controller_includes.rb
148
178
  - lib/fine_print/engine.rb
149
- - lib/fine_print/security_transgression.rb
150
179
  - lib/fine_print/version.rb
151
180
  - lib/tasks/fine_print_tasks.rake
152
181
  - spec/controllers/contracts_controller_spec.rb
@@ -1,16 +0,0 @@
1
- <h1 class='fine_print heading'>FinePrint</h1>
2
-
3
- <div class='fine_print root'>
4
- <ul class='fine_print'>
5
- <li>
6
- <%= link_to 'Manage contracts',
7
- contracts_path,
8
- :class => 'fine_print link' %>
9
- </li>
10
- <li>
11
- <%= link_to 'View signatures',
12
- signatures_path,
13
- :class => 'fine_print link' %>
14
- </li>
15
- </ul>
16
- </div>
@@ -1,3 +0,0 @@
1
- module FinePrint
2
- class SecurityTransgression < StandardError; end
3
- end