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
         |