fine_print 2.3.1 → 3.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.
- checksums.yaml +4 -4
- data/README.md +101 -61
- data/Rakefile +2 -2
- data/app/controllers/fine_print/application_controller.rb +5 -5
- data/app/controllers/fine_print/contracts_controller.rb +15 -12
- data/app/controllers/fine_print/signatures_controller.rb +11 -8
- data/app/models/fine_print/contract.rb +10 -10
- data/app/models/fine_print/signature.rb +9 -8
- data/app/views/fine_print/contracts/_form.html.erb +8 -8
- data/app/views/fine_print/contracts/edit.html.erb +2 -2
- data/app/views/fine_print/contracts/index.html.erb +39 -16
- data/app/views/fine_print/contracts/new.html.erb +3 -1
- data/app/views/fine_print/contracts/new_version.html.erb +7 -4
- data/app/views/fine_print/contracts/show.html.erb +33 -18
- data/app/views/fine_print/signatures/_form.html.erb +7 -4
- data/app/views/fine_print/signatures/index.html.erb +17 -9
- data/app/views/fine_print/signatures/new.html.erb +6 -4
- data/config/initializers/fine_print.rb +39 -36
- data/config/routes.rb +3 -2
- data/db/migrate/0_install_fine_print.rb +8 -8
- data/lib/fine_print.rb +40 -55
- data/lib/fine_print/action_controller/base.rb +118 -0
- data/lib/fine_print/configuration.rb +24 -0
- data/lib/fine_print/engine.rb +10 -6
- data/lib/fine_print/version.rb +1 -1
- data/lib/tasks/fine_print_tasks.rake +4 -2
- data/spec/controllers/contracts_controller_spec.rb +22 -22
- data/spec/controllers/home_controller_spec.rb +1 -1
- data/spec/controllers/signatures_controller_spec.rb +11 -11
- data/spec/dummy/app/views/layouts/application.html.erb +2 -1
- data/spec/dummy/config/initializers/fine_print.rb +2 -1
- data/spec/dummy/config/routes.rb +0 -1
- data/spec/dummy/db/migrate/1_create_dummy_users.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +585 -3119
- data/spec/factories/fine_print/contract.rb +1 -1
- data/spec/factories/fine_print/signature.rb +2 -2
- data/spec/factories/user.rb +1 -1
- data/spec/lib/fine_print/action_controller/base_spec.rb +30 -0
- data/spec/lib/fine_print_spec.rb +14 -11
- data/spec/models/contract_spec.rb +2 -2
- data/spec/models/signature_spec.rb +1 -1
- metadata +6 -5
- data/lib/fine_print/controller_includes.rb +0 -93
- data/spec/lib/fine_print/controller_includes_spec.rb +0 -25
@@ -1,5 +1,5 @@
|
|
1
1
|
FactoryGirl.define do
|
2
|
-
factory :fine_print_contract, :
|
2
|
+
factory :fine_print_contract, class: FinePrint::Contract do
|
3
3
|
name { Faker::Lorem.words.join('_') }
|
4
4
|
title { Faker::Lorem.words.join(' ').capitalize }
|
5
5
|
content { Faker::Lorem.paragraphs.join("\n") }
|
@@ -1,6 +1,6 @@
|
|
1
1
|
FactoryGirl.define do
|
2
|
-
factory :fine_print_signature, :
|
3
|
-
association :contract, :
|
2
|
+
factory :fine_print_signature, class: FinePrint::Signature do
|
3
|
+
association :contract, factory: [:fine_print_contract, :published]
|
4
4
|
|
5
5
|
transient do
|
6
6
|
user_factory :user
|
data/spec/factories/user.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module FinePrint
|
4
|
+
module ActionController
|
5
|
+
describe Base, type: :lib do
|
6
|
+
let!(:controller) { ::ActionController::Base.new }
|
7
|
+
let!(:dummy_controller) { DummyModelsController.new }
|
8
|
+
|
9
|
+
it 'must add fine_print_sign to ActionController instances' do
|
10
|
+
expect(controller).to respond_to(:fine_print_require)
|
11
|
+
expect(dummy_controller).to respond_to(:fine_print_require)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'must add fine_print_return to ActionController instances' do
|
15
|
+
expect(controller.respond_to?(:fine_print_return, true)).to eq true
|
16
|
+
expect(dummy_controller.respond_to?(:fine_print_return, true)).to eq true
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'must add fine_print_require to ActionController and subclasses' do
|
20
|
+
expect(controller.class).to respond_to(:fine_print_require)
|
21
|
+
expect(dummy_controller.class).to respond_to(:fine_print_require)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'must add fine_print_skip to ActionController and subclasses' do
|
25
|
+
expect(controller.class).to respond_to(:fine_print_skip)
|
26
|
+
expect(dummy_controller.class).to respond_to(:fine_print_skip)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/spec/lib/fine_print_spec.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe FinePrint do
|
3
|
+
describe FinePrint, type: :lib do
|
4
4
|
before :each do
|
5
|
-
@alpha_1 = FactoryGirl.create(:fine_print_contract, :published,
|
6
|
-
|
5
|
+
@alpha_1 = FactoryGirl.create(:fine_print_contract, :published,
|
6
|
+
name: 'alpha')
|
7
|
+
@beta_1 = FactoryGirl.create(:fine_print_contract, :published,
|
8
|
+
name: 'beta')
|
7
9
|
|
8
10
|
@user = DummyUser.create
|
9
|
-
@alpha_1_sig = FactoryGirl.create(:fine_print_signature, :
|
10
|
-
:
|
11
|
-
@beta_1_sig = FactoryGirl.create(:fine_print_signature, :
|
12
|
-
:
|
11
|
+
@alpha_1_sig = FactoryGirl.create(:fine_print_signature, contract: @alpha_1,
|
12
|
+
user: @user)
|
13
|
+
@beta_1_sig = FactoryGirl.create(:fine_print_signature, contract: @beta_1,
|
14
|
+
user: @user)
|
13
15
|
|
14
16
|
@alpha_2 = @alpha_1.new_version
|
15
17
|
@alpha_2.update_attribute(:content, 'foo')
|
@@ -26,13 +28,14 @@ describe FinePrint do
|
|
26
28
|
end
|
27
29
|
|
28
30
|
it 'gets signed contracts' do
|
29
|
-
expect(FinePrint.
|
30
|
-
eq [@beta_1
|
31
|
+
expect(FinePrint.signed_contracts_for(@user)).to(
|
32
|
+
eq [@beta_1]
|
33
|
+
)
|
31
34
|
end
|
32
35
|
|
33
36
|
it 'gets unsigned contracts' do
|
34
|
-
|
35
|
-
|
37
|
+
names = [@alpha_2, @beta_1].collect{|c| c.name}
|
38
|
+
expect(FinePrint.unsigned_contracts_for(@user, name: names)).to eq [@alpha_2]
|
36
39
|
end
|
37
40
|
|
38
41
|
it 'allows users to sign contracts' do
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module FinePrint
|
4
|
-
describe Contract do
|
4
|
+
describe Contract, type: :model do
|
5
5
|
it 'can be published and unpublished' do
|
6
6
|
contract = FactoryGirl.create(:fine_print_contract)
|
7
7
|
expect(contract.is_published?).to eq false
|
@@ -36,7 +36,7 @@ module FinePrint
|
|
36
36
|
expect(contract.is_published?).to eq true
|
37
37
|
expect(contract.signatures).to be_empty
|
38
38
|
|
39
|
-
ua = FactoryGirl.create(:fine_print_signature, :
|
39
|
+
ua = FactoryGirl.create(:fine_print_signature, contract: contract)
|
40
40
|
contract.reload
|
41
41
|
expect(contract.signatures).not_to be_empty
|
42
42
|
|
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:
|
4
|
+
version: 3.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: 2015-03-
|
12
|
+
date: 2015-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -171,7 +171,8 @@ files:
|
|
171
171
|
- config/routes.rb
|
172
172
|
- db/migrate/0_install_fine_print.rb
|
173
173
|
- lib/fine_print.rb
|
174
|
-
- lib/fine_print/
|
174
|
+
- lib/fine_print/action_controller/base.rb
|
175
|
+
- lib/fine_print/configuration.rb
|
175
176
|
- lib/fine_print/engine.rb
|
176
177
|
- lib/fine_print/version.rb
|
177
178
|
- lib/tasks/fine_print_tasks.rake
|
@@ -219,7 +220,7 @@ files:
|
|
219
220
|
- spec/factories/fine_print/contract.rb
|
220
221
|
- spec/factories/fine_print/signature.rb
|
221
222
|
- spec/factories/user.rb
|
222
|
-
- spec/lib/fine_print/
|
223
|
+
- spec/lib/fine_print/action_controller/base_spec.rb
|
223
224
|
- spec/lib/fine_print_spec.rb
|
224
225
|
- spec/models/contract_spec.rb
|
225
226
|
- spec/models/signature_spec.rb
|
@@ -294,7 +295,7 @@ test_files:
|
|
294
295
|
- spec/factories/fine_print/contract.rb
|
295
296
|
- spec/factories/fine_print/signature.rb
|
296
297
|
- spec/factories/user.rb
|
297
|
-
- spec/lib/fine_print/
|
298
|
+
- spec/lib/fine_print/action_controller/base_spec.rb
|
298
299
|
- spec/lib/fine_print_spec.rb
|
299
300
|
- spec/models/contract_spec.rb
|
300
301
|
- spec/models/signature_spec.rb
|
@@ -1,93 +0,0 @@
|
|
1
|
-
module FinePrint
|
2
|
-
module ControllerIncludes
|
3
|
-
def self.included(base)
|
4
|
-
base.extend(ClassMethods)
|
5
|
-
end
|
6
|
-
|
7
|
-
# Accepts a user, an array of contract ids to be signed and an options hash
|
8
|
-
# Calls the sign_proc with the given parameters
|
9
|
-
def fine_print_sign(user, *args)
|
10
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
11
|
-
contract_ids = args.flatten.collect{|n| n.to_s}
|
12
|
-
|
13
|
-
blk = options[:must_sign_proc] || FinePrint.must_sign_proc
|
14
|
-
|
15
|
-
# Use action_interceptor to save the current url
|
16
|
-
store_url key: :fine_print_return_to
|
17
|
-
|
18
|
-
instance_exec user, contract_ids, &blk
|
19
|
-
end
|
20
|
-
|
21
|
-
# Accepts no arguments
|
22
|
-
# Redirects the user back to the url they were at before
|
23
|
-
# one of FinePrint's procs redirected them
|
24
|
-
def fine_print_return
|
25
|
-
redirect_back key: :fine_print_return_to
|
26
|
-
end
|
27
|
-
|
28
|
-
protected
|
29
|
-
|
30
|
-
def fine_print_skipped_contract_names
|
31
|
-
@fine_print_skipped_contract_names ||= []
|
32
|
-
end
|
33
|
-
|
34
|
-
module ClassMethods
|
35
|
-
# For the following methods, names passed as Symbols are converted to Strings.
|
36
|
-
|
37
|
-
# Accepts an array of contract names and an options hash
|
38
|
-
# Adds a before_filter to the current controller that will check if the
|
39
|
-
# current user has signed the given contracts and call the sign_proc if appropriate
|
40
|
-
# Options relevant to FinePrint are passed to fine_print_sign, while
|
41
|
-
# other options are passed to the before_filter
|
42
|
-
def fine_print_require(*args)
|
43
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
44
|
-
|
45
|
-
filter_options = options.except(*FinePrint::CONTROLLER_OPTIONS)
|
46
|
-
fine_print_options = options.slice(*FinePrint::CONTROLLER_OPTIONS)
|
47
|
-
|
48
|
-
# Convert names to an array of Strings
|
49
|
-
contract_names = args.flatten.collect{|c| c.to_s}
|
50
|
-
|
51
|
-
class_eval do
|
52
|
-
before_filter(filter_options) do |controller|
|
53
|
-
skipped_contract_names = controller.fine_print_skipped_contract_names
|
54
|
-
unskipped_contract_names = contract_names - skipped_contract_names
|
55
|
-
|
56
|
-
# Return quietly if all contracts skipped
|
57
|
-
next if unskipped_contract_names.blank?
|
58
|
-
|
59
|
-
user = instance_exec &FinePrint.current_user_proc
|
60
|
-
|
61
|
-
contract_ids = FinePrint.contract_names_to_ids(unskipped_contract_names).flatten
|
62
|
-
|
63
|
-
unsigned_contract_ids = FinePrint.get_unsigned_contract_ids(user, contract_ids)
|
64
|
-
|
65
|
-
# Return quietly if no contracts left to sign
|
66
|
-
next if unsigned_contract_ids.blank?
|
67
|
-
|
68
|
-
controller.fine_print_sign(user, unsigned_contract_ids, fine_print_options)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
# Accepts an array of contract names and an options hash
|
74
|
-
# Excludes the given contracts from the `fine_print_require`
|
75
|
-
# check for this controller and subclasses
|
76
|
-
# Options are passed to prepend_before_filter
|
77
|
-
def fine_print_skip(*args)
|
78
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
79
|
-
|
80
|
-
# Convert names to an array of Strings
|
81
|
-
contract_names = args.flatten.collect{|c| c.to_s}
|
82
|
-
|
83
|
-
class_eval do
|
84
|
-
prepend_before_filter(options) do |controller|
|
85
|
-
controller.fine_print_skipped_contract_names.push(*contract_names)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
ActionController::Base.send :include, FinePrint::ControllerIncludes
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module FinePrint
|
4
|
-
describe ControllerIncludes do
|
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
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'must add fine_print_return to ActionController instances' do
|
11
|
-
expect(ActionController::Base.new.respond_to?(:fine_print_return, true)).to eq true
|
12
|
-
expect(DummyModelsController.new.respond_to?(:fine_print_return, true)).to eq true
|
13
|
-
end
|
14
|
-
|
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
|
18
|
-
end
|
19
|
-
|
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
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|