aasm 4.10.0 → 4.10.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.
- checksums.yaml +4 -4
- data/.travis.yml +13 -15
- data/CHANGELOG.md +6 -0
- data/Gemfile +1 -0
- data/README.md +54 -13
- data/gemfiles/rails_4.0.gemfile +1 -0
- data/gemfiles/rails_4.0_mongo_mapper.gemfile +1 -0
- data/gemfiles/rails_4.2.gemfile +1 -0
- data/gemfiles/rails_4.2_mongo_mapper.gemfile +1 -0
- data/gemfiles/rails_4.2_mongoid_5.gemfile +1 -0
- data/gemfiles/{rails_4.1.gemfile → rails_5.0.gemfile} +10 -4
- data/lib/aasm/base.rb +7 -1
- data/lib/aasm/core/transition.rb +1 -1
- data/lib/aasm/instance_base.rb +16 -9
- data/lib/aasm/version.rb +1 -1
- data/spec/unit/inspection_spec.rb +22 -4
- data/spec/unit/override_warning_spec.rb +26 -0
- data/spec/unit/transition_spec.rb +12 -0
- metadata +4 -5
- data/gemfiles/rails_4.1_mongo_mapper.gemfile +0 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f62dfd355dcd559e5f9b2d00afc1d858c2b9a1f8
         | 
| 4 | 
            +
              data.tar.gz: 168ae1576773a1e9e56444818704cfa74284f226
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a93b62dad3157b2b731859ba126b427d0cc6401e30d215a73dcd6182fd9126b5f0fc183cc467108937c4ff9be2d60147074f017c88b5044f2e5e80959444547a
         | 
| 7 | 
            +
              data.tar.gz: 91014f1d7a04436d98121a506ce34a3ed6777fe382dba29978f36257b17481d3d909b04562fcd747fe1e9498d2665850408da8ef8e195cba126719df5f659135
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -4,12 +4,10 @@ cache: bundler | |
| 4 4 |  | 
| 5 5 | 
             
            rvm:
         | 
| 6 6 | 
             
              - 1.9.3
         | 
| 7 | 
            -
              - 2. | 
| 8 | 
            -
              - 2.1
         | 
| 9 | 
            -
              - 2.2
         | 
| 10 | 
            -
              - 2.3
         | 
| 7 | 
            +
              - 2.2.5
         | 
| 8 | 
            +
              - 2.3.1
         | 
| 11 9 | 
             
              - jruby-1.7 # JRuby in 1.9 mode
         | 
| 12 | 
            -
              - jruby-9.0. | 
| 10 | 
            +
              - jruby-9.0.5.0
         | 
| 13 11 | 
             
              - rbx-2.5.8
         | 
| 14 12 |  | 
| 15 13 | 
             
            services:
         | 
| @@ -20,11 +18,10 @@ gemfile: | |
| 20 18 | 
             
              - gemfiles/rails_3.2_stable.gemfile
         | 
| 21 19 | 
             
              - gemfiles/rails_4.0.gemfile
         | 
| 22 20 | 
             
              - gemfiles/rails_4.0_mongo_mapper.gemfile
         | 
| 23 | 
            -
              - gemfiles/rails_4.1.gemfile
         | 
| 24 | 
            -
              - gemfiles/rails_4.1_mongo_mapper.gemfile
         | 
| 25 21 | 
             
              - gemfiles/rails_4.2.gemfile
         | 
| 26 22 | 
             
              - gemfiles/rails_4.2_mongoid_5.gemfile
         | 
| 27 23 | 
             
              - gemfiles/rails_4.2_mongo_mapper.gemfile
         | 
| 24 | 
            +
              - gemfiles/rails_5.0.gemfile
         | 
| 28 25 |  | 
| 29 26 | 
             
            before_script:
         | 
| 30 27 | 
             
              - mkdir /tmp/dynamodb
         | 
| @@ -33,15 +30,16 @@ before_script: | |
| 33 30 |  | 
| 34 31 | 
             
            matrix:
         | 
| 35 32 | 
             
              allow_failures:
         | 
| 36 | 
            -
                - rvm:  | 
| 37 | 
            -
             | 
| 38 | 
            -
                - rvm: 2. | 
| 33 | 
            +
                - rvm: jruby-9.0.5.0
         | 
| 34 | 
            +
                  gemfile: gemfiles/rails_5.0.gemfile
         | 
| 35 | 
            +
                - rvm: rbx-2.5.8
         | 
| 36 | 
            +
                  gemfile: gemfiles/rails_5.0.gemfile
         | 
| 39 37 | 
             
              exclude:
         | 
| 40 38 | 
             
                - rvm: 1.9.3
         | 
| 41 | 
            -
                  gemfile: gemfiles/ | 
| 42 | 
            -
                - rvm: 2.2
         | 
| 39 | 
            +
                  gemfile: gemfiles/rails_5.0.gemfile
         | 
| 40 | 
            +
                - rvm: 2.2.5
         | 
| 43 41 | 
             
                  gemfile: gemfiles/rails_3.2_stable.gemfile
         | 
| 44 | 
            -
                - rvm: 2.3
         | 
| 42 | 
            +
                - rvm: 2.3.1
         | 
| 45 43 | 
             
                  gemfile: gemfiles/rails_3.2_stable.gemfile
         | 
| 46 | 
            -
                - rvm: jruby- | 
| 47 | 
            -
                  gemfile: gemfiles/ | 
| 44 | 
            +
                - rvm: jruby-1.7
         | 
| 45 | 
            +
                  gemfile: gemfiles/rails_5.0.gemfile
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,11 @@ | |
| 1 1 | 
             
            # CHANGELOG
         | 
| 2 2 |  | 
| 3 | 
            +
            ## 4.10.1
         | 
| 4 | 
            +
             | 
| 5 | 
            +
             * fix: suppress warnings when using ActiveRecord enums feature (see [issue #346](https://github.com/aasm/aasm/pull/346) for details, thanks to [@110y](https://github.com/110y), and [issue #353](https://github.com/aasm/aasm/pull/353) for details, thanks to [@nathanstitt](https://github.com/nathanstitt))
         | 
| 6 | 
            +
             * fix: handle array of success callbacks for transitions properly (see [issue #363](https://github.com/aasm/aasm/pull/363) for details, thanks to [@shunichi](https://github.com/shunichi))
         | 
| 7 | 
            +
             * support `permitted: false` for states and events query/inspection methods (see [issue #364](https://github.com/aasm/aasm/pull/364) for details, thanks to [@hspazio](https://github.com/hspazio))
         | 
| 8 | 
            +
             | 
| 3 9 | 
             
            ## 4.10.0
         | 
| 4 10 |  | 
| 5 11 | 
             
             * fix: some issues with RubyMotion (see [issue #320](https://github.com/aasm/aasm/pull/320) and [issue #343](https://github.com/aasm/aasm/pull/343) for details, thanks to [@Infotaku](https://github.com/Infotaku))
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -4,6 +4,7 @@ gem "sqlite3",                          :platforms => :ruby | |
| 4 4 | 
             
            gem 'rubysl',                           :platforms => :rbx
         | 
| 5 5 | 
             
            gem "jruby-openssl",                    :platforms => :jruby
         | 
| 6 6 | 
             
            gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
         | 
| 7 | 
            +
            gem "mime-types", "~> 2" if Gem::Version.create(RUBY_VERSION.dup) <= Gem::Version.create('1.9.3')
         | 
| 7 8 | 
             
            gem "rails", "~>4.2"
         | 
| 8 9 | 
             
            gem 'mongoid', '~>4.0' if Gem::Version.create(RUBY_VERSION.dup) >= Gem::Version.create('1.9.3')
         | 
| 9 10 | 
             
            gem 'sequel'
         | 
    
        data/README.md
    CHANGED
    
    | @@ -151,7 +151,7 @@ is finished. | |
| 151 151 |  | 
| 152 152 | 
             
            AASM will also initialize `LogRunTime` and run the `call` method for you after the transition from `running` to `finished` in the example above. You can pass arguments to the class by defining an initialize method on it, like this:
         | 
| 153 153 |  | 
| 154 | 
            -
            ```
         | 
| 154 | 
            +
            ```ruby
         | 
| 155 155 | 
             
            class LogRunTime
         | 
| 156 156 | 
             
              # optional args parameter can be omitted, but if you define initialize
         | 
| 157 157 | 
             
              # you must accept the model instance as the first parameter to it.
         | 
| @@ -524,7 +524,7 @@ successful or `false` if errors occur. Exceptions are not raised. | |
| 524 524 | 
             
            If you want make sure the state gets saved without running validations (and
         | 
| 525 525 | 
             
            thereby maybe persisting aninvalid object state), simply tell AASM to skip the
         | 
| 526 526 | 
             
            validations. Be aware that when skipping validations, only the state column will
         | 
| 527 | 
            -
            be updated in the database (just like ActiveRecord ` | 
| 527 | 
            +
            be updated in the database (just like ActiveRecord `update_column` is working).
         | 
| 528 528 |  | 
| 529 529 | 
             
            ```ruby
         | 
| 530 530 | 
             
            class Job < ActiveRecord::Base
         | 
| @@ -866,29 +866,70 @@ end | |
| 866 866 |  | 
| 867 867 | 
             
            ### Inspection
         | 
| 868 868 |  | 
| 869 | 
            -
            AASM supports  | 
| 869 | 
            +
            AASM supports query methods for states and events
         | 
| 870 | 
            +
             | 
| 871 | 
            +
            Given the following `Job` class:
         | 
| 872 | 
            +
            ```ruby
         | 
| 873 | 
            +
            class Job
         | 
| 874 | 
            +
              include AASM
         | 
| 875 | 
            +
             | 
| 876 | 
            +
              aasm do
         | 
| 877 | 
            +
                state :sleeping, :initial => true
         | 
| 878 | 
            +
                state :running, :cleaning
         | 
| 879 | 
            +
             | 
| 880 | 
            +
                event :run do
         | 
| 881 | 
            +
                  transitions :from => :sleeping, :to => :running
         | 
| 882 | 
            +
                end
         | 
| 883 | 
            +
             | 
| 884 | 
            +
                event :clean do
         | 
| 885 | 
            +
                  transitions :from => :running, :to => :cleaning, :guard => :cleaning_needed?
         | 
| 886 | 
            +
                end
         | 
| 870 887 |  | 
| 871 | 
            -
             | 
| 888 | 
            +
                event :sleep do
         | 
| 889 | 
            +
                  transitions :from => [:running, :cleaning], :to => :sleeping
         | 
| 890 | 
            +
                end
         | 
| 891 | 
            +
              end
         | 
| 892 | 
            +
              
         | 
| 893 | 
            +
              def cleaning_needed?
         | 
| 894 | 
            +
                false
         | 
| 895 | 
            +
              end
         | 
| 896 | 
            +
            end
         | 
| 897 | 
            +
            ```
         | 
| 872 898 |  | 
| 873 899 | 
             
            ```ruby
         | 
| 874 900 | 
             
            # show all states
         | 
| 875 | 
            -
            Job.aasm.states.map(&:name)
         | 
| 876 | 
            -
             | 
| 901 | 
            +
            Job.aasm.states.map(&:name) 
         | 
| 902 | 
            +
            #=> [:sleeping, :running, :cleaning]
         | 
| 877 903 |  | 
| 878 904 | 
             
            job = Job.new
         | 
| 879 905 |  | 
| 880 | 
            -
            # show all permitted ( | 
| 881 | 
            -
            job.aasm.states(:permitted => true).map(&:name)
         | 
| 882 | 
            -
             | 
| 906 | 
            +
            # show all permitted states (from initial state)
         | 
| 907 | 
            +
            job.aasm.states(:permitted => true).map(&:name) 
         | 
| 908 | 
            +
            #=> [:running]
         | 
| 909 | 
            +
             | 
| 883 910 | 
             
            job.run
         | 
| 884 911 | 
             
            job.aasm.states(:permitted => true).map(&:name)
         | 
| 885 | 
            -
             | 
| 912 | 
            +
            #=> [:sleeping]
         | 
| 886 913 |  | 
| 887 | 
            -
            # show all  | 
| 914 | 
            +
            # show all non permitted states
         | 
| 915 | 
            +
            job.aasm.states(:permitted => false).map(&:name) 
         | 
| 916 | 
            +
            #=> [:cleaning]
         | 
| 917 | 
            +
             | 
| 918 | 
            +
            # show all possible (triggerable) events from the current state
         | 
| 888 919 | 
             
            job.aasm.events.map(&:name)
         | 
| 889 | 
            -
             | 
| 920 | 
            +
            #=> [:clean, :sleep]
         | 
| 921 | 
            +
             | 
| 922 | 
            +
            # show all permitted events
         | 
| 923 | 
            +
            job.aasm.events(:permitted => true).map(&:name)
         | 
| 924 | 
            +
            #=> [:sleep]
         | 
| 925 | 
            +
             | 
| 926 | 
            +
            # show all non permitted events
         | 
| 927 | 
            +
            job.aasm.events(:permitted => false).map(&:name)
         | 
| 928 | 
            +
            #=> [:clean]
         | 
| 929 | 
            +
             | 
| 930 | 
            +
            # show all possible events except a specific one
         | 
| 890 931 | 
             
            job.aasm.events(:reject => :sleep).map(&:name)
         | 
| 891 | 
            -
             | 
| 932 | 
            +
            #=> [:clean]
         | 
| 892 933 |  | 
| 893 934 | 
             
            # list states for select
         | 
| 894 935 | 
             
            Job.aasm.states_for_select
         | 
    
        data/gemfiles/rails_4.0.gemfile
    CHANGED
    
    | @@ -5,6 +5,7 @@ gem 'rubysl',                           :platforms => :rbx | |
| 5 5 | 
             
            gem 'rubinius-developer_tools',         :platforms => :rbx
         | 
| 6 6 | 
             
            gem "jruby-openssl",                    :platforms => :jruby
         | 
| 7 7 | 
             
            gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
         | 
| 8 | 
            +
            gem "mime-types", "~> 2" if Gem::Version.create(RUBY_VERSION.dup) <= Gem::Version.create('1.9.3')
         | 
| 8 9 | 
             
            gem "rails", "4.0.13"
         | 
| 9 10 | 
             
            gem 'mongoid', '~>4.0' if Gem::Version.create(RUBY_VERSION.dup) >= Gem::Version.create('1.9.3')
         | 
| 10 11 | 
             
            gem 'sequel'
         | 
| @@ -6,6 +6,7 @@ gem 'rubysl',                           :platforms => :rbx | |
| 6 6 | 
             
            gem 'rubinius-developer_tools',         :platforms => :rbx
         | 
| 7 7 | 
             
            gem "jruby-openssl",                    :platforms => :jruby
         | 
| 8 8 | 
             
            gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
         | 
| 9 | 
            +
            gem "mime-types", "~> 2" if Gem::Version.create(RUBY_VERSION.dup) <= Gem::Version.create('1.9.3')
         | 
| 9 10 | 
             
            gem "rails", "4.0.13"
         | 
| 10 11 | 
             
            gem 'sequel'
         | 
| 11 12 | 
             
            gem 'mongo_mapper', '~>0.13'
         | 
    
        data/gemfiles/rails_4.2.gemfile
    CHANGED
    
    | @@ -5,6 +5,7 @@ gem 'rubysl',                           :platforms => :rbx | |
| 5 5 | 
             
            gem 'rubinius-developer_tools',         :platforms => :rbx
         | 
| 6 6 | 
             
            gem "jruby-openssl",                    :platforms => :jruby
         | 
| 7 7 | 
             
            gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
         | 
| 8 | 
            +
            gem "mime-types", "~> 2" if Gem::Version.create(RUBY_VERSION.dup) <= Gem::Version.create('1.9.3')
         | 
| 8 9 | 
             
            gem "rails", "4.2.5"
         | 
| 9 10 | 
             
            gem 'mongoid', '~>4.0' if Gem::Version.create(RUBY_VERSION.dup) >= Gem::Version.create('1.9.3')
         | 
| 10 11 | 
             
            gem 'sequel'
         | 
| @@ -6,6 +6,7 @@ gem 'rubysl',                           :platforms => :rbx | |
| 6 6 | 
             
            gem 'rubinius-developer_tools',         :platforms => :rbx
         | 
| 7 7 | 
             
            gem "jruby-openssl",                    :platforms => :jruby
         | 
| 8 8 | 
             
            gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
         | 
| 9 | 
            +
            gem "mime-types", "~> 2" if Gem::Version.create(RUBY_VERSION.dup) <= Gem::Version.create('1.9.3')
         | 
| 9 10 | 
             
            gem "rails", "4.2.5"
         | 
| 10 11 | 
             
            gem 'sequel'
         | 
| 11 12 | 
             
            gem 'mongo_mapper'
         | 
| @@ -5,6 +5,7 @@ gem 'rubysl',                           :platforms => :rbx | |
| 5 5 | 
             
            gem 'rubinius-developer_tools',         :platforms => :rbx
         | 
| 6 6 | 
             
            gem "jruby-openssl",                    :platforms => :jruby
         | 
| 7 7 | 
             
            gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
         | 
| 8 | 
            +
            gem "mime-types", "~> 2" if Gem::Version.create(RUBY_VERSION.dup) <= Gem::Version.create('1.9.3')
         | 
| 8 9 | 
             
            gem "rails", "4.2.5"
         | 
| 9 10 | 
             
            gem 'mongoid', '~>5.0' if Gem::Version.create(RUBY_VERSION.dup) >= Gem::Version.create('1.9.3')
         | 
| 10 11 | 
             
            gem 'sequel'
         | 
| @@ -5,11 +5,17 @@ gem 'rubysl',                           :platforms => :rbx | |
| 5 5 | 
             
            gem 'rubinius-developer_tools',         :platforms => :rbx
         | 
| 6 6 | 
             
            gem "jruby-openssl",                    :platforms => :jruby
         | 
| 7 7 | 
             
            gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            gem  | 
| 8 | 
            +
             | 
| 9 | 
            +
            gem "rails", "5.0.0.beta4"
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            # mongoid is not yet Rails 5 compatible
         | 
| 12 | 
            +
            # gem 'mongoid', '~>4.0' if Gem::Version.create(RUBY_VERSION.dup) >= Gem::Version.create('1.9.3')
         | 
| 13 | 
            +
             | 
| 10 14 | 
             
            gem 'sequel'
         | 
| 11 | 
            -
             | 
| 15 | 
            +
             | 
| 16 | 
            +
            # dynamoid is not yet Rails 5 compatible
         | 
| 17 | 
            +
            # gem 'dynamoid', '~> 1',                 :platforms => :ruby
         | 
| 18 | 
            +
             | 
| 12 19 | 
             
            gem 'aws-sdk', '~>2',                   :platforms => :ruby
         | 
| 13 | 
            -
            gem "redis-objects"
         | 
| 14 20 |  | 
| 15 21 | 
             
            gemspec :path => "../"
         | 
    
        data/lib/aasm/base.rb
    CHANGED
    
    | @@ -193,7 +193,13 @@ module AASM | |
| 193 193 | 
             
                end
         | 
| 194 194 |  | 
| 195 195 | 
             
                def safely_define_method(klass, method_name, method_definition)
         | 
| 196 | 
            -
                  if  | 
| 196 | 
            +
                  # Warn if method exists and it did not originate from an enum
         | 
| 197 | 
            +
                  if klass.method_defined?(method_name) &&
         | 
| 198 | 
            +
                     ! ( @state_machine.config.enum &&
         | 
| 199 | 
            +
                         klass.respond_to?(:defined_enums) &&
         | 
| 200 | 
            +
                         klass.defined_enums.values.any?{ |methods|
         | 
| 201 | 
            +
                             methods.keys{| enum | enum + '?' == method_name }
         | 
| 202 | 
            +
                         })
         | 
| 197 203 | 
             
                    warn "#{klass.name}: overriding method '#{method_name}'!"
         | 
| 198 204 | 
             
                  end
         | 
| 199 205 |  | 
    
        data/lib/aasm/core/transition.rb
    CHANGED
    
    | @@ -125,7 +125,7 @@ module AASM::Core | |
| 125 125 | 
             
                    when Proc
         | 
| 126 126 | 
             
                      code.arity == 0 ? record.instance_exec(&code) : record.instance_exec(*args, &code)
         | 
| 127 127 | 
             
                    when Array
         | 
| 128 | 
            -
                       | 
| 128 | 
            +
                      code.map {|a| _fire_callbacks(a, record, args)}
         | 
| 129 129 | 
             
                    else
         | 
| 130 130 | 
             
                      true
         | 
| 131 131 | 
             
                  end
         | 
    
        data/lib/aasm/instance_base.rb
    CHANGED
    
    | @@ -34,19 +34,22 @@ module AASM | |
| 34 34 | 
             
                end
         | 
| 35 35 |  | 
| 36 36 | 
             
                def states(options={})
         | 
| 37 | 
            -
                  if options | 
| 38 | 
            -
                     | 
| 39 | 
            -
             | 
| 37 | 
            +
                  if options.has_key?(:permitted)
         | 
| 38 | 
            +
                    selected_events = events(:permitted => options[:permitted])
         | 
| 40 39 | 
             
                    # An array of arrays. Each inner array represents the transitions that
         | 
| 41 40 | 
             
                    # transition from the current state for an event
         | 
| 42 | 
            -
                    event_transitions =  | 
| 41 | 
            +
                    event_transitions = selected_events.map {|e| e.transitions_from_state(current_state) }
         | 
| 43 42 |  | 
| 44 | 
            -
                    # An array of  | 
| 43 | 
            +
                    # An array of :to transition states
         | 
| 45 44 | 
             
                    to_state_names = event_transitions.map do |transitions|
         | 
| 46 45 | 
             
                      return nil if transitions.empty?
         | 
| 47 46 |  | 
| 48 | 
            -
                      # Return the :to state of the first transition that is allowed or nil
         | 
| 49 | 
            -
                       | 
| 47 | 
            +
                      # Return the :to state of the first transition that is allowed (or not) or nil
         | 
| 48 | 
            +
                      if options[:permitted] 
         | 
| 49 | 
            +
                        transition = transitions.find { |t| t.allowed?(@instance) }
         | 
| 50 | 
            +
                      else
         | 
| 51 | 
            +
                        transition = transitions.find { |t| !t.allowed?(@instance) }
         | 
| 52 | 
            +
                      end
         | 
| 50 53 | 
             
                      transition ? transition.to : nil
         | 
| 51 54 | 
             
                    end.flatten.compact.uniq
         | 
| 52 55 |  | 
| @@ -64,10 +67,14 @@ module AASM | |
| 64 67 | 
             
                  options[:reject] = Array(options[:reject])
         | 
| 65 68 | 
             
                  events.reject! { |e| options[:reject].include?(e.name) }
         | 
| 66 69 |  | 
| 67 | 
            -
                  if options | 
| 70 | 
            +
                  if options.has_key?(:permitted)
         | 
| 68 71 | 
             
                    # filters the results of events_for_current_state so that only those that
         | 
| 69 72 | 
             
                    # are really currently possible (given transition guards) are shown.
         | 
| 70 | 
            -
                     | 
| 73 | 
            +
                    if options[:permitted]
         | 
| 74 | 
            +
                      events.select! { |e| @instance.send("may_#{e.name}?") }
         | 
| 75 | 
            +
                    else
         | 
| 76 | 
            +
                      events.select! { |e| !@instance.send("may_#{e.name}?") }
         | 
| 77 | 
            +
                    end
         | 
| 71 78 | 
             
                  end
         | 
| 72 79 |  | 
| 73 80 | 
             
                  events
         | 
    
        data/lib/aasm/version.rb
    CHANGED
    
    
| @@ -25,10 +25,15 @@ describe 'inspection for common cases' do | |
| 25 25 | 
             
                  expect(states).to include(:closed)
         | 
| 26 26 | 
             
                  expect(states).to include(:final)
         | 
| 27 27 |  | 
| 28 | 
            -
                   | 
| 29 | 
            -
                  expect( | 
| 30 | 
            -
                  expect( | 
| 31 | 
            -
                  expect( | 
| 28 | 
            +
                  permitted_states = foo.aasm.states(:permitted => true)
         | 
| 29 | 
            +
                  expect(permitted_states).to include(:closed)
         | 
| 30 | 
            +
                  expect(permitted_states).not_to include(:open)
         | 
| 31 | 
            +
                  expect(permitted_states).not_to include(:final)
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  blocked_states = foo.aasm.states(:permitted => false)
         | 
| 34 | 
            +
                  expect(blocked_states).to include(:closed)
         | 
| 35 | 
            +
                  expect(blocked_states).not_to include(:open)
         | 
| 36 | 
            +
                  expect(blocked_states).to include(:final)
         | 
| 32 37 |  | 
| 33 38 | 
             
                  foo.close
         | 
| 34 39 | 
             
                  expect(foo.aasm.states(:permitted => true)).to be_empty
         | 
| @@ -124,3 +129,16 @@ describe 'permitted events' do | |
| 124 129 | 
             
                expect(foo.aasm.events(:permitted => true, reject: [:close])).not_to include(:close)
         | 
| 125 130 | 
             
              end
         | 
| 126 131 | 
             
            end
         | 
| 132 | 
            +
             | 
| 133 | 
            +
            describe 'not permitted events' do
         | 
| 134 | 
            +
              let(:foo) {Foo.new}
         | 
| 135 | 
            +
             | 
| 136 | 
            +
              it 'work' do
         | 
| 137 | 
            +
                expect(foo.aasm.events(:permitted => false)).to include(:null)
         | 
| 138 | 
            +
                expect(foo.aasm.events(:permitted => false)).not_to include(:close)
         | 
| 139 | 
            +
              end
         | 
| 140 | 
            +
             | 
| 141 | 
            +
              it 'should not include events in the reject option' do
         | 
| 142 | 
            +
                expect(foo.aasm.events(:permitted => false, reject: :null)).to eq([])
         | 
| 143 | 
            +
              end
         | 
| 144 | 
            +
            end
         | 
| @@ -12,6 +12,21 @@ describe 'warns when overrides a method' do | |
| 12 12 | 
             
                end
         | 
| 13 13 | 
             
              end
         | 
| 14 14 |  | 
| 15 | 
            +
              module WithEnumBase
         | 
| 16 | 
            +
                def self.included base
         | 
| 17 | 
            +
                  base.send :include, AASM
         | 
| 18 | 
            +
                  base.instance_eval do
         | 
| 19 | 
            +
                    def defined_enums
         | 
| 20 | 
            +
                      { 'state' => { 'valid' => 0, 'invalid' => 1 } }
         | 
| 21 | 
            +
                    end
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                  base.aasm enum: true do
         | 
| 24 | 
            +
                    state :valid
         | 
| 25 | 
            +
                    event(:save) { }
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 15 30 | 
             
              describe 'state' do
         | 
| 16 31 | 
             
                class Base
         | 
| 17 32 | 
             
                  def valid?; end
         | 
| @@ -22,6 +37,16 @@ describe 'warns when overrides a method' do | |
| 22 37 | 
             
                end
         | 
| 23 38 | 
             
              end
         | 
| 24 39 |  | 
| 40 | 
            +
              describe 'enum' do
         | 
| 41 | 
            +
                class EnumBase
         | 
| 42 | 
            +
                  def valid?; end
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
                it "dosn't warn when overriding an enum" do
         | 
| 45 | 
            +
                  expect { EnumBase.send :include, WithEnumBase }.
         | 
| 46 | 
            +
                    not_to output(/EnumBase: overriding method 'valid\?'!/).to_stderr
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 25 50 | 
             
              describe 'event' do
         | 
| 26 51 | 
             
                context 'may?' do
         | 
| 27 52 | 
             
                  class Base
         | 
| @@ -40,4 +65,5 @@ describe 'warns when overrides a method' do | |
| 40 65 | 
             
                  end
         | 
| 41 66 | 
             
                end
         | 
| 42 67 | 
             
              end
         | 
| 68 | 
            +
             | 
| 43 69 | 
             
            end
         | 
| @@ -392,6 +392,18 @@ describe AASM::Core::Transition, '- when invoking the transition :success method | |
| 392 392 | 
             
                st.invoke_success_callbacks(obj, args)
         | 
| 393 393 | 
             
              end
         | 
| 394 394 |  | 
| 395 | 
            +
              it 'should accept a Array for the method name' do
         | 
| 396 | 
            +
                opts = {:from => 'foo', :to => 'bar', :success => [:test1, :test2]}
         | 
| 397 | 
            +
                st = AASM::Core::Transition.new(event, opts)
         | 
| 398 | 
            +
                args = {:arg1 => '1', :arg2 => '2'}
         | 
| 399 | 
            +
                obj = double('object', :aasm => 'aasm')
         | 
| 400 | 
            +
             | 
| 401 | 
            +
                expect(obj).to receive(:test1)
         | 
| 402 | 
            +
                expect(obj).to receive(:test2)
         | 
| 403 | 
            +
             | 
| 404 | 
            +
                st.invoke_success_callbacks(obj, args)
         | 
| 405 | 
            +
              end
         | 
| 406 | 
            +
             | 
| 395 407 | 
             
              it 'should pass args if the target method accepts them' do
         | 
| 396 408 | 
             
                opts = {:from => 'foo', :to => 'bar', :success => :test}
         | 
| 397 409 | 
             
                st = AASM::Core::Transition.new(event, opts)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: aasm
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4.10. | 
| 4 | 
            +
              version: 4.10.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Scott Barron
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2016- | 
| 13 | 
            +
            date: 2016-05-16 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: rake
         | 
| @@ -107,11 +107,10 @@ files: | |
| 107 107 | 
             
            - gemfiles/rails_3.2_stable.gemfile
         | 
| 108 108 | 
             
            - gemfiles/rails_4.0.gemfile
         | 
| 109 109 | 
             
            - gemfiles/rails_4.0_mongo_mapper.gemfile
         | 
| 110 | 
            -
            - gemfiles/rails_4.1.gemfile
         | 
| 111 | 
            -
            - gemfiles/rails_4.1_mongo_mapper.gemfile
         | 
| 112 110 | 
             
            - gemfiles/rails_4.2.gemfile
         | 
| 113 111 | 
             
            - gemfiles/rails_4.2_mongo_mapper.gemfile
         | 
| 114 112 | 
             
            - gemfiles/rails_4.2_mongoid_5.gemfile
         | 
| 113 | 
            +
            - gemfiles/rails_5.0.gemfile
         | 
| 115 114 | 
             
            - lib/aasm.rb
         | 
| 116 115 | 
             
            - lib/aasm/aasm.rb
         | 
| 117 116 | 
             
            - lib/aasm/base.rb
         | 
| @@ -300,7 +299,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 300 299 | 
             
                  version: '0'
         | 
| 301 300 | 
             
            requirements: []
         | 
| 302 301 | 
             
            rubyforge_project: 
         | 
| 303 | 
            -
            rubygems_version: 2. | 
| 302 | 
            +
            rubygems_version: 2.4.5
         | 
| 304 303 | 
             
            signing_key: 
         | 
| 305 304 | 
             
            specification_version: 4
         | 
| 306 305 | 
             
            summary: State machine mixin for Ruby objects
         | 
| @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            source "https://rubygems.org"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            gem "sqlite3",                          :platforms => :ruby
         | 
| 4 | 
            -
            gem "coveralls"
         | 
| 5 | 
            -
            gem 'rubysl',                           :platforms => :rbx
         | 
| 6 | 
            -
            gem 'rubinius-developer_tools',         :platforms => :rbx
         | 
| 7 | 
            -
            gem "jruby-openssl",                    :platforms => :jruby
         | 
| 8 | 
            -
            gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
         | 
| 9 | 
            -
            gem "rails", "4.1.14"
         | 
| 10 | 
            -
            gem 'sequel'
         | 
| 11 | 
            -
            gem 'mongo_mapper', '~> 0.13'
         | 
| 12 | 
            -
            gem 'bson_ext',                          :platforms => :ruby
         | 
| 13 | 
            -
            gem 'dynamoid', '~> 1',                  :platforms => :ruby
         | 
| 14 | 
            -
            gem 'aws-sdk', '~>2',                    :platforms => :ruby
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            gemspec :path => "../"
         |