acts-as-approvable 0.6.7 → 0.6.8.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.
- data/.gitignore +2 -5
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Appraisals +14 -10
- data/CHANGELOG +16 -0
- data/Gemfile.lock +60 -20
- data/README.md +1 -2
- data/Rakefile +44 -16
- data/VERSION +1 -1
- data/acts-as-approvable.gemspec +21 -11
- data/features/create_approval.feature +26 -0
- data/features/step_definitions/cucumber_steps.rb +86 -0
- data/features/support/env.rb +14 -0
- data/features/support/large.txt +29943 -0
- data/features/support/second_large.txt +31798 -0
- data/features/update_approval.feature +34 -0
- data/gemfiles/Gemfile.ci +14 -0
- data/gemfiles/Gemfile.ci.lock +98 -0
- data/gemfiles/mysql2.gemfile +7 -0
- data/gemfiles/mysql2.gemfile.lock +92 -0
- data/gemfiles/rails2.gemfile +1 -0
- data/gemfiles/rails2.gemfile.lock +59 -17
- data/gemfiles/rails30.gemfile +1 -0
- data/gemfiles/rails30.gemfile.lock +54 -14
- data/gemfiles/rails31.gemfile +1 -0
- data/gemfiles/rails31.gemfile.lock +54 -14
- data/gemfiles/sqlite.gemfile +7 -0
- data/generators/acts_as_approvable/templates/create_approvals.rb +8 -7
- data/lib/acts-as-approvable.rb +2 -3
- data/lib/acts_as_approvable/approval.rb +3 -2
- data/lib/acts_as_approvable/model.rb +55 -0
- data/lib/acts_as_approvable/model/class_methods.rb +63 -0
- data/lib/acts_as_approvable/model/create_instance_methods.rb +83 -0
- data/lib/acts_as_approvable/model/instance_methods.rb +89 -0
- data/lib/acts_as_approvable/model/update_instance_methods.rb +61 -0
- data/lib/acts_as_approvable/railtie.rb +1 -1
- data/lib/generators/acts_as_approvable/templates/create_approvals.rb +8 -7
- data/spec/acts_as_approvable/approval_spec.rb +475 -0
- data/spec/acts_as_approvable/model/class_methods_spec.rb +219 -0
- data/spec/acts_as_approvable/model/create_instance_methods_spec.rb +149 -0
- data/spec/acts_as_approvable/model/instance_methods_spec.rb +328 -0
- data/spec/acts_as_approvable/model/update_instance_methods_spec.rb +111 -0
- data/spec/acts_as_approvable/model_spec.rb +90 -0
- data/spec/acts_as_approvable/ownership/class_methods_spec.rb +101 -0
- data/spec/acts_as_approvable/ownership/instance_methods_spec.rb +32 -0
- data/spec/acts_as_approvable/ownership_spec.rb +51 -0
- data/spec/acts_as_approvable_spec.rb +29 -0
- data/spec/spec_helper.rb +51 -0
- data/spec/support/database.rb +46 -0
- data/spec/support/database.yml +12 -0
- data/spec/support/matchers.rb +87 -0
- data/spec/support/models.rb +60 -0
- data/{test → spec/support}/schema.rb +15 -9
- metadata +156 -53
- data/gemfiles/rails32.gemfile +0 -8
- data/gemfiles/rails32.gemfile.lock +0 -99
- data/lib/acts_as_approvable/acts_as_approvable.rb +0 -291
- data/test/acts_as_approvable_model_test.rb +0 -459
- data/test/acts_as_approvable_ownership_test.rb +0 -132
- data/test/acts_as_approvable_schema_test.rb +0 -13
- data/test/acts_as_approvable_test.rb +0 -8
- data/test/database.yml +0 -7
- data/test/support.rb +0 -19
- data/test/test_helper.rb +0 -62
@@ -1,132 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ActsAsApprovableOwnershipTest < Test::Unit::TestCase
|
4
|
-
load_schema
|
5
|
-
|
6
|
-
def teardown
|
7
|
-
truncate
|
8
|
-
end
|
9
|
-
|
10
|
-
context 'with default configuration' do
|
11
|
-
setup do
|
12
|
-
# Reset from test below
|
13
|
-
ActsAsApprovable::Ownership.configure do
|
14
|
-
def self.available_owners
|
15
|
-
owner_class.all
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
should 'respond to .owner_class' do
|
21
|
-
assert_respond_to Approval, :owner_class
|
22
|
-
end
|
23
|
-
|
24
|
-
should 'respond to .available_owners' do
|
25
|
-
assert_respond_to Approval, :available_owners
|
26
|
-
end
|
27
|
-
|
28
|
-
should 'respond to .options_for_available_owners' do
|
29
|
-
assert_respond_to Approval, :options_for_available_owners
|
30
|
-
end
|
31
|
-
|
32
|
-
should 'respond to .assigned_owners' do
|
33
|
-
assert_respond_to Approval, :assigned_owners
|
34
|
-
end
|
35
|
-
|
36
|
-
should 'respond to .options_for_assigned_owners' do
|
37
|
-
assert_respond_to Approval, :options_for_assigned_owners
|
38
|
-
end
|
39
|
-
|
40
|
-
context 'and some objects' do
|
41
|
-
setup do
|
42
|
-
@employee = Employee.create
|
43
|
-
@approval = @employee.approval
|
44
|
-
|
45
|
-
@user1, @user2 = User.without_approval { |m| [m.create, m.create] }
|
46
|
-
end
|
47
|
-
|
48
|
-
context '#assign' do
|
49
|
-
should 'raise an error when the record is not assignable' do
|
50
|
-
assert_raise(ActsAsApprovable::Error::InvalidOwner) { @approval.assign(@employee) }
|
51
|
-
end
|
52
|
-
|
53
|
-
should 'allow assignment of a valid record' do
|
54
|
-
assert_nothing_raised { @approval.assign(@user1) }
|
55
|
-
assert_equal @approval.owner, @user1
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context '#unassign' do
|
60
|
-
setup do
|
61
|
-
@approval.owner = @user1
|
62
|
-
@approval.unassign
|
63
|
-
end
|
64
|
-
|
65
|
-
should 'nullify the owner' do
|
66
|
-
assert @approval.owner.nil?
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context '.available_owners' do
|
71
|
-
should 'contain all available owners' do
|
72
|
-
assert_equal [@user1, @user2], Approval.available_owners
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
context '.options_for_available_owners' do
|
77
|
-
should 'format all available owners for a #options_for_select' do
|
78
|
-
assert_equal Approval.options_for_available_owners, [
|
79
|
-
[@user1.to_str, @user1.id],
|
80
|
-
[@user2.to_str, @user2.id]
|
81
|
-
]
|
82
|
-
end
|
83
|
-
|
84
|
-
should 'insert a prompt if requested' do
|
85
|
-
assert_equal ['(none)', nil], Approval.options_for_available_owners(true).first
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
context 'with some assigned owners' do
|
90
|
-
setup do
|
91
|
-
@user3 = User.without_approval { |m| m.create }
|
92
|
-
|
93
|
-
@approval.assign(@user1)
|
94
|
-
Employee.create.approval.assign(@user3)
|
95
|
-
end
|
96
|
-
|
97
|
-
context '.assigned_owners' do
|
98
|
-
should 'contain all assigned owners' do
|
99
|
-
assert_equal [@user1, @user3], Approval.assigned_owners
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
context '.options_for_assigned_owners' do
|
104
|
-
should 'format all assigned owners for #options_for_select' do
|
105
|
-
assert_equal Approval.options_for_assigned_owners, [
|
106
|
-
[@user1.to_str, @user1.id],
|
107
|
-
[@user3.to_str, @user3.id]
|
108
|
-
]
|
109
|
-
end
|
110
|
-
|
111
|
-
should 'insert a prompt if requested' do
|
112
|
-
assert_equal ['All Users', nil], Approval.options_for_assigned_owners(true).first
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
context 'given a block' do
|
120
|
-
setup do
|
121
|
-
ActsAsApprovable::Ownership.configure do
|
122
|
-
def self.available_owners
|
123
|
-
[1, 2, 3]
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
should 'allow overriding methods' do
|
129
|
-
assert_equal [1, 2, 3], Approval.available_owners
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ActsAsApprovableSchemaTest < Test::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
load_schema
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_schema_has_loaded_correctly
|
9
|
-
assert_equal [], User.all
|
10
|
-
assert_equal [], Project.all
|
11
|
-
assert_equal [], Approval.all
|
12
|
-
end
|
13
|
-
end
|
@@ -1,8 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ActsAsApprovableTest < Test::Unit::TestCase
|
4
|
-
should 'set VERSION contanst to file contents' do
|
5
|
-
contents = File.read(File.expand_path(File.join(File.dirname(__FILE__), '..', 'VERSION'))).chomp
|
6
|
-
assert_equal ActsAsApprovable::VERSION, contents
|
7
|
-
end
|
8
|
-
end
|
data/test/database.yml
DELETED
data/test/support.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
class User < ActiveRecord::Base
|
2
|
-
acts_as_approvable :on => :create, :state_field => :state
|
3
|
-
|
4
|
-
def to_str
|
5
|
-
login || "user-#{id}"
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
class Project < ActiveRecord::Base
|
10
|
-
acts_as_approvable :on => :update, :ignore => :title
|
11
|
-
end
|
12
|
-
|
13
|
-
class Game < ActiveRecord::Base
|
14
|
-
acts_as_approvable :on => :update, :only => :title
|
15
|
-
end
|
16
|
-
|
17
|
-
class Employee < ActiveRecord::Base
|
18
|
-
acts_as_approvable
|
19
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
if RUBY_VERSION =~ /^1\.9/
|
2
|
-
require 'simplecov'
|
3
|
-
SimpleCov.start do
|
4
|
-
add_filter '/test/'
|
5
|
-
end if ENV['COVERAGE']
|
6
|
-
end
|
7
|
-
|
8
|
-
ENV['RAILS_ENV'] = 'test'
|
9
|
-
ENV['RAILS_ROOT'] ||= File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', '..'))
|
10
|
-
|
11
|
-
require 'rubygems'
|
12
|
-
require 'test/unit'
|
13
|
-
require 'mocha'
|
14
|
-
require 'shoulda'
|
15
|
-
require 'active_record'
|
16
|
-
|
17
|
-
require File.dirname(__FILE__) + '/../lib/acts-as-approvable'
|
18
|
-
require './test/support'
|
19
|
-
|
20
|
-
logfile = File.dirname(__FILE__) + '/debug.log'
|
21
|
-
LOGGER = ActiveRecord::Base.logger = if defined?(ActiveSupport::BufferedLogger)
|
22
|
-
ActiveSupport::BufferedLogger.new(logfile)
|
23
|
-
else
|
24
|
-
Logger.new(logfile)
|
25
|
-
end
|
26
|
-
|
27
|
-
def load_schema
|
28
|
-
config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
|
29
|
-
|
30
|
-
db_adapter = ENV['DB']
|
31
|
-
|
32
|
-
db_adapter ||=
|
33
|
-
begin
|
34
|
-
require 'sqlite'
|
35
|
-
'sqlite'
|
36
|
-
rescue MissingSourceFile
|
37
|
-
begin
|
38
|
-
require 'sqlite3'
|
39
|
-
'sqlite3'
|
40
|
-
rescue MissingSourceFile
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
if db_adapter.nil?
|
45
|
-
raise 'No DB Adapter selected. Pass the DB= option to pick one, or install Sqlite or Sqlite3.'
|
46
|
-
end
|
47
|
-
|
48
|
-
ActiveRecord::Base.establish_connection(config[db_adapter])
|
49
|
-
ActiveRecord::Migration.suppress_messages do
|
50
|
-
load(File.dirname(__FILE__) + '/schema.rb')
|
51
|
-
end
|
52
|
-
|
53
|
-
ar_classes.each { |klass| klass.reset_column_information }
|
54
|
-
end
|
55
|
-
|
56
|
-
def ar_classes
|
57
|
-
ActiveRecord::Base.send(ActiveRecord::Base.respond_to?(:descendants) ? :descendants : :subclasses)
|
58
|
-
end
|
59
|
-
|
60
|
-
def truncate
|
61
|
-
ar_classes.each { |klass| klass.delete_all }
|
62
|
-
end
|