diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..79af434e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,67 @@ +name: ci + +on: + push: + branches: [ master ] + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + +env: + RAILS_ENV: test + +jobs: + not-a-draft-pr: + name: Continue if not draft PR + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + steps: + - run: exit 0 + + test: + name: Tests for version + needs: not-a-draft-pr + runs-on: ubuntu-latest + timeout-minutes: 5 + + strategy: + fail-fast: false + matrix: + ruby-version: ['3.3.11', '3.4.9', '4.0.3'] + + env: + CI_RUBY_VERSION: ${{ matrix.ruby-version }} + + steps: + - uses: actions/checkout@v6 + + - name: Setup ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + + - name: Bundle + run: bundle install + + - name: Run tests + run: bundle exec rake test + + - name: Run active_record integration tests + run: | + for version in 7.2.3 8.0.5 8.1.3; do + echo -e "\nRunning tests for active_record ${version}\n" + + bundle install --gemfile=./gemfiles/active_record_${version}.gemfile + + bundle exec appraisal active_record_${version} rake test + done + + # This is required to make requiring status checks easy in Github branch protection rules + test-success: + name: Tests + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + needs: test + steps: + - name: Check build matrix status + if: ${{ needs.test.result != 'success' }} + run: exit 1 diff --git a/Appraisals b/Appraisals index 87e3571d..8a7210d7 100644 --- a/Appraisals +++ b/Appraisals @@ -23,134 +23,33 @@ appraise "graphviz_1.0.8" do end # ActiveRecord integrations -if RUBY_VERSION < "1.9.1" - appraise "active_record_2.0.0" do - gem "sqlite3-ruby", "1.3.1", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "2.0.0" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end - - appraise "active_record_2.0.5" do - gem "sqlite3-ruby", "1.3.1", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "2.0.5" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end - - appraise "active_record_2.1.0" do - gem "sqlite3-ruby", "1.3.1", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "2.1.0" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end - - appraise "active_record_2.1.2" do - gem "sqlite3-ruby", "1.3.1", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "2.1.2" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end - - appraise "active_record_2.2.3" do - gem "sqlite3-ruby", "1.3.1", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "2.2.3" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end -end - -if RUBY_VERSION < "1.9.2" - appraise "active_record_2.3.5" do - gem "sqlite3-ruby", "1.3.1", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "2.3.5" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end -end - -if RUBY_VERSION < "2.0.0" - appraise "active_record_2.3.12" do - gem "sqlite3-ruby", "1.3.1", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "2.3.12" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end -end - -if RUBY_VERSION > "1.8.6" && RUBY_PLATFORM != "java" - appraise "active_record_3.0.0" do - gem "sqlite3-ruby", "1.3.1", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "3.0.0" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end +appraise "active_record_7.2.3" do + gem "sqlite3", "2.9.4" + gem "activerecord", "7.2.3" end -if RUBY_VERSION > "1.8.6" - appraise "active_record_3.0.5" do - gem "sqlite3-ruby", "1.3.1", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "3.0.5" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end +appraise "active_record_8.0.5" do + gem "sqlite3", "2.9.4" + gem "activerecord", "8.0.5" end -if RUBY_VERSION > "1.8.6" && RUBY_VERSION != "1.9.1" && RUBY_VERSION < "2.0.0" - appraise "active_record_3.1.1" do - gem "sqlite3", "1.3.6", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "3.1.1" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end - - appraise "active_record_3.2.12" do - gem "sqlite3", "1.3.6", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "3.2.12" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end +appraise "active_record_8.1.3" do + gem "sqlite3", "2.9.4" + gem "activerecord", "8.1.3" end -if RUBY_VERSION > "1.8.6" && RUBY_VERSION != "1.9.1" - appraise "active_record_3.2.13.rc1" do - gem "sqlite3", "1.3.6", :platform => [:ruby, :mswin, :mingw] - gem "activerecord", "3.2.13.rc1" - gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform => :jruby - end +appraise "active_model_7.2.3" do + gem "activemodel", "7.2.3" end -if RUBY_VERSION > "1.9.2" - appraise "active_record_4.0.0" do - gem "sqlite3", "1.3.6" - gem "activerecord", "4.0.0.beta1", :git => "git://github.com/rails/rails.git", :ref => "92d6dac" - gem "activerecord-deprecated_finders", "0.0.3" - gem "protected_attributes", "1.0.0" - gem "rails-observers", "0.1.1" - end +appraise "active_model_8.0.5" do + gem "activemodel", "8.0.5" end -# ActiveModel integrations -if RUBY_VERSION > "1.8.6" && RUBY_VERSION < "2.0.0" - appraise "active_model_3.0.0" do - gem "activemodel", "3.0.0" - end - - appraise "active_model_3.0.5" do - gem "activemodel", "3.0.5" - end - - appraise "active_model_3.1.1" do - gem "activemodel", "3.1.1" - end - - appraise "active_model_3.2.12" do - gem "activemodel", "3.2.12" - end +appraise "active_model_8.1.3" do + gem "activemodel", "8.1.3" end -if RUBY_VERSION > "1.8.6" - appraise "active_model_3.2.13.rc1" do - gem "activemodel", "3.2.13.rc1" - end -end - -if RUBY_VERSION > "1.9.2" - appraise "active_model_4.0.0" do - gem "activemodel", "4.0.0.beta", :git => "git://github.com/rails/rails.git", :ref => "4e286bf" - gem "rails-observers", "0.1.1" - gem "protected_attributes", "1.0.0" - end -end # MongoMapper integrations if RUBY_VERSION > "1.8.6" && RUBY_VERSION < "1.9.1" diff --git a/gemfiles/active_model_3.0.0.gemfile.lock b/gemfiles/active_model_3.0.0.gemfile.lock deleted file mode 100644 index cc2163d7..00000000 --- a/gemfiles/active_model_3.0.0.gemfile.lock +++ /dev/null @@ -1,35 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.0.0) - activesupport (= 3.0.0) - builder (~> 2.1.2) - i18n (~> 0.4.1) - activesupport (3.0.0) - appraisal (0.5.1) - bundler - rake - builder (2.1.2) - i18n (0.4.2) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activemodel (= 3.0.0) - appraisal (~> 0.5.0) - rake - simplecov - state_machine! diff --git a/gemfiles/active_model_3.0.5.gemfile.lock b/gemfiles/active_model_3.0.5.gemfile.lock deleted file mode 100644 index 29d50706..00000000 --- a/gemfiles/active_model_3.0.5.gemfile.lock +++ /dev/null @@ -1,35 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.0.5) - activesupport (= 3.0.5) - builder (~> 2.1.2) - i18n (~> 0.4) - activesupport (3.0.5) - appraisal (0.5.1) - bundler - rake - builder (2.1.2) - i18n (0.6.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activemodel (= 3.0.5) - appraisal (~> 0.5.0) - rake - simplecov - state_machine! diff --git a/gemfiles/active_model_3.1.1.gemfile.lock b/gemfiles/active_model_3.1.1.gemfile.lock deleted file mode 100644 index f1568719..00000000 --- a/gemfiles/active_model_3.1.1.gemfile.lock +++ /dev/null @@ -1,36 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.1.1) - activesupport (= 3.1.1) - builder (~> 3.0.0) - i18n (~> 0.6) - activesupport (3.1.1) - multi_json (~> 1.0) - appraisal (0.5.1) - bundler - rake - builder (3.0.4) - i18n (0.6.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activemodel (= 3.1.1) - appraisal (~> 0.5.0) - rake - simplecov - state_machine! diff --git a/gemfiles/active_model_3.2.12.gemfile b/gemfiles/active_model_3.2.12.gemfile deleted file mode 100644 index ebf5b9a6..00000000 --- a/gemfiles/active_model_3.2.12.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "activemodel", "3.2.12" - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_model_3.2.12.gemfile.lock b/gemfiles/active_model_3.2.12.gemfile.lock deleted file mode 100644 index dec4952d..00000000 --- a/gemfiles/active_model_3.2.12.gemfile.lock +++ /dev/null @@ -1,36 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.2.12) - activesupport (= 3.2.12) - builder (~> 3.0.0) - activesupport (3.2.12) - i18n (~> 0.6) - multi_json (~> 1.0) - appraisal (0.5.1) - bundler - rake - builder (3.0.4) - i18n (0.6.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activemodel (= 3.2.12) - appraisal (~> 0.5.0) - rake - simplecov - state_machine! diff --git a/gemfiles/active_model_3.2.13.rc1.gemfile b/gemfiles/active_model_3.2.13.rc1.gemfile deleted file mode 100644 index 08a25ad6..00000000 --- a/gemfiles/active_model_3.2.13.rc1.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "activemodel", "3.2.13.rc1" - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_model_3.2.13.rc1.gemfile.lock b/gemfiles/active_model_3.2.13.rc1.gemfile.lock deleted file mode 100644 index 4c835eaf..00000000 --- a/gemfiles/active_model_3.2.13.rc1.gemfile.lock +++ /dev/null @@ -1,36 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.2.13.rc1) - activesupport (= 3.2.13.rc1) - builder (~> 3.0.0) - activesupport (3.2.13.rc1) - i18n (= 0.6.1) - multi_json (~> 1.0) - appraisal (0.5.1) - bundler - rake - builder (3.0.4) - i18n (0.6.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) - rake - simplecov - state_machine! diff --git a/gemfiles/active_model_4.0.0.gemfile b/gemfiles/active_model_4.0.0.gemfile deleted file mode 100644 index 13764b8a..00000000 --- a/gemfiles/active_model_4.0.0.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "activemodel", "4.0.0.beta", :git=>"git://github.com/rails/rails.git", :ref=>"4e286bf" -gem "rails-observers", "0.1.1" -gem "protected_attributes", "1.0.0" - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_model_4.0.0.gemfile.lock b/gemfiles/active_model_4.0.0.gemfile.lock deleted file mode 100644 index 3ea4fb56..00000000 --- a/gemfiles/active_model_4.0.0.gemfile.lock +++ /dev/null @@ -1,78 +0,0 @@ -GIT - remote: git://github.com/rails/rails.git - revision: 4e286bf1c62e24017867fdd04bda1129a645bec6 - ref: 4e286bf - specs: - actionpack (4.0.0.beta) - activesupport (= 4.0.0.beta) - builder (~> 3.1.0) - erubis (~> 2.7.0) - rack (~> 1.5.2) - rack-test (~> 0.6.2) - activemodel (4.0.0.beta) - activesupport (= 4.0.0.beta) - builder (~> 3.1.0) - activesupport (4.0.0.beta) - i18n (~> 0.6) - minitest (~> 4.2) - multi_json (~> 1.3) - thread_safe (~> 0.1) - tzinfo (~> 0.3.33) - railties (4.0.0.beta) - actionpack (= 4.0.0.beta) - activesupport (= 4.0.0.beta) - rake (>= 0.8.7) - rdoc (~> 3.4) - thor (>= 0.17.0, < 2.0) - -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - appraisal (0.5.1) - bundler - rake - atomic (1.0.1) - atomic (1.0.1-java) - builder (3.1.4) - erubis (2.7.0) - i18n (0.6.1) - json (1.7.7) - json (1.7.7-java) - minitest (4.6.1) - multi_json (1.6.1) - protected_attributes (1.0.0) - activemodel (>= 4.0.0.beta, < 5.0) - rack (1.5.2) - rack-test (0.6.2) - rack (>= 1.0) - rails-observers (0.1.1) - railties (~> 4.0.0.beta) - rake (10.0.3) - rdoc (3.12.2) - json (~> 1.4) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - thor (0.17.0) - thread_safe (0.1.0) - atomic - tzinfo (0.3.35) - -PLATFORMS - java - ruby - -DEPENDENCIES - activemodel (= 4.0.0.beta)! - appraisal (~> 0.5.0) - protected_attributes (= 1.0.0) - rails-observers (= 0.1.1) - rake - simplecov - state_machine! diff --git a/gemfiles/active_model_3.0.0.gemfile b/gemfiles/active_model_7.2.3.gemfile similarity index 61% rename from gemfiles/active_model_3.0.0.gemfile rename to gemfiles/active_model_7.2.3.gemfile index 3d6a07e2..16191653 100644 --- a/gemfiles/active_model_3.0.0.gemfile +++ b/gemfiles/active_model_7.2.3.gemfile @@ -2,6 +2,6 @@ source "http://www.rubygems.org" -gem "activemodel", "3.0.0" +gem "activemodel", "7.2.3" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/active_model_7.2.3.gemfile.lock b/gemfiles/active_model_7.2.3.gemfile.lock new file mode 100644 index 00000000..04be8bea --- /dev/null +++ b/gemfiles/active_model_7.2.3.gemfile.lock @@ -0,0 +1,68 @@ +PATH + remote: .. + specs: + state_machine (1.2.0) + +GEM + remote: http://www.rubygems.org/ + specs: + activemodel (7.2.3) + activesupport (= 7.2.3) + activesupport (7.2.3) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (4.1.2) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + docile (1.4.1) + drb (2.2.3) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + logger (1.7.0) + minitest (6.0.6) + drb (~> 2.0) + prism (~> 1.5) + power_assert (3.0.1) + prism (1.9.0) + rake (13.4.2) + securerandom (0.4.1) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.13.2) + simplecov_json_formatter (0.1.4) + test-unit (3.7.7) + power_assert + thor (1.5.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + activemodel (= 7.2.3) + appraisal (~> 2.5.0) + rake + simplecov + state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/active_model_3.1.1.gemfile b/gemfiles/active_model_8.0.5.gemfile similarity index 61% rename from gemfiles/active_model_3.1.1.gemfile rename to gemfiles/active_model_8.0.5.gemfile index c4acde05..9a1c462d 100644 --- a/gemfiles/active_model_3.1.1.gemfile +++ b/gemfiles/active_model_8.0.5.gemfile @@ -2,6 +2,6 @@ source "http://www.rubygems.org" -gem "activemodel", "3.1.1" +gem "activemodel", "8.0.5" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/active_model_8.0.5.gemfile.lock b/gemfiles/active_model_8.0.5.gemfile.lock new file mode 100644 index 00000000..75adca5a --- /dev/null +++ b/gemfiles/active_model_8.0.5.gemfile.lock @@ -0,0 +1,70 @@ +PATH + remote: .. + specs: + state_machine (1.2.0) + +GEM + remote: http://www.rubygems.org/ + specs: + activemodel (8.0.5) + activesupport (= 8.0.5) + activesupport (8.0.5) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (4.1.2) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + docile (1.4.1) + drb (2.2.3) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + logger (1.7.0) + minitest (6.0.6) + drb (~> 2.0) + prism (~> 1.5) + power_assert (3.0.1) + prism (1.9.0) + rake (13.4.2) + securerandom (0.4.1) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.13.2) + simplecov_json_formatter (0.1.4) + test-unit (3.7.7) + power_assert + thor (1.5.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + uri (1.1.1) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + activemodel (= 8.0.5) + appraisal (~> 2.5.0) + rake + simplecov + state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/active_model_3.0.5.gemfile b/gemfiles/active_model_8.1.3.gemfile similarity index 61% rename from gemfiles/active_model_3.0.5.gemfile rename to gemfiles/active_model_8.1.3.gemfile index 6fe3754d..02902604 100644 --- a/gemfiles/active_model_3.0.5.gemfile +++ b/gemfiles/active_model_8.1.3.gemfile @@ -2,6 +2,6 @@ source "http://www.rubygems.org" -gem "activemodel", "3.0.5" +gem "activemodel", "8.1.3" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/active_model_8.1.3.gemfile.lock b/gemfiles/active_model_8.1.3.gemfile.lock new file mode 100644 index 00000000..52e295aa --- /dev/null +++ b/gemfiles/active_model_8.1.3.gemfile.lock @@ -0,0 +1,70 @@ +PATH + remote: .. + specs: + state_machine (1.2.0) + +GEM + remote: http://www.rubygems.org/ + specs: + activemodel (8.1.3) + activesupport (= 8.1.3) + activesupport (8.1.3) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + json + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + base64 (0.3.0) + bigdecimal (4.1.2) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + docile (1.4.1) + drb (2.2.3) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + json (2.19.5) + logger (1.7.0) + minitest (6.0.6) + drb (~> 2.0) + prism (~> 1.5) + power_assert (3.0.1) + prism (1.9.0) + rake (13.4.2) + securerandom (0.4.1) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.13.2) + simplecov_json_formatter (0.1.4) + test-unit (3.7.7) + power_assert + thor (1.5.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + uri (1.1.1) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + activemodel (= 8.1.3) + appraisal (~> 2.5.0) + rake + simplecov + state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/active_record_2.0.0.gemfile b/gemfiles/active_record_2.0.0.gemfile deleted file mode 100644 index 1a1c11c3..00000000 --- a/gemfiles/active_record_2.0.0.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "2.0.0" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_2.0.0.gemfile.lock b/gemfiles/active_record_2.0.0.gemfile.lock deleted file mode 100644 index 1887d01b..00000000 --- a/gemfiles/active_record_2.0.0.gemfile.lock +++ /dev/null @@ -1,39 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activerecord (2.0.0) - activesupport (= 2.0.0) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (2.0.0) - appraisal (0.5.1) - bundler - rake - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3-ruby (1.3.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 2.0.0) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3-ruby (= 1.3.1) - state_machine! diff --git a/gemfiles/active_record_2.0.5.gemfile b/gemfiles/active_record_2.0.5.gemfile deleted file mode 100644 index 6e7da3d2..00000000 --- a/gemfiles/active_record_2.0.5.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "2.0.5" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_2.0.5.gemfile.lock b/gemfiles/active_record_2.0.5.gemfile.lock deleted file mode 100644 index 9c898651..00000000 --- a/gemfiles/active_record_2.0.5.gemfile.lock +++ /dev/null @@ -1,39 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activerecord (2.0.5) - activesupport (= 2.0.5) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (2.0.5) - appraisal (0.5.1) - bundler - rake - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3-ruby (1.3.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 2.0.5) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3-ruby (= 1.3.1) - state_machine! diff --git a/gemfiles/active_record_2.1.0.gemfile b/gemfiles/active_record_2.1.0.gemfile deleted file mode 100644 index ca48902f..00000000 --- a/gemfiles/active_record_2.1.0.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "2.1.0" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_2.1.0.gemfile.lock b/gemfiles/active_record_2.1.0.gemfile.lock deleted file mode 100644 index dc1af544..00000000 --- a/gemfiles/active_record_2.1.0.gemfile.lock +++ /dev/null @@ -1,39 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activerecord (2.1.0) - activesupport (= 2.1.0) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (2.1.0) - appraisal (0.5.1) - bundler - rake - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3-ruby (1.3.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 2.1.0) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3-ruby (= 1.3.1) - state_machine! diff --git a/gemfiles/active_record_2.1.2.gemfile b/gemfiles/active_record_2.1.2.gemfile deleted file mode 100644 index a53923fb..00000000 --- a/gemfiles/active_record_2.1.2.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "2.1.2" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_2.1.2.gemfile.lock b/gemfiles/active_record_2.1.2.gemfile.lock deleted file mode 100644 index 93487c71..00000000 --- a/gemfiles/active_record_2.1.2.gemfile.lock +++ /dev/null @@ -1,39 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activerecord (2.1.2) - activesupport (= 2.1.2) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (2.1.2) - appraisal (0.5.1) - bundler - rake - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3-ruby (1.3.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 2.1.2) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3-ruby (= 1.3.1) - state_machine! diff --git a/gemfiles/active_record_2.2.3.gemfile b/gemfiles/active_record_2.2.3.gemfile deleted file mode 100644 index 3dc9baf7..00000000 --- a/gemfiles/active_record_2.2.3.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "2.2.3" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_2.2.3.gemfile.lock b/gemfiles/active_record_2.2.3.gemfile.lock deleted file mode 100644 index 200526f4..00000000 --- a/gemfiles/active_record_2.2.3.gemfile.lock +++ /dev/null @@ -1,39 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activerecord (2.2.3) - activesupport (= 2.2.3) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (2.2.3) - appraisal (0.5.1) - bundler - rake - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3-ruby (1.3.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 2.2.3) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3-ruby (= 1.3.1) - state_machine! diff --git a/gemfiles/active_record_2.3.12.gemfile b/gemfiles/active_record_2.3.12.gemfile deleted file mode 100644 index 2db1c6f9..00000000 --- a/gemfiles/active_record_2.3.12.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "2.3.12" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_2.3.12.gemfile.lock b/gemfiles/active_record_2.3.12.gemfile.lock deleted file mode 100644 index 5e0a356d..00000000 --- a/gemfiles/active_record_2.3.12.gemfile.lock +++ /dev/null @@ -1,39 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activerecord (2.3.12) - activesupport (= 2.3.12) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (2.3.12) - appraisal (0.5.1) - bundler - rake - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3-ruby (1.3.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 2.3.12) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3-ruby (= 1.3.1) - state_machine! diff --git a/gemfiles/active_record_2.3.5.gemfile b/gemfiles/active_record_2.3.5.gemfile deleted file mode 100644 index de9494ff..00000000 --- a/gemfiles/active_record_2.3.5.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "2.3.5" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_2.3.5.gemfile.lock b/gemfiles/active_record_2.3.5.gemfile.lock deleted file mode 100644 index 2feb0cb4..00000000 --- a/gemfiles/active_record_2.3.5.gemfile.lock +++ /dev/null @@ -1,39 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activerecord (2.3.5) - activesupport (= 2.3.5) - activerecord-jdbc-adapter (1.2.8) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (2.3.5) - appraisal (0.5.1) - bundler - rake - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3-ruby (1.3.1) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 2.3.5) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3-ruby (= 1.3.1) - state_machine! diff --git a/gemfiles/active_record_3.0.0.gemfile b/gemfiles/active_record_3.0.0.gemfile deleted file mode 100644 index e17af4ea..00000000 --- a/gemfiles/active_record_3.0.0.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "3.0.0" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_3.0.0.gemfile.lock b/gemfiles/active_record_3.0.0.gemfile.lock deleted file mode 100644 index 83997e04..00000000 --- a/gemfiles/active_record_3.0.0.gemfile.lock +++ /dev/null @@ -1,51 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.0.0) - activesupport (= 3.0.0) - builder (~> 2.1.2) - i18n (~> 0.4.1) - activerecord (3.0.0) - activemodel (= 3.0.0) - activesupport (= 3.0.0) - arel (~> 1.0.0) - tzinfo (~> 0.3.23) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (3.0.0) - appraisal (0.5.1) - bundler - rake - arel (1.0.1) - activesupport (~> 3.0.0) - builder (2.1.2) - i18n (0.4.2) - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3-ruby (1.3.1) - tzinfo (0.3.35) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 3.0.0) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3-ruby (= 1.3.1) - state_machine! diff --git a/gemfiles/active_record_3.0.5.gemfile b/gemfiles/active_record_3.0.5.gemfile deleted file mode 100644 index 11c80152..00000000 --- a/gemfiles/active_record_3.0.5.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "3.0.5" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_3.0.5.gemfile.lock b/gemfiles/active_record_3.0.5.gemfile.lock deleted file mode 100644 index 75b43e56..00000000 --- a/gemfiles/active_record_3.0.5.gemfile.lock +++ /dev/null @@ -1,50 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.0.5) - activesupport (= 3.0.5) - builder (~> 2.1.2) - i18n (~> 0.4) - activerecord (3.0.5) - activemodel (= 3.0.5) - activesupport (= 3.0.5) - arel (~> 2.0.2) - tzinfo (~> 0.3.23) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (3.0.5) - appraisal (0.5.1) - bundler - rake - arel (2.0.10) - builder (2.1.2) - i18n (0.6.1) - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3-ruby (1.3.1) - tzinfo (0.3.35) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 3.0.5) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3-ruby (= 1.3.1) - state_machine! diff --git a/gemfiles/active_record_3.1.1.gemfile b/gemfiles/active_record_3.1.1.gemfile deleted file mode 100644 index dcc33d0c..00000000 --- a/gemfiles/active_record_3.1.1.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3", "1.3.6", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "3.1.1" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_3.1.1.gemfile.lock b/gemfiles/active_record_3.1.1.gemfile.lock deleted file mode 100644 index 658340ff..00000000 --- a/gemfiles/active_record_3.1.1.gemfile.lock +++ /dev/null @@ -1,51 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.1.1) - activesupport (= 3.1.1) - builder (~> 3.0.0) - i18n (~> 0.6) - activerecord (3.1.1) - activemodel (= 3.1.1) - activesupport (= 3.1.1) - arel (~> 2.2.1) - tzinfo (~> 0.3.29) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (3.1.1) - multi_json (~> 1.0) - appraisal (0.5.1) - bundler - rake - arel (2.2.3) - builder (3.0.4) - i18n (0.6.1) - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3 (1.3.6) - tzinfo (0.3.35) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 3.1.1) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3 (= 1.3.6) - state_machine! diff --git a/gemfiles/active_record_3.2.12.gemfile b/gemfiles/active_record_3.2.12.gemfile deleted file mode 100644 index cd69ecad..00000000 --- a/gemfiles/active_record_3.2.12.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3", "1.3.6", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "3.2.12" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_3.2.12.gemfile.lock b/gemfiles/active_record_3.2.12.gemfile.lock deleted file mode 100644 index 8b0d050f..00000000 --- a/gemfiles/active_record_3.2.12.gemfile.lock +++ /dev/null @@ -1,51 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.2.12) - activesupport (= 3.2.12) - builder (~> 3.0.0) - activerecord (3.2.12) - activemodel (= 3.2.12) - activesupport (= 3.2.12) - arel (~> 3.0.2) - tzinfo (~> 0.3.29) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (3.2.12) - i18n (~> 0.6) - multi_json (~> 1.0) - appraisal (0.5.1) - bundler - rake - arel (3.0.2) - builder (3.0.4) - i18n (0.6.1) - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3 (1.3.6) - tzinfo (0.3.35) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 3.2.12) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3 (= 1.3.6) - state_machine! diff --git a/gemfiles/active_record_3.2.13.rc1.gemfile b/gemfiles/active_record_3.2.13.rc1.gemfile deleted file mode 100644 index 573171b2..00000000 --- a/gemfiles/active_record_3.2.13.rc1.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3", "1.3.6", :platform=>[:ruby, :mswin, :mingw] -gem "activerecord", "3.2.13.rc1" -gem "activerecord-jdbcsqlite3-adapter", "1.2.7", :platform=>:jruby - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_3.2.13.rc1.gemfile.lock b/gemfiles/active_record_3.2.13.rc1.gemfile.lock deleted file mode 100644 index 0ecfea21..00000000 --- a/gemfiles/active_record_3.2.13.rc1.gemfile.lock +++ /dev/null @@ -1,51 +0,0 @@ -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activemodel (3.2.13.rc1) - activesupport (= 3.2.13.rc1) - builder (~> 3.0.0) - activerecord (3.2.13.rc1) - activemodel (= 3.2.13.rc1) - activesupport (= 3.2.13.rc1) - arel (~> 3.0.2) - tzinfo (~> 0.3.29) - activerecord-jdbc-adapter (1.2.7) - activerecord-jdbcsqlite3-adapter (1.2.7) - activerecord-jdbc-adapter (~> 1.2.7) - jdbc-sqlite3 (~> 3.7.2) - activesupport (3.2.13.rc1) - i18n (= 0.6.1) - multi_json (~> 1.0) - appraisal (0.5.1) - bundler - rake - arel (3.0.2) - builder (3.0.4) - i18n (0.6.1) - jdbc-sqlite3 (3.7.2.1) - multi_json (1.6.1) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3 (1.3.6) - tzinfo (0.3.35) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 3.2.13.rc1) - activerecord-jdbcsqlite3-adapter (= 1.2.7) - appraisal (~> 0.5.0) - rake - simplecov - sqlite3 (= 1.3.6) - state_machine! diff --git a/gemfiles/active_record_4.0.0.gemfile b/gemfiles/active_record_4.0.0.gemfile deleted file mode 100644 index 94e6f710..00000000 --- a/gemfiles/active_record_4.0.0.gemfile +++ /dev/null @@ -1,11 +0,0 @@ -# This file was generated by Appraisal - -source "http://www.rubygems.org" - -gem "sqlite3", "1.3.6" -gem "activerecord", "4.0.0.beta1", :git=>"git://github.com/rails/rails.git", :ref=>"92d6dac" -gem "activerecord-deprecated_finders", "0.0.3" -gem "protected_attributes", "1.0.0" -gem "rails-observers", "0.1.1" - -gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/active_record_4.0.0.gemfile.lock b/gemfiles/active_record_4.0.0.gemfile.lock deleted file mode 100644 index b0970b70..00000000 --- a/gemfiles/active_record_4.0.0.gemfile.lock +++ /dev/null @@ -1,83 +0,0 @@ -GIT - remote: git://github.com/rails/rails.git - revision: 92d6dacc348a4e42d314c813a650ac578976d4c4 - ref: 92d6dac - specs: - actionpack (4.0.0.beta1) - activesupport (= 4.0.0.beta1) - builder (~> 3.1.0) - erubis (~> 2.7.0) - rack (~> 1.5.2) - rack-test (~> 0.6.2) - activemodel (4.0.0.beta1) - activesupport (= 4.0.0.beta1) - builder (~> 3.1.0) - activerecord (4.0.0.beta1) - activemodel (= 4.0.0.beta1) - activerecord-deprecated_finders (~> 0.0.3) - activesupport (= 4.0.0.beta1) - arel (~> 4.0.0.beta2) - activesupport (4.0.0.beta1) - i18n (~> 0.6, >= 0.6.4) - minitest (~> 4.2) - multi_json (~> 1.3) - thread_safe (~> 0.1) - tzinfo (~> 0.3.37) - railties (4.0.0.beta1) - actionpack (= 4.0.0.beta1) - activesupport (= 4.0.0.beta1) - rake (>= 0.8.7) - thor (>= 0.17.0, < 2.0) - -PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine - specs: - state_machine (1.2.0) - -GEM - remote: http://www.rubygems.org/ - specs: - activerecord-deprecated_finders (0.0.3) - appraisal (0.5.1) - bundler - rake - arel (4.0.0.beta2) - atomic (1.0.2) - atomic (1.0.2-java) - builder (3.1.4) - erubis (2.7.0) - i18n (0.6.4) - minitest (4.7.0) - multi_json (1.6.1) - protected_attributes (1.0.0) - activemodel (>= 4.0.0.beta, < 5.0) - rack (1.5.2) - rack-test (0.6.2) - rack (>= 1.0) - rails-observers (0.1.1) - railties (~> 4.0.0.beta) - rake (10.0.3) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sqlite3 (1.3.6) - thor (0.18.0) - thread_safe (0.1.0) - atomic - tzinfo (0.3.37) - -PLATFORMS - java - ruby - -DEPENDENCIES - activerecord (= 4.0.0.beta1)! - activerecord-deprecated_finders (= 0.0.3) - appraisal (~> 0.5.0) - protected_attributes (= 1.0.0) - rails-observers (= 0.1.1) - rake - simplecov - sqlite3 (= 1.3.6) - state_machine! diff --git a/gemfiles/active_model_3.2.1.gemfile b/gemfiles/active_record_7.2.3.gemfile similarity index 51% rename from gemfiles/active_model_3.2.1.gemfile rename to gemfiles/active_record_7.2.3.gemfile index 0ff92bec..685073e9 100644 --- a/gemfiles/active_model_3.2.1.gemfile +++ b/gemfiles/active_record_7.2.3.gemfile @@ -2,6 +2,7 @@ source "http://www.rubygems.org" -gem "activemodel", "3.2.1" +gem "sqlite3", "2.9.4" +gem "activerecord", "7.2.3" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/active_record_7.2.3.gemfile.lock b/gemfiles/active_record_7.2.3.gemfile.lock new file mode 100644 index 00000000..92368d28 --- /dev/null +++ b/gemfiles/active_record_7.2.3.gemfile.lock @@ -0,0 +1,75 @@ +PATH + remote: .. + specs: + state_machine (1.2.0) + +GEM + remote: http://www.rubygems.org/ + specs: + activemodel (7.2.3) + activesupport (= 7.2.3) + activerecord (7.2.3) + activemodel (= 7.2.3) + activesupport (= 7.2.3) + timeout (>= 0.4.0) + activesupport (7.2.3) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (4.1.2) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + docile (1.4.1) + drb (2.2.3) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + logger (1.7.0) + minitest (6.0.6) + drb (~> 2.0) + prism (~> 1.5) + power_assert (2.0.5) + prism (1.9.0) + rake (13.4.2) + securerandom (0.4.1) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.13.2) + simplecov_json_formatter (0.1.4) + sqlite3 (2.9.4-x86_64-linux-gnu) + test-unit (3.7.0) + power_assert + thor (1.5.0) + timeout (0.6.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + +PLATFORMS + x86_64-linux-gnu + +DEPENDENCIES + activerecord (= 7.2.3) + appraisal (~> 2.5.0) + rake + simplecov + sqlite3 (= 2.9.4) + state_machine! + test-unit + +BUNDLED WITH + 2.5.22 diff --git a/gemfiles/active_record_8.0.5.gemfile b/gemfiles/active_record_8.0.5.gemfile new file mode 100644 index 00000000..bc1317af --- /dev/null +++ b/gemfiles/active_record_8.0.5.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "http://www.rubygems.org" + +gem "sqlite3", "2.9.4" +gem "activerecord", "8.0.5" + +gemspec path: "../" diff --git a/gemfiles/active_record_8.0.5.gemfile.lock b/gemfiles/active_record_8.0.5.gemfile.lock new file mode 100644 index 00000000..45f260d5 --- /dev/null +++ b/gemfiles/active_record_8.0.5.gemfile.lock @@ -0,0 +1,95 @@ +PATH + remote: .. + specs: + state_machine (1.2.0) + +GEM + remote: http://www.rubygems.org/ + specs: + activemodel (8.0.5) + activesupport (= 8.0.5) + activerecord (8.0.5) + activemodel (= 8.0.5) + activesupport (= 8.0.5) + timeout (>= 0.4.0) + activesupport (8.0.5) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (4.1.2) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + docile (1.4.1) + drb (2.2.3) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + logger (1.7.0) + minitest (6.0.6) + drb (~> 2.0) + prism (~> 1.5) + power_assert (3.0.1) + prism (1.9.0) + rake (13.4.2) + securerandom (0.4.1) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.13.2) + simplecov_json_formatter (0.1.4) + sqlite3 (2.9.4-aarch64-linux-gnu) + sqlite3 (2.9.4-aarch64-linux-musl) + sqlite3 (2.9.4-arm-linux-gnu) + sqlite3 (2.9.4-arm-linux-musl) + sqlite3 (2.9.4-arm64-darwin) + sqlite3 (2.9.4-x86-linux-gnu) + sqlite3 (2.9.4-x86-linux-musl) + sqlite3 (2.9.4-x86_64-darwin) + sqlite3 (2.9.4-x86_64-linux-gnu) + sqlite3 (2.9.4-x86_64-linux-musl) + test-unit (3.7.7) + power_assert + thor (1.5.0) + timeout (0.6.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + uri (1.1.1) + +PLATFORMS + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + activerecord (= 8.0.5) + appraisal (~> 2.5.0) + rake + simplecov + sqlite3 (= 2.9.4) + state_machine! + test-unit + +BUNDLED WITH + 2.5.22 diff --git a/gemfiles/active_record_8.1.3.gemfile b/gemfiles/active_record_8.1.3.gemfile new file mode 100644 index 00000000..cbf6bb80 --- /dev/null +++ b/gemfiles/active_record_8.1.3.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "http://www.rubygems.org" + +gem "sqlite3", "2.9.4" +gem "activerecord", "8.1.3" + +gemspec path: "../" diff --git a/gemfiles/active_record_8.1.3.gemfile.lock b/gemfiles/active_record_8.1.3.gemfile.lock new file mode 100644 index 00000000..89f9c2f7 --- /dev/null +++ b/gemfiles/active_record_8.1.3.gemfile.lock @@ -0,0 +1,96 @@ +PATH + remote: .. + specs: + state_machine (1.2.0) + +GEM + remote: http://www.rubygems.org/ + specs: + activemodel (8.1.3) + activesupport (= 8.1.3) + activerecord (8.1.3) + activemodel (= 8.1.3) + activesupport (= 8.1.3) + timeout (>= 0.4.0) + activesupport (8.1.3) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + json + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + base64 (0.3.0) + bigdecimal (4.1.2) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + docile (1.4.1) + drb (2.2.3) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + json (2.19.5) + logger (1.7.0) + minitest (6.0.6) + drb (~> 2.0) + prism (~> 1.5) + power_assert (3.0.1) + prism (1.9.0) + rake (13.4.2) + securerandom (0.4.1) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.13.2) + simplecov_json_formatter (0.1.4) + sqlite3 (2.9.4-aarch64-linux-gnu) + sqlite3 (2.9.4-aarch64-linux-musl) + sqlite3 (2.9.4-arm-linux-gnu) + sqlite3 (2.9.4-arm-linux-musl) + sqlite3 (2.9.4-arm64-darwin) + sqlite3 (2.9.4-x86-linux-gnu) + sqlite3 (2.9.4-x86-linux-musl) + sqlite3 (2.9.4-x86_64-darwin) + sqlite3 (2.9.4-x86_64-linux-gnu) + sqlite3 (2.9.4-x86_64-linux-musl) + test-unit (3.7.7) + power_assert + thor (1.5.0) + timeout (0.6.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + uri (1.1.1) + +PLATFORMS + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + activerecord (= 8.1.3) + appraisal (~> 2.5.0) + minitest + rake + simplecov + sqlite3 (= 2.9.4) + state_machine! + test-unit + +BUNDLED WITH + 2.5.22 diff --git a/gemfiles/data_mapper_1.0.0.gemfile b/gemfiles/data_mapper_1.0.0.gemfile index ccbbeee8..ca11cba8 100644 --- a/gemfiles/data_mapper_1.0.0.gemfile +++ b/gemfiles/data_mapper_1.0.0.gemfile @@ -9,4 +9,4 @@ gem "dm-observer", "1.0.0" gem "dm-transactions", "1.0.0" gem "dm-sqlite-adapter", "1.0.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/data_mapper_1.0.1.gemfile b/gemfiles/data_mapper_1.0.1.gemfile index 5c2b523a..6a464421 100644 --- a/gemfiles/data_mapper_1.0.1.gemfile +++ b/gemfiles/data_mapper_1.0.1.gemfile @@ -9,4 +9,4 @@ gem "dm-observer", "1.0.1" gem "dm-transactions", "1.0.1" gem "dm-sqlite-adapter", "1.0.1" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/data_mapper_1.0.2.gemfile b/gemfiles/data_mapper_1.0.2.gemfile index ab2ec80b..a8ae5568 100644 --- a/gemfiles/data_mapper_1.0.2.gemfile +++ b/gemfiles/data_mapper_1.0.2.gemfile @@ -9,4 +9,4 @@ gem "dm-observer", "1.0.2" gem "dm-transactions", "1.0.2" gem "dm-sqlite-adapter", "1.0.2" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/data_mapper_1.1.0.gemfile b/gemfiles/data_mapper_1.1.0.gemfile index 36dfcdeb..c6fac0ba 100644 --- a/gemfiles/data_mapper_1.1.0.gemfile +++ b/gemfiles/data_mapper_1.1.0.gemfile @@ -9,4 +9,4 @@ gem "dm-observer", "1.1.0" gem "dm-transactions", "1.1.0" gem "dm-sqlite-adapter", "1.1.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/data_mapper_1.2.0.gemfile b/gemfiles/data_mapper_1.2.0.gemfile index 303b98c2..e0abba52 100644 --- a/gemfiles/data_mapper_1.2.0.gemfile +++ b/gemfiles/data_mapper_1.2.0.gemfile @@ -9,4 +9,4 @@ gem "dm-observer", "1.2.0" gem "dm-transactions", "1.2.0" gem "dm-sqlite-adapter", "1.2.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/default.gemfile b/gemfiles/default.gemfile index 7ab3e327..392ff692 100644 --- a/gemfiles/default.gemfile +++ b/gemfiles/default.gemfile @@ -2,6 +2,4 @@ source "http://www.rubygems.org" - - -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/default.gemfile.lock b/gemfiles/default.gemfile.lock index 19e60d2d..4ab6e938 100644 --- a/gemfiles/default.gemfile.lock +++ b/gemfiles/default.gemfile.lock @@ -6,9 +6,10 @@ PATH GEM remote: http://www.rubygems.org/ specs: - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) multi_json (1.0.4) power_assert (2.0.3) rake (0.9.2.2) @@ -18,13 +19,14 @@ GEM simplecov-html (0.5.3) test-unit (3.5.7) power_assert + thor (1.5.0) PLATFORMS java ruby DEPENDENCIES - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) rake simplecov state_machine! diff --git a/gemfiles/graphviz_0.9.17.gemfile b/gemfiles/graphviz_0.9.17.gemfile index d934d1c9..43b3fb4a 100644 --- a/gemfiles/graphviz_0.9.17.gemfile +++ b/gemfiles/graphviz_0.9.17.gemfile @@ -4,4 +4,4 @@ source "http://www.rubygems.org" gem "ruby-graphviz", "0.9.17" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/graphviz_0.9.17.gemfile.lock b/gemfiles/graphviz_0.9.17.gemfile.lock index dbe312a5..de09585c 100644 --- a/gemfiles/graphviz_0.9.17.gemfile.lock +++ b/gemfiles/graphviz_0.9.17.gemfile.lock @@ -1,29 +1,38 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) GEM remote: http://www.rubygems.org/ specs: - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) multi_json (1.6.1) + power_assert (3.0.1) rake (10.0.3) ruby-graphviz (0.9.17) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) PLATFORMS java ruby DEPENDENCIES - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) rake ruby-graphviz (= 0.9.17) simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/graphviz_0.9.21.gemfile b/gemfiles/graphviz_0.9.21.gemfile index 6a3022a1..a00b27e9 100644 --- a/gemfiles/graphviz_0.9.21.gemfile +++ b/gemfiles/graphviz_0.9.21.gemfile @@ -4,4 +4,4 @@ source "http://www.rubygems.org" gem "ruby-graphviz", "0.9.21" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/graphviz_0.9.21.gemfile.lock b/gemfiles/graphviz_0.9.21.gemfile.lock index 69402ac7..74f9179a 100644 --- a/gemfiles/graphviz_0.9.21.gemfile.lock +++ b/gemfiles/graphviz_0.9.21.gemfile.lock @@ -1,29 +1,38 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) GEM remote: http://www.rubygems.org/ specs: - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) multi_json (1.0.4) + power_assert (3.0.1) rake (0.9.2.2) ruby-graphviz (0.9.21) simplecov (0.5.4) multi_json (~> 1.0.3) simplecov-html (~> 0.5.3) simplecov-html (0.5.3) + test-unit (3.7.7) + power_assert + thor (1.5.0) PLATFORMS java ruby DEPENDENCIES - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) rake ruby-graphviz (= 0.9.21) simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/graphviz_1.0.0.gemfile b/gemfiles/graphviz_1.0.0.gemfile index 300b8737..95a0c8d4 100644 --- a/gemfiles/graphviz_1.0.0.gemfile +++ b/gemfiles/graphviz_1.0.0.gemfile @@ -4,4 +4,4 @@ source "http://www.rubygems.org" gem "ruby-graphviz", "1.0.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/graphviz_1.0.0.gemfile.lock b/gemfiles/graphviz_1.0.0.gemfile.lock index c8a39b7f..14418816 100644 --- a/gemfiles/graphviz_1.0.0.gemfile.lock +++ b/gemfiles/graphviz_1.0.0.gemfile.lock @@ -1,29 +1,38 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) GEM remote: http://www.rubygems.org/ specs: - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) multi_json (1.0.4) + power_assert (3.0.1) rake (0.9.2.2) ruby-graphviz (1.0.0) simplecov (0.5.4) multi_json (~> 1.0.3) simplecov-html (~> 0.5.3) simplecov-html (0.5.3) + test-unit (3.7.7) + power_assert + thor (1.5.0) PLATFORMS java ruby DEPENDENCIES - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) rake ruby-graphviz (= 1.0.0) simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/graphviz_1.0.3.gemfile b/gemfiles/graphviz_1.0.3.gemfile index 41da8714..79a42d09 100644 --- a/gemfiles/graphviz_1.0.3.gemfile +++ b/gemfiles/graphviz_1.0.3.gemfile @@ -4,4 +4,4 @@ source "http://www.rubygems.org" gem "ruby-graphviz", "1.0.3" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/graphviz_1.0.3.gemfile.lock b/gemfiles/graphviz_1.0.3.gemfile.lock index 10b8741c..ef1f2558 100644 --- a/gemfiles/graphviz_1.0.3.gemfile.lock +++ b/gemfiles/graphviz_1.0.3.gemfile.lock @@ -1,29 +1,38 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) GEM remote: http://www.rubygems.org/ specs: - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) multi_json (1.6.1) + power_assert (3.0.1) rake (10.0.3) ruby-graphviz (1.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) PLATFORMS java ruby DEPENDENCIES - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) rake ruby-graphviz (= 1.0.3) simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/graphviz_1.0.8.gemfile b/gemfiles/graphviz_1.0.8.gemfile index 6a7230ab..cc3e4e2d 100644 --- a/gemfiles/graphviz_1.0.8.gemfile +++ b/gemfiles/graphviz_1.0.8.gemfile @@ -4,4 +4,4 @@ source "http://www.rubygems.org" gem "ruby-graphviz", "1.0.8" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/graphviz_1.0.8.gemfile.lock b/gemfiles/graphviz_1.0.8.gemfile.lock index 6cd84547..1ace4460 100644 --- a/gemfiles/graphviz_1.0.8.gemfile.lock +++ b/gemfiles/graphviz_1.0.8.gemfile.lock @@ -1,29 +1,38 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) GEM remote: http://www.rubygems.org/ specs: - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) multi_json (1.6.1) + power_assert (3.0.1) rake (10.0.3) ruby-graphviz (1.0.8) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) PLATFORMS java ruby DEPENDENCIES - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) rake ruby-graphviz (= 1.0.8) simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongo_mapper_0.10.0.gemfile b/gemfiles/mongo_mapper_0.10.0.gemfile index 32244561..5586fe01 100644 --- a/gemfiles/mongo_mapper_0.10.0.gemfile +++ b/gemfiles/mongo_mapper_0.10.0.gemfile @@ -5,4 +5,4 @@ source "http://www.rubygems.org" gem "activemodel", "3.2.13.rc1" gem "mongo_mapper", "0.10.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongo_mapper_0.10.0.gemfile.lock b/gemfiles/mongo_mapper_0.10.0.gemfile.lock index 5f01f5c9..d60b54a6 100644 --- a/gemfiles/mongo_mapper_0.10.0.gemfile.lock +++ b/gemfiles/mongo_mapper_0.10.0.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) bson (1.4.0) bson (1.4.0-java) builder (3.0.4) @@ -28,11 +29,15 @@ GEM multi_json (1.0.4) plucky (0.3.8) mongo (~> 1.3) + power_assert (3.0.1) rake (0.9.2.2) simplecov (0.5.4) multi_json (~> 1.0.3) simplecov-html (~> 0.5.3) simplecov-html (0.5.3) + test-unit (3.7.7) + power_assert + thor (1.5.0) PLATFORMS java @@ -40,8 +45,12 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongo_mapper (= 0.10.0) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongo_mapper_0.11.2.gemfile b/gemfiles/mongo_mapper_0.11.2.gemfile index 2f6b4caf..75903bbb 100644 --- a/gemfiles/mongo_mapper_0.11.2.gemfile +++ b/gemfiles/mongo_mapper_0.11.2.gemfile @@ -6,4 +6,4 @@ gem "activemodel", "3.2.13.rc1" gem "mongo", "~> 1.7.0" gem "mongo_mapper", "0.11.2" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongo_mapper_0.11.2.gemfile.lock b/gemfiles/mongo_mapper_0.11.2.gemfile.lock index 928c96f5..b894161d 100644 --- a/gemfiles/mongo_mapper_0.11.2.gemfile.lock +++ b/gemfiles/mongo_mapper_0.11.2.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) bson (1.7.1) bson (1.7.1-java) builder (3.0.4) @@ -28,11 +29,15 @@ GEM multi_json (1.6.1) plucky (0.5.2) mongo (~> 1.5) + power_assert (3.0.1) rake (10.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) PLATFORMS java @@ -40,9 +45,13 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongo (~> 1.7.0) mongo_mapper (= 0.11.2) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongo_mapper_0.12.0.gemfile b/gemfiles/mongo_mapper_0.12.0.gemfile index c587ebdc..89505709 100644 --- a/gemfiles/mongo_mapper_0.12.0.gemfile +++ b/gemfiles/mongo_mapper_0.12.0.gemfile @@ -6,4 +6,4 @@ gem "activemodel", "3.2.13.rc1" gem "mongo", "~> 1.7.0" gem "mongo_mapper", "0.12.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongo_mapper_0.12.0.gemfile.lock b/gemfiles/mongo_mapper_0.12.0.gemfile.lock index ac7aab92..ff9bc8ec 100644 --- a/gemfiles/mongo_mapper_0.12.0.gemfile.lock +++ b/gemfiles/mongo_mapper_0.12.0.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) bson (1.7.1) bson (1.7.1-java) builder (3.0.4) @@ -28,11 +29,15 @@ GEM multi_json (1.6.1) plucky (0.5.2) mongo (~> 1.5) + power_assert (3.0.1) rake (10.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) PLATFORMS java @@ -40,9 +45,13 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongo (~> 1.7.0) mongo_mapper (= 0.12.0) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongoid_2.4.0.gemfile b/gemfiles/mongoid_2.4.0.gemfile index 57338391..2df7f1c7 100644 --- a/gemfiles/mongoid_2.4.0.gemfile +++ b/gemfiles/mongoid_2.4.0.gemfile @@ -6,4 +6,4 @@ gem "activemodel", "3.2.13.rc1" gem "mongo", "~> 1.7.0" gem "mongoid", "2.4.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongoid_2.4.0.gemfile.lock b/gemfiles/mongoid_2.4.0.gemfile.lock index 9a22e39c..b2dd0f8b 100644 --- a/gemfiles/mongoid_2.4.0.gemfile.lock +++ b/gemfiles/mongoid_2.4.0.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) bson (1.7.1) bson (1.7.1-java) builder (3.0.4) @@ -26,11 +27,15 @@ GEM mongo (~> 1.3) tzinfo (~> 0.3.22) multi_json (1.6.1) + power_assert (3.0.1) rake (10.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) tzinfo (0.3.35) PLATFORMS @@ -39,9 +44,13 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongo (~> 1.7.0) mongoid (= 2.4.0) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongoid_2.4.10.gemfile b/gemfiles/mongoid_2.4.10.gemfile index 9816f1d2..61a85dd3 100644 --- a/gemfiles/mongoid_2.4.10.gemfile +++ b/gemfiles/mongoid_2.4.10.gemfile @@ -6,4 +6,4 @@ gem "activemodel", "3.2.13.rc1" gem "mongo", "~> 1.7.0" gem "mongoid", "2.4.10" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongoid_2.4.10.gemfile.lock b/gemfiles/mongoid_2.4.10.gemfile.lock index 3309ad9b..81ed29a6 100644 --- a/gemfiles/mongoid_2.4.10.gemfile.lock +++ b/gemfiles/mongoid_2.4.10.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) bson (1.7.1) bson (1.7.1-java) builder (3.0.4) @@ -26,11 +27,15 @@ GEM mongo (~> 1.3) tzinfo (~> 0.3.22) multi_json (1.6.1) + power_assert (3.0.1) rake (10.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) tzinfo (0.3.35) PLATFORMS @@ -39,9 +44,13 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongo (~> 1.7.0) mongoid (= 2.4.10) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongoid_2.5.2.gemfile b/gemfiles/mongoid_2.5.2.gemfile index f5ebe54e..74830963 100644 --- a/gemfiles/mongoid_2.5.2.gemfile +++ b/gemfiles/mongoid_2.5.2.gemfile @@ -6,4 +6,4 @@ gem "activemodel", "3.2.13.rc1" gem "mongo", "~> 1.7.0" gem "mongoid", "2.5.2" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongoid_2.5.2.gemfile.lock b/gemfiles/mongoid_2.5.2.gemfile.lock index 037c6f70..243699eb 100644 --- a/gemfiles/mongoid_2.5.2.gemfile.lock +++ b/gemfiles/mongoid_2.5.2.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) bson (1.7.1) bson (1.7.1-java) builder (3.0.4) @@ -26,11 +27,15 @@ GEM mongo (~> 1.7) tzinfo (~> 0.3.22) multi_json (1.6.1) + power_assert (3.0.1) rake (10.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) tzinfo (0.3.35) PLATFORMS @@ -39,9 +44,13 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongo (~> 1.7.0) mongoid (= 2.5.2) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongoid_2.6.0.gemfile b/gemfiles/mongoid_2.6.0.gemfile index 5f90552f..7cca3b20 100644 --- a/gemfiles/mongoid_2.6.0.gemfile +++ b/gemfiles/mongoid_2.6.0.gemfile @@ -6,4 +6,4 @@ gem "activemodel", "3.2.13.rc1" gem "mongo", "~> 1.7.0" gem "mongoid", "2.6.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongoid_2.6.0.gemfile.lock b/gemfiles/mongoid_2.6.0.gemfile.lock index 99f27b0a..db833392 100644 --- a/gemfiles/mongoid_2.6.0.gemfile.lock +++ b/gemfiles/mongoid_2.6.0.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) bson (1.7.1) bson (1.7.1-java) builder (3.0.4) @@ -26,11 +27,15 @@ GEM mongo (~> 1.7) tzinfo (~> 0.3.22) multi_json (1.6.1) + power_assert (3.0.1) rake (10.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) tzinfo (0.3.35) PLATFORMS @@ -39,9 +44,13 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongo (~> 1.7.0) mongoid (= 2.6.0) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongoid_3.0.0.gemfile b/gemfiles/mongoid_3.0.0.gemfile index 906a564a..c2c225d4 100644 --- a/gemfiles/mongoid_3.0.0.gemfile +++ b/gemfiles/mongoid_3.0.0.gemfile @@ -5,4 +5,4 @@ source "http://www.rubygems.org" gem "activemodel", "3.2.13.rc1" gem "mongoid", "3.0.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongoid_3.0.0.gemfile.lock b/gemfiles/mongoid_3.0.0.gemfile.lock index f3d245fe..bd290ef3 100644 --- a/gemfiles/mongoid_3.0.0.gemfile.lock +++ b/gemfiles/mongoid_3.0.0.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) builder (3.0.4) i18n (0.6.1) mongoid (3.0.0) @@ -25,11 +26,15 @@ GEM moped (1.1.6) multi_json (1.6.1) origin (1.0.11) + power_assert (3.0.1) rake (10.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) tzinfo (0.3.35) PLATFORMS @@ -38,8 +43,12 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongoid (= 3.0.0) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongoid_3.0.22.gemfile b/gemfiles/mongoid_3.0.22.gemfile index fc40c1f8..dd8306ea 100644 --- a/gemfiles/mongoid_3.0.22.gemfile +++ b/gemfiles/mongoid_3.0.22.gemfile @@ -5,4 +5,4 @@ source "http://www.rubygems.org" gem "activemodel", "3.2.13.rc1" gem "mongoid", "3.0.22" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongoid_3.0.22.gemfile.lock b/gemfiles/mongoid_3.0.22.gemfile.lock index b49374ed..d216d2bf 100644 --- a/gemfiles/mongoid_3.0.22.gemfile.lock +++ b/gemfiles/mongoid_3.0.22.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) builder (3.0.4) i18n (0.6.1) mongoid (3.0.22) @@ -25,11 +26,15 @@ GEM moped (1.4.2) multi_json (1.6.1) origin (1.0.11) + power_assert (3.0.1) rake (10.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) tzinfo (0.3.35) PLATFORMS @@ -38,8 +43,12 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongoid (= 3.0.22) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/mongoid_3.1.0.gemfile b/gemfiles/mongoid_3.1.0.gemfile index 7f473bc3..5cfe5a91 100644 --- a/gemfiles/mongoid_3.1.0.gemfile +++ b/gemfiles/mongoid_3.1.0.gemfile @@ -5,4 +5,4 @@ source "http://www.rubygems.org" gem "activemodel", "3.2.13.rc1" gem "mongoid", "3.1.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/mongoid_3.1.0.gemfile.lock b/gemfiles/mongoid_3.1.0.gemfile.lock index 662c1697..6fbdf52b 100644 --- a/gemfiles/mongoid_3.1.0.gemfile.lock +++ b/gemfiles/mongoid_3.1.0.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /home/aaron/Projects/Personal/pluginaweek/state_machine + remote: .. specs: state_machine (1.2.0) @@ -12,9 +12,10 @@ GEM activesupport (3.2.13.rc1) i18n (= 0.6.1) multi_json (~> 1.0) - appraisal (0.5.1) + appraisal (2.5.0) bundler rake + thor (>= 0.14.0) builder (3.0.4) i18n (0.6.1) mongoid (3.1.0) @@ -25,11 +26,15 @@ GEM moped (1.4.2) multi_json (1.6.1) origin (1.0.11) + power_assert (3.0.1) rake (10.0.3) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) + test-unit (3.7.7) + power_assert + thor (1.5.0) tzinfo (0.3.35) PLATFORMS @@ -38,8 +43,12 @@ PLATFORMS DEPENDENCIES activemodel (= 3.2.13.rc1) - appraisal (~> 0.5.0) + appraisal (~> 2.5.0) mongoid (= 3.1.0) rake simplecov state_machine! + test-unit + +BUNDLED WITH + 2.4.21 diff --git a/gemfiles/sequel_3.10.0.gemfile b/gemfiles/sequel_3.10.0.gemfile index b52b7701..c2406c6c 100644 --- a/gemfiles/sequel_3.10.0.gemfile +++ b/gemfiles/sequel_3.10.0.gemfile @@ -2,8 +2,8 @@ source "http://www.rubygems.org" -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby +gem "sqlite3-ruby", "1.3.1", platform: [:ruby, :mswin, :mingw] +gem "jdbc-sqlite3", "3.7.2", platform: :jruby gem "sequel", "3.10.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/sequel_3.13.0.gemfile b/gemfiles/sequel_3.13.0.gemfile index aabff902..6b3925cc 100644 --- a/gemfiles/sequel_3.13.0.gemfile +++ b/gemfiles/sequel_3.13.0.gemfile @@ -2,8 +2,8 @@ source "http://www.rubygems.org" -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby +gem "sqlite3-ruby", "1.3.1", platform: [:ruby, :mswin, :mingw] +gem "jdbc-sqlite3", "3.7.2", platform: :jruby gem "sequel", "3.13.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/sequel_3.14.0.gemfile b/gemfiles/sequel_3.14.0.gemfile index b0126d0a..a6a4fa5e 100644 --- a/gemfiles/sequel_3.14.0.gemfile +++ b/gemfiles/sequel_3.14.0.gemfile @@ -2,8 +2,8 @@ source "http://www.rubygems.org" -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby +gem "sqlite3-ruby", "1.3.1", platform: [:ruby, :mswin, :mingw] +gem "jdbc-sqlite3", "3.7.2", platform: :jruby gem "sequel", "3.14.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/sequel_3.23.0.gemfile b/gemfiles/sequel_3.23.0.gemfile index f505b7f0..480217bb 100644 --- a/gemfiles/sequel_3.23.0.gemfile +++ b/gemfiles/sequel_3.23.0.gemfile @@ -2,8 +2,8 @@ source "http://www.rubygems.org" -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby +gem "sqlite3-ruby", "1.3.1", platform: [:ruby, :mswin, :mingw] +gem "jdbc-sqlite3", "3.7.2", platform: :jruby gem "sequel", "3.23.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/sequel_3.24.0.gemfile b/gemfiles/sequel_3.24.0.gemfile index d9fb892c..576c99d2 100644 --- a/gemfiles/sequel_3.24.0.gemfile +++ b/gemfiles/sequel_3.24.0.gemfile @@ -2,8 +2,8 @@ source "http://www.rubygems.org" -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby +gem "sqlite3-ruby", "1.3.1", platform: [:ruby, :mswin, :mingw] +gem "jdbc-sqlite3", "3.7.2", platform: :jruby gem "sequel", "3.24.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/sequel_3.29.0.gemfile b/gemfiles/sequel_3.29.0.gemfile index 98e08c6c..7dfd5d51 100644 --- a/gemfiles/sequel_3.29.0.gemfile +++ b/gemfiles/sequel_3.29.0.gemfile @@ -2,8 +2,8 @@ source "http://www.rubygems.org" -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby +gem "sqlite3-ruby", "1.3.1", platform: [:ruby, :mswin, :mingw] +gem "jdbc-sqlite3", "3.7.2", platform: :jruby gem "sequel", "3.29.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/sequel_3.34.0.gemfile b/gemfiles/sequel_3.34.0.gemfile index 03c6a54b..9c571416 100644 --- a/gemfiles/sequel_3.34.0.gemfile +++ b/gemfiles/sequel_3.34.0.gemfile @@ -2,8 +2,8 @@ source "http://www.rubygems.org" -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby +gem "sqlite3-ruby", "1.3.1", platform: [:ruby, :mswin, :mingw] +gem "jdbc-sqlite3", "3.7.2", platform: :jruby gem "sequel", "3.34.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/sequel_3.35.0.gemfile b/gemfiles/sequel_3.35.0.gemfile index eea7e7d5..4426bbe3 100644 --- a/gemfiles/sequel_3.35.0.gemfile +++ b/gemfiles/sequel_3.35.0.gemfile @@ -2,8 +2,8 @@ source "http://www.rubygems.org" -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby +gem "sqlite3-ruby", "1.3.1", platform: [:ruby, :mswin, :mingw] +gem "jdbc-sqlite3", "3.7.2", platform: :jruby gem "sequel", "3.35.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/gemfiles/sequel_3.44.0.gemfile b/gemfiles/sequel_3.44.0.gemfile index eef320b8..ffce785f 100644 --- a/gemfiles/sequel_3.44.0.gemfile +++ b/gemfiles/sequel_3.44.0.gemfile @@ -2,8 +2,8 @@ source "http://www.rubygems.org" -gem "sqlite3-ruby", "1.3.1", :platform=>[:ruby, :mswin, :mingw] -gem "jdbc-sqlite3", "3.7.2", :platform=>:jruby +gem "sqlite3-ruby", "1.3.1", platform: [:ruby, :mswin, :mingw] +gem "jdbc-sqlite3", "3.7.2", platform: :jruby gem "sequel", "3.44.0" -gemspec :path=>"../" \ No newline at end of file +gemspec path: "../" diff --git a/lib/state_machine/integrations/active_record.rb b/lib/state_machine/integrations/active_record.rb index 9246d227..b7bf1df0 100644 --- a/lib/state_machine/integrations/active_record.rb +++ b/lib/state_machine/integrations/active_record.rb @@ -452,12 +452,31 @@ def define_state_initializer def define_static_state_initializer # This is the only available hook where the default set of attributes # can be overridden for a new object *prior* to the processing of the - # attributes passed into #initialize + # attributes passed into #initialize. + # + # On Rails < 5, +Model.new+ reads defaults from +column_defaults+. + # On Rails 5+, +Model.new+ instead reads from +_default_attributes+ + # (an +ActiveModel::AttributeSet+). We override both so static initial + # states are applied regardless of which hook the AR version uses. define_helper :class, <<-end_eval, __FILE__, __LINE__ + 1 def column_defaults(*) #:nodoc: + # Rails 5+ memoizes a *frozen* hash here, so dup before mutating + # and re-freeze to preserve the original contract. result = super + result = result.frozen? ? result.dup : result # No need to pass in an object, since the overrides will be forced self.state_machines.initialize_states(nil, :static => :force, :dynamic => false, :to => result) + result.freeze + end + + def _default_attributes #:nodoc: + result = super + defaults = {} + self.state_machines.initialize_states(nil, :static => :force, :dynamic => false, :to => defaults) + defaults.each do |name, value| + key = name.to_s + result.write_from_user(key, value) if result.key?(key) + end result end end_eval diff --git a/test/test_helper.rb b/test/test_helper.rb index 94d95bdf..7b24a79c 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -4,4 +4,12 @@ end require 'test/unit' +# Integration tests (e.g. active_record) inherit from ActiveSupport::TestCase, +# which is a Minitest::Test, so minitest's autorun is needed to execute them. +# Plain tests use the test-unit gem's Test::Unit::TestCase, which has its own +# autorun; loading minitest/autorun there would suppress it, so only load it +# when running under an appraisal integration gemfile. +if %w(active_model active_record data_mapper mongoid mongo_mapper sequel).any? { |name| Bundler.default_gemfile.to_s.include?(name) } + require 'minitest/autorun' +end require 'state_machine' diff --git a/test/unit/integrations/active_record_test.rb b/test/unit/integrations/active_record_test.rb index 37e49818..e7019b9c 100644 --- a/test/unit/integrations/active_record_test.rb +++ b/test/unit/integrations/active_record_test.rb @@ -12,17 +12,10 @@ require 'active_record/test_case' rescue LoadError class ActiveRecord::TestCase < ActiveSupport::TestCase - self.fixture_path = FIXTURES_ROOT - self.use_instantiated_fixtures = false - self.use_transactional_fixtures = true end end require 'active_record/version' -if ActiveRecord::VERSION::MAJOR >= 4 - require 'rails/observers/activerecord/active_record' - require 'active_record/mass_assignment_security' -end # Establish database connection ActiveRecord::Base.establish_connection('adapter' => RUBY_PLATFORM == 'java' ? 'jdbcsqlite3' : 'sqlite3', 'database' => ':memory:') @@ -32,17 +25,17 @@ module ActiveRecordTest class BaseTestCase < ActiveRecord::TestCase def default_test end - + protected # Creates a new ActiveRecord model (and the associated table) def new_model(create_table = :foo, &block) name = create_table || :foo table_name = "#{name}_#{rand(1000000)}" - + model = Class.new(ActiveRecord::Base) do self.table_name = table_name.to_s connection.create_table(table_name, :force => true) {|t| t.string(:state)} if create_table - + (class << self; self; end).class_eval do define_method(:name) { "ActiveRecordTest::#{name.to_s.capitalize}" } end @@ -51,56 +44,56 @@ def new_model(create_table = :foo, &block) model.reset_column_information if create_table model end - + # Creates a new ActiveRecord observer def new_observer(model, &block) observer = Class.new(ActiveRecord::Observer) do attr_accessor :notifications - + def initialize super @notifications = [] end end - + (class << observer; self; end).class_eval do define_method(:name) do "#{model.name}Observer" end end - + observer.observe(model) observer.class_eval(&block) if block_given? observer end end - + class IntegrationTest < BaseTestCase def test_should_have_an_integration_name assert_equal :active_record, StateMachine::Integrations::ActiveRecord.integration_name end - + def test_should_be_available assert StateMachine::Integrations::ActiveRecord.available? end - + def test_should_match_if_class_inherits_from_active_record assert StateMachine::Integrations::ActiveRecord.matches?(new_model) end - + def test_should_not_match_if_class_does_not_inherit_from_active_record assert !StateMachine::Integrations::ActiveRecord.matches?(Class.new) end - + def test_should_have_defaults assert_equal({:action => :save}, StateMachine::Integrations::ActiveRecord.defaults) end - + def test_should_have_a_locale_path assert_not_nil StateMachine::Integrations::ActiveRecord.locale_path end end - + class MachineWithoutDatabaseTest < BaseTestCase def setup @model = new_model(false) do @@ -108,66 +101,59 @@ def setup def self.connection raise ActiveRecord::ConnectionNotEstablished end - + def self.connected? false end end end - + def test_should_allow_machine_creation assert_nothing_raised { StateMachine::Machine.new(@model) } end end - + class MachineUnmigratedTest < BaseTestCase def setup @model = new_model(false) - + # Drop the table so that it definitely doesn't exist @model.connection.drop_table(@model.table_name) if @model.table_exists? end - + def test_should_allow_machine_creation assert_nothing_raised { StateMachine::Machine.new(@model) } end end - + class MachineByDefaultTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model) end - + def test_should_use_save_as_action assert_equal :save, @machine.action end - + def test_should_use_transactions assert_equal true, @machine.use_transactions end - - def test_should_create_notifier_before_callback - assert_equal 1, @machine.callbacks[:before].size - end - - def test_should_create_notifier_after_callback - assert_equal 1, @machine.callbacks[:after].size - end + end - + class MachineWithStatesTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model) @machine.state :first_gear end - + def test_should_humanize_name assert_equal 'first gear', @machine.state(:first_gear).human_name end end - + class MachineWithStaticInitialStateTest < BaseTestCase def setup @model = new_model(:vehicle) do @@ -175,80 +161,74 @@ def setup end @machine = StateMachine::Machine.new(@model, :initial => :parked) end - + def test_should_set_initial_state_on_created_object record = @model.new assert_equal 'parked', record.state end - - def test_should_set_initial_state_with_nil_attributes - record = @model.new(nil) - assert_equal 'parked', record.state - end - + def test_should_still_set_attributes record = @model.new(:value => 1) assert_equal 1, record.value end - + def test_should_still_allow_initialize_blocks block_args = nil record = @model.new do |*args| block_args = args end - + assert_equal [record], block_args end - + def test_should_set_attributes_prior_to_initialize_block state = nil @model.new do |record| state = record.state end - + assert_equal 'parked', state end - + def test_should_set_attributes_prior_to_after_initialize_hook state = nil - @model.class_eval {define_method(:after_initialize) {}} if ActiveRecord::VERSION::MAJOR <= 2 @model.after_initialize do |record| state = record.state end @model.new assert_equal 'parked', state end - + def test_should_set_initial_state_before_setting_attributes @model.class_eval do attr_accessor :state_during_setter - + remove_method :value= define_method(:value=) do |value| self.state_during_setter = state end end - + record = @model.new(:value => 1) assert_equal 'parked', record.state_during_setter end - + def test_should_not_set_initial_state_after_already_initialized record = @model.new(:value => 1) assert_equal 'parked', record.state - + record.state = 'idling' record.attributes = {} assert_equal 'idling', record.state end - + def test_should_persist_initial_state record = @model.new record.save record.reload assert_equal 'parked', record.state end - + unless ActiveRecord::VERSION::MAJOR == 3 && ActiveRecord::VERSION::MINOR == 0 def test_should_persist_initial_state_on_dup record = @model.create.dup @@ -257,84 +237,83 @@ def test_should_persist_initial_state_on_dup assert_equal 'parked', record.state end end - + def test_should_use_stored_values_when_loading_from_database @machine.state :idling - + record = @model.find(@model.create(:state => 'idling').id) assert_equal 'idling', record.state end - + def test_should_use_stored_values_when_loading_from_database_with_nil_state @machine.state nil - + record = @model.find(@model.create(:state => nil).id) assert_nil record.state end - + def test_should_use_stored_values_when_loading_for_many_association @machine.state :idling - + @model.connection.add_column @model.table_name, :owner_id, :integer @model.reset_column_information ActiveRecordTest.const_set('Vehicle', @model) - + owner_model = new_model(:owner) do has_many :vehicles, :class_name => 'ActiveRecordTest::Vehicle' end ActiveRecordTest.const_set('Owner', owner_model) - + owner = owner_model.create record = @model.create(:state => 'idling', :owner_id => owner.id) assert_equal 'idling', owner.vehicles[0].state end - + def test_should_use_stored_values_when_loading_for_one_association @machine.state :idling - + @model.connection.add_column @model.table_name, :owner_id, :integer @model.reset_column_information ActiveRecordTest.const_set('Vehicle', @model) - + owner_model = new_model(:owner) do has_one :vehicle, :class_name => 'ActiveRecordTest::Vehicle' end ActiveRecordTest.const_set('Owner', owner_model) - + owner = owner_model.create record = @model.create(:state => 'idling', :owner_id => owner.id) assert_equal 'idling', owner.vehicle.state end - + def test_should_use_stored_values_when_loading_for_belongs_to_association @machine.state :idling - + ActiveRecordTest.const_set('Vehicle', @model) - + driver_model = new_model(:driver) do connection.add_column table_name, :vehicle_id, :integer - + belongs_to :vehicle, :class_name => 'ActiveRecordTest::Vehicle' end ActiveRecordTest.const_set('Driver', driver_model) - + record = @model.create(:state => 'idling') driver = driver_model.create(:vehicle_id => record.id) assert_equal 'idling', driver.vehicle.state end - + def teardown ActiveRecordTest.class_eval do remove_const('Vehicle') if defined?(ActiveRecordTest::Vehicle) remove_const('Owner') if defined?(ActiveRecordTest::Owner) remove_const('Driver') if defined?(ActiveRecordTest::Driver) end - ActiveSupport::Dependencies.clear if defined?(ActiveSupport::Dependencies) super end end - + class MachineWithDynamicInitialStateTest < BaseTestCase def setup @model = new_model do @@ -343,75 +322,74 @@ def setup @machine = StateMachine::Machine.new(@model, :initial => lambda {|object| :parked}) @machine.state :parked end - + def test_should_set_initial_state_on_created_object record = @model.new assert_equal 'parked', record.state end - + def test_should_still_set_attributes record = @model.new(:value => 1) assert_equal 1, record.value end - + def test_should_still_allow_initialize_blocks block_args = nil record = @model.new do |*args| block_args = args end - + assert_equal [record], block_args end - + def test_should_set_attributes_prior_to_initialize_block state = nil @model.new do |record| state = record.state end - + assert_equal 'parked', state end - + def test_should_set_attributes_prior_to_after_initialize_hook state = nil - @model.class_eval {define_method(:after_initialize) {}} if ActiveRecord::VERSION::MAJOR <= 2 @model.after_initialize do |record| state = record.state end @model.new assert_equal 'parked', state end - + def test_should_set_initial_state_after_setting_attributes @model.class_eval do attr_accessor :state_during_setter - + remove_method :value= define_method(:value=) do |value| self.state_during_setter = state || 'nil' end end - + record = @model.new(:value => 1) assert_equal 'nil', record.state_during_setter end - + def test_should_not_set_initial_state_after_already_initialized record = @model.new(:value => 1) assert_equal 'parked', record.state - + record.state = 'idling' record.attributes = {} assert_equal 'idling', record.state end - + def test_should_persist_initial_state record = @model.new record.save record.reload assert_equal 'parked', record.state end - + unless ActiveRecord::VERSION::MAJOR == 3 && ActiveRecord::VERSION::MINOR == 0 def test_should_persist_initial_state_on_dup record = @model.create.dup @@ -420,88 +398,88 @@ def test_should_persist_initial_state_on_dup assert_equal 'parked', record.state end end - + def test_should_use_stored_values_when_loading_from_database @machine.state :idling - + record = @model.find(@model.create(:state => 'idling').id) assert_equal 'idling', record.state end - + def test_should_use_stored_values_when_loading_from_database_with_nil_state @machine.state nil - + record = @model.find(@model.create(:state => nil).id) assert_nil record.state end end - + class MachineWithEventsTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model) @machine.event :shift_up end - + def test_should_humanize_name assert_equal 'shift up', @machine.event(:shift_up).human_name end end - + class MachineWithSameColumnDefaultTest < BaseTestCase def setup @original_stderr, $stderr = $stderr, StringIO.new - + @model = new_model do connection.add_column table_name, :status, :string, :default => 'parked' end @machine = StateMachine::Machine.new(@model, :status, :initial => :parked) @record = @model.new end - + def test_should_use_machine_default assert_equal 'parked', @record.status end - + def test_should_not_generate_a_warning assert_no_match(/have defined a different default/, $stderr.string) end - + def teardown $stderr = @original_stderr super end end - + class MachineWithDifferentColumnDefaultTest < BaseTestCase def setup @original_stderr, $stderr = $stderr, StringIO.new - + @model = new_model do connection.add_column table_name, :status, :string, :default => 'idling' end @machine = StateMachine::Machine.new(@model, :status, :initial => :parked) @record = @model.new end - + def test_should_use_machine_default assert_equal 'parked', @record.status end - + def test_should_generate_a_warning assert_match(/Both ActiveRecordTest::Foo and its :status machine have defined a different default for "status". Use only one or the other for defining defaults to avoid unexpected behaviors\./, $stderr.string) end - + def teardown $stderr = @original_stderr super end end - + class MachineWithDifferentIntegerColumnDefaultTest < BaseTestCase def setup @original_stderr, $stderr = $stderr, StringIO.new - + @model = new_model do connection.add_column table_name, :status, :integer, :default => 0 end @@ -509,21 +487,21 @@ def setup @machine.state :parked, :value => 1 @record = @model.new end - + def test_should_use_machine_default assert_equal 1, @record.status end - + def test_should_generate_a_warning assert_match(/Both ActiveRecordTest::Foo and its :status machine have defined a different default for "status". Use only one or the other for defining defaults to avoid unexpected behaviors\./, $stderr.string) end - + def teardown $stderr = @original_stderr super end end - + class MachineWithConflictingPredicateTest < BaseTestCase def setup @model = new_model do @@ -531,237 +509,186 @@ def state?(*args) true end end - + @machine = StateMachine::Machine.new(@model) @record = @model.new end - + def test_should_not_define_attribute_predicate assert @record.state? end end - + class MachineWithConflictingStateNameTest < BaseTestCase def setup require 'stringio' @original_stderr, $stderr = $stderr, StringIO.new - + @model = new_model end - + def test_should_output_warning_with_same_machine_name @machine = StateMachine::Machine.new(@model) @machine.state :state - + assert_match(/^Instance method "state\?" is already defined in ActiveRecordTest::Foo, use generic helper instead.*\n$/, $stderr.string) end - + def test_should_output_warning_with_same_machine_attribute @machine = StateMachine::Machine.new(@model, :public_state, :attribute => :state) @machine.state :state - + assert_match(/^Instance method "state\?" is already defined in ActiveRecordTest::Foo, use generic helper instead.*\n$/, $stderr.string) end - + def teardown $stderr = @original_stderr super end end - + class MachineWithColumnStateAttributeTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model, :initial => :parked) @machine.other_states(:idling) - + @record = @model.new end - + def test_should_not_override_the_column_reader @record[:state] = 'parked' assert_equal 'parked', @record.state end - + def test_should_not_override_the_column_writer @record.state = 'parked' assert_equal 'parked', @record[:state] end - + def test_should_have_an_attribute_predicate assert @record.respond_to?(:state?) end - + def test_should_test_for_existence_on_predicate_without_parameters assert @record.state? - + @record.state = nil assert !@record.state? end - + def test_should_return_false_for_predicate_if_does_not_match_current_value assert !@record.state?(:idling) end - + def test_should_return_true_for_predicate_if_matches_current_value assert @record.state?(:parked) end - + def test_should_raise_exception_for_predicate_if_invalid_state_specified assert_raise(IndexError) { @record.state?(:invalid) } end end - + class MachineWithNonColumnStateAttributeUndefinedTest < BaseTestCase def setup @model = new_model do - def initialize + def initialize(*) # Skip attribute initialization @initialized_state_machines = true super end end - + @machine = StateMachine::Machine.new(@model, :status, :initial => :parked) @machine.other_states(:idling) @record = @model.new end - + def test_should_not_define_a_column_for_the_attribute assert_nil @model.columns_hash['status'] end - - def test_should_define_a_reader_attribute_for_the_attribute - assert @record.respond_to?(:status) - end - - def test_should_define_a_writer_attribute_for_the_attribute - assert @record.respond_to?(:status=) - end - + def test_should_define_an_attribute_predicate assert @record.respond_to?(:status?) end end - - class MachineWithNonColumnStateAttributeDefinedTest < BaseTestCase - def setup - @model = new_model do - def status=(value) - self['status'] = value - end - - def status - self['status'] - end - end - - @machine = StateMachine::Machine.new(@model, :status, :initial => :parked) - @machine.other_states(:idling) - @record = @model.new - end - - def test_should_return_false_for_predicate_if_does_not_match_current_value - assert !@record.status?(:idling) - end - - def test_should_return_true_for_predicate_if_matches_current_value - assert @record.status?(:parked) - end - - def test_should_raise_exception_for_predicate_if_invalid_state_specified - assert_raise(IndexError) { @record.status?(:invalid) } - end - - def test_should_set_initial_state_on_created_object - assert_equal 'parked', @record.status - end - end - + class MachineWithAliasedAttributeTest < BaseTestCase def setup @model = new_model do alias_attribute :vehicle_status, :state end - + @machine = StateMachine::Machine.new(@model, :status, :attribute => :vehicle_status) @machine.state :parked - + @record = @model.new end - + def test_should_check_custom_attribute_for_predicate @record.vehicle_status = nil assert !@record.status?(:parked) - + @record.vehicle_status = 'parked' assert @record.status?(:parked) end end - + class MachineWithCustomAttributeTest < BaseTestCase def setup require 'stringio' @original_stderr, $stderr = $stderr, StringIO.new - + @model = new_model @machine = StateMachine::Machine.new(@model, :public_state, :attribute => :state) @record = @model.new end - + def test_should_not_delegate_attribute_predicate_with_different_attribute assert_raise(ArgumentError) { @record.public_state? } end - + def teardown $stderr = @original_stderr super end end - + class MachineWithInitializedStateTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model, :initial => :parked) @machine.state :idling end - + def test_should_allow_nil_initial_state_when_static @machine.state nil - + record = @model.new(:state => nil) assert_nil record.state end - + def test_should_allow_nil_initial_state_when_dynamic @machine.state nil - + @machine.initial_state = lambda {:parked} record = @model.new(:state => nil) assert_nil record.state end - + def test_should_allow_different_initial_state_when_static record = @model.new(:state => 'idling') assert_equal 'idling', record.state end - + def test_should_allow_different_initial_state_when_dynamic @machine.initial_state = lambda {:parked} record = @model.new(:state => 'idling') assert_equal 'idling', record.state end - - def test_should_use_default_state_if_protected - @model.class_eval do - attr_protected :state - end - - record = @model.new(:state => 'idling') - assert_equal 'parked', record.state - end end - + class MachineMultipleTest < BaseTestCase def setup @model = new_model do @@ -770,30 +697,30 @@ def setup @state_machine = StateMachine::Machine.new(@model, :initial => :parked) @status_machine = StateMachine::Machine.new(@model, :status, :initial => :idling) end - + def test_should_should_initialize_each_state record = @model.new assert_equal 'parked', record.state assert_equal 'idling', record.status end end - + class MachineWithLoopbackTest < BaseTestCase def setup @model = new_model do connection.add_column table_name, :updated_at, :datetime end - + @machine = StateMachine::Machine.new(@model, :initial => :parked) @machine.event :park - + @record = @model.create(:updated_at => Time.now - 1) @transition = StateMachine::Transition.new(@record, @machine, :park, :parked, :parked) - + @timestamp = @record.updated_at @transition.perform end - + if ActiveRecord.const_defined?(:Dirty) || ActiveRecord::AttributeMethods.const_defined?(:Dirty) def test_should_not_update_record assert_equal @timestamp, @record.updated_at @@ -804,7 +731,7 @@ def test_should_update_record end end end - + if ActiveRecord.const_defined?(:Dirty) || ActiveRecord::AttributeMethods.const_defined?(:Dirty) class MachineWithDirtyAttributesTest < BaseTestCase def setup @@ -812,55 +739,55 @@ def setup @machine = StateMachine::Machine.new(@model, :initial => :parked) @machine.event :ignite @machine.state :idling - + @record = @model.create - + @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling) @transition.perform(false) end - + def test_should_include_state_in_changed_attributes assert_equal %w(state), @record.changed end - + def test_should_track_attribute_change assert_equal %w(parked idling), @record.changes['state'] end - + def test_should_not_reset_changes_on_multiple_transitions transition = StateMachine::Transition.new(@record, @machine, :ignite, :idling, :idling) transition.perform(false) - + assert_equal %w(parked idling), @record.changes['state'] end - + def test_should_not_have_changes_when_loaded_from_database record = @model.find(@record.id) assert !record.changed? end end - + class MachineWithDirtyAttributesDuringLoopbackTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model, :initial => :parked) @machine.event :park - + @record = @model.create - + @transition = StateMachine::Transition.new(@record, @machine, :park, :parked, :parked) @transition.perform(false) end - + def test_should_not_include_state_in_changed_attributes assert_equal [], @record.changed end - + def test_should_not_track_attribute_changes - assert_equal nil, @record.changes['state'] + assert_nil @record.changes['state'] end end - + class MachineWithDirtyAttributesAndCustomAttributeTest < BaseTestCase def setup @model = new_model do @@ -869,29 +796,29 @@ def setup @machine = StateMachine::Machine.new(@model, :status, :initial => :parked) @machine.event :ignite @machine.state :idling - + @record = @model.create - + @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling) @transition.perform(false) end - + def test_should_include_state_in_changed_attributes assert_equal %w(status), @record.changed end - + def test_should_track_attribute_change assert_equal %w(parked idling), @record.changes['status'] end - + def test_should_not_reset_changes_on_multiple_transitions transition = StateMachine::Transition.new(@record, @machine, :ignite, :idling, :idling) transition.perform(false) - + assert_equal %w(parked idling), @record.changes['status'] end end - + class MachineWithDirtyAttributeAndCustomAttributesDuringLoopbackTest < BaseTestCase def setup @model = new_model do @@ -899,169 +826,169 @@ def setup end @machine = StateMachine::Machine.new(@model, :status, :initial => :parked) @machine.event :park - + @record = @model.create - + @transition = StateMachine::Transition.new(@record, @machine, :park, :parked, :parked) @transition.perform(false) end - + def test_should_not_include_state_in_changed_attributes assert_equal [], @record.changed end - + def test_should_not_track_attribute_changes - assert_equal nil, @record.changes['status'] + assert_nil @record.changes['status'] end end - + class MachineWithDirtyAttributeAndStateEventsTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model, :initial => :parked) @machine.event :ignite - + @record = @model.create @record.state_event = 'ignite' end - + def test_should_not_include_state_in_changed_attributes assert_equal [], @record.changed end - + def test_should_not_track_attribute_change - assert_equal nil, @record.changes['state'] + assert_nil @record.changes['state'] end end else $stderr.puts 'Skipping ActiveRecord Dirty tests.' end - + class MachineWithoutTransactionsTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model, :use_transactions => false) end - + def test_should_not_rollback_transaction_if_false @machine.within_transaction(@model.new) do @model.create false end - + assert_equal 1, @model.count end - + def test_should_not_rollback_transaction_if_true @machine.within_transaction(@model.new) do @model.create true end - + assert_equal 1, @model.count end end - + class MachineWithTransactionsTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model, :use_transactions => true) end - + def test_should_rollback_transaction_if_false @machine.within_transaction(@model.new) do @model.create false end - + assert_equal 0, @model.count end - + def test_should_not_rollback_transaction_if_true @machine.within_transaction(@model.new) do @model.create true end - + assert_equal 1, @model.count end end - + class MachineWithCallbacksTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model, :initial => :parked) @machine.other_states :idling @machine.event :ignite - + @record = @model.new(:state => 'parked') @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling) end - + def test_should_run_before_callbacks called = false @machine.before_transition {called = true} - + @transition.perform assert called end - + def test_should_pass_record_to_before_callbacks_with_one_argument record = nil @machine.before_transition {|arg| record = arg} - + @transition.perform assert_equal @record, record end - + def test_should_pass_record_and_transition_to_before_callbacks_with_multiple_arguments callback_args = nil @machine.before_transition {|*args| callback_args = args} - + @transition.perform assert_equal [@record, @transition], callback_args end - + def test_should_run_before_callbacks_outside_the_context_of_the_record context = nil @machine.before_transition {context = self} - + @transition.perform assert_equal self, context end - + def test_should_run_after_callbacks called = false @machine.after_transition {called = true} - + @transition.perform assert called end - + def test_should_pass_record_to_after_callbacks_with_one_argument record = nil @machine.after_transition {|arg| record = arg} - + @transition.perform assert_equal @record, record end - + def test_should_pass_record_and_transition_to_after_callbacks_with_multiple_arguments callback_args = nil @machine.after_transition {|*args| callback_args = args} - + @transition.perform assert_equal [@record, @transition], callback_args end - + def test_should_run_after_callbacks_outside_the_context_of_the_record context = nil @machine.after_transition {context = self} - + @transition.perform assert_equal self, context end - + def test_should_run_after_callbacks_if_model_callback_added_prior_to_state_machine_definition model = new_model do after_save { nil } @@ -1071,13 +998,13 @@ def test_should_run_after_callbacks_if_model_callback_added_prior_to_state_machi machine.event :ignite after_called = false machine.after_transition {after_called = true} - + record = model.new(:state => 'parked') transition = StateMachine::Transition.new(record, machine, :ignite, :parked, :idling) transition.perform assert_equal true, after_called end - + def test_should_run_around_callbacks before_called = false after_called = false @@ -1091,51 +1018,51 @@ def test_should_run_around_callbacks end after_called = true end - + @transition.perform assert before_called assert after_called assert_equal ensure_called, 1 end - + def test_should_include_transition_states_in_known_states @machine.before_transition :to => :first_gear, :do => lambda {} - + assert_equal [:parked, :idling, :first_gear], @machine.states.map {|state| state.name} end - + def test_should_allow_symbolic_callbacks callback_args = nil - + klass = class << @record; self; end klass.send(:define_method, :after_ignite) do |*args| callback_args = args end - + @machine.before_transition(:after_ignite) - + @transition.perform assert_equal [@transition], callback_args end - + def test_should_allow_string_callbacks class << @record attr_reader :callback_result end - + @machine.before_transition('@callback_result = [1, 2, 3]') @transition.perform - + assert_equal [1, 2, 3], @record.callback_result end - + def test_should_run_in_expected_order expected = [ :before_transition, :before_validation, :after_validation, :before_save, :before_create, :after_create, :after_save, :after_transition ] - + callbacks = [] @model.before_validation { callbacks << :before_validation } @model.after_validation { callbacks << :after_validation } @@ -1147,20 +1074,20 @@ def test_should_run_in_expected_order @model.after_commit { callbacks << :after_commit } expected << :after_commit end - + @machine.before_transition { callbacks << :before_transition } @machine.after_transition { callbacks << :after_transition } - + @transition.perform - + assert_equal expected, callbacks end end - + class MachineWithFailedBeforeCallbacksTest < BaseTestCase def setup @callbacks = [] - + @model = new_model @machine = StateMachine::Machine.new(@model) @machine.state :parked, :idling @@ -1169,107 +1096,107 @@ def setup @machine.before_transition {@callbacks << :before_2} @machine.after_transition {@callbacks << :after} @machine.around_transition {|block| @callbacks << :around_before; block.call; @callbacks << :around_after} - + @record = @model.new(:state => 'parked') @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling) @result = @transition.perform end - + def test_should_not_be_successful assert !@result end - + def test_should_not_change_current_state assert_equal 'parked', @record.state end - + def test_should_not_run_action assert @record.new_record? end - + def test_should_not_run_further_callbacks assert_equal [:before_1], @callbacks end end - + class MachineNestedActionTest < BaseTestCase def setup @callbacks = [] - + @model = new_model @machine = StateMachine::Machine.new(@model) @machine.event :ignite do transition :parked => :idling end - + @record = @model.new(:state => 'parked') end - + def test_should_allow_transition_prior_to_creation_if_skipping_action record = @record @model.before_create { record.ignite(false) } result = @record.save - + assert_equal true, result assert_equal "idling", @record.state @record.reload assert_equal "idling", @record.state end - + def test_should_allow_transition_after_creation record = @record @model.after_create { record.ignite } result = @record.save - + assert_equal true, result assert_equal "idling", @record.state @record.reload assert_equal "idling", @record.state end end - + class MachineWithFailedActionTest < BaseTestCase def setup @model = new_model do validates_inclusion_of :state, :in => %w(first_gear) end - + @machine = StateMachine::Machine.new(@model) @machine.state :parked, :idling @machine.event :ignite - + @callbacks = [] @machine.before_transition {@callbacks << :before} @machine.after_transition {@callbacks << :after} @machine.after_failure {@callbacks << :after_failure} @machine.around_transition {|block| @callbacks << :around_before; block.call; @callbacks << :around_after} - + @record = @model.new(:state => 'parked') @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling) @result = @transition.perform end - + def test_should_not_be_successful assert !@result end - + def test_should_not_change_current_state assert_equal 'parked', @record.state end - + def test_should_not_save_record assert @record.new_record? end - + def test_should_run_before_callbacks_and_after_callbacks_with_failures assert_equal [:before, :around_before, :after_failure], @callbacks end end - + class MachineWithFailedAfterCallbacksTest < BaseTestCase def setup @callbacks = [] - + @model = new_model @machine = StateMachine::Machine.new(@model) @machine.state :parked, :idling @@ -1277,141 +1204,141 @@ def setup @machine.after_transition {@callbacks << :after_1; false} @machine.after_transition {@callbacks << :after_2} @machine.around_transition {|block| @callbacks << :around_before; block.call; @callbacks << :around_after} - + @record = @model.new(:state => 'parked') @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling) @result = @transition.perform end - + def test_should_be_successful assert @result end - + def test_should_change_current_state assert_equal 'idling', @record.state end - + def test_should_save_record assert !@record.new_record? end - + def test_should_not_run_further_after_callbacks assert_equal [:around_before, :around_after, :after_1], @callbacks end end - + class MachineWithValidationsTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model) @machine.state :parked - + @record = @model.new end - + def test_should_invalidate_using_errors I18n.backend = I18n::Backend::Simple.new if Object.const_defined?(:I18n) @record.state = 'parked' - + @machine.invalidate(@record, :state, :invalid_transition, [[:event, 'park']]) assert_equal ['State cannot transition via "park"'], @record.errors.full_messages end - + def test_should_auto_prefix_custom_attributes_on_invalidation @machine.invalidate(@record, :event, :invalid) - + assert_equal ['State event is invalid'], @record.errors.full_messages end - + def test_should_clear_errors_on_reset @record.state = 'parked' @record.errors.add(:state, 'is invalid') - + @machine.reset(@record) assert_equal [], @record.errors.full_messages end - + def test_should_be_valid_if_state_is_known @record.state = 'parked' - + assert @record.valid? end - + def test_should_not_be_valid_if_state_is_unknown @record.state = 'invalid' - + assert !@record.valid? assert_equal ['State is invalid'], @record.errors.full_messages end end - + class MachineWithValidationsAndCustomAttributeTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model, :status, :attribute => :state) @machine.state :parked - + @record = @model.new end - + def test_should_add_validation_errors_to_custom_attribute @record.state = 'invalid' - + assert !@record.valid? assert_equal ['State is invalid'], @record.errors.full_messages - + @record.state = 'parked' assert @record.valid? end end - + class MachineErrorsTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model) @record = @model.new end - + def test_should_be_able_to_describe_current_errors @record.errors.add(:id, 'cannot be blank') @record.errors.add(:state, 'is invalid') assert_equal ['Id cannot be blank', 'State is invalid'], @machine.errors_for(@record).split(', ').sort end - + def test_should_describe_as_halted_with_no_errors assert_equal 'Transition halted', @machine.errors_for(@record) end end - + class MachineWithStateDrivenValidationsTest < BaseTestCase def setup @model = new_model do attr_accessor :seatbelt end - + @machine = StateMachine::Machine.new(@model) @machine.state :first_gear, :second_gear do validates_presence_of :seatbelt end @machine.other_states :parked end - + def test_should_be_valid_if_validation_fails_outside_state_scope record = @model.new(:state => 'parked', :seatbelt => nil) assert record.valid? end - + def test_should_be_invalid_if_validation_fails_within_state_scope record = @model.new(:state => 'first_gear', :seatbelt => nil) assert !record.valid? end - + def test_should_be_valid_if_validation_succeeds_within_state_scope record = @model.new(:state => 'second_gear', :seatbelt => true) assert record.valid? end end - + class MachineWithEventAttributesOnValidationTest < BaseTestCase def setup @model = new_model @@ -1419,40 +1346,40 @@ def setup @machine.event :ignite do transition :parked => :idling end - + @record = @model.new @record.state = 'parked' @record.state_event = 'ignite' end - + def test_should_fail_if_event_is_invalid @record.state_event = 'invalid' assert !@record.valid? assert_equal ['State event is invalid'], @record.errors.full_messages end - + def test_should_fail_if_event_has_no_transition @record.state = 'idling' assert !@record.valid? assert_equal ['State event cannot transition when idling'], @record.errors.full_messages end - + def test_should_be_successful_if_event_has_transition assert @record.valid? end - + def test_should_run_before_callbacks ran_callback = false @machine.before_transition { ran_callback = true } - + @record.valid? assert ran_callback end - + def test_should_run_around_callbacks_before_yield ran_callback = false @machine.around_transition {|block| ran_callback = true; block.call } - + begin @record.valid? rescue ArgumentError @@ -1460,50 +1387,50 @@ def test_should_run_around_callbacks_before_yield end assert ran_callback end - + def test_should_persist_new_state @record.valid? assert_equal 'idling', @record.state end - + def test_should_not_run_after_callbacks ran_callback = false @machine.after_transition { ran_callback = true } - + @record.valid? assert !ran_callback end - + def test_should_not_run_after_callbacks_with_failures_disabled_if_validation_fails @model.class_eval do attr_accessor :seatbelt validates_presence_of :seatbelt end - + ran_callback = false @machine.after_transition { ran_callback = true } - + @record.valid? assert !ran_callback end - + def test_should_run_after_callbacks_if_validation_fails @model.class_eval do attr_accessor :seatbelt validates_presence_of :seatbelt end - + ran_callback = false @machine.after_failure { ran_callback = true } - + @record.valid? assert ran_callback end - + def test_should_not_run_around_callbacks_after_yield ran_callback = false @machine.around_transition {|block| block.call; ran_callback = true } - + begin @record.valid? rescue ArgumentError @@ -1511,32 +1438,32 @@ def test_should_not_run_around_callbacks_after_yield end assert !ran_callback end - + def test_should_not_run_around_callbacks_after_yield_with_failures_disabled_if_validation_fails @model.class_eval do attr_accessor :seatbelt validates_presence_of :seatbelt end - + ran_callback = false @machine.around_transition {|block| block.call; ran_callback = true } - + @record.valid? assert !ran_callback end - + def test_should_not_run_before_transitions_within_transaction @machine.before_transition { @model.create; raise ActiveRecord::Rollback } - + begin @record.valid? rescue Exception end - + assert_equal 1, @model.count end end - + class MachineWithEventAttributesOnSaveTest < BaseTestCase def setup @model = new_model @@ -1544,173 +1471,173 @@ def setup @machine.event :ignite do transition :parked => :idling end - + @record = @model.new @record.state = 'parked' @record.state_event = 'ignite' end - + def test_should_fail_if_event_is_invalid @record.state_event = 'invalid' assert_equal false, @record.save end - + def test_should_fail_if_event_has_no_transition @record.state = 'idling' assert_equal false, @record.save end - + def test_should_run_before_callbacks ran_callback = false @machine.before_transition { ran_callback = true } - + @record.save assert ran_callback end - + def test_should_run_before_callbacks_once before_count = 0 @machine.before_transition { before_count += 1 } - + @record.save assert_equal 1, before_count end - + def test_should_run_around_callbacks_before_yield ran_callback = false @machine.around_transition {|block| ran_callback = true; block.call } - + @record.save assert ran_callback end - + def test_should_run_around_callbacks_before_yield_once around_before_count = 0 @machine.around_transition {|block| around_before_count += 1; block.call } - + @record.save assert_equal 1, around_before_count end - + def test_should_persist_new_state @record.save assert_equal 'idling', @record.state end - + def test_should_run_after_callbacks ran_callback = false @machine.after_transition { ran_callback = true } - + @record.save assert ran_callback end - + def test_should_not_run_after_callbacks_with_failures_disabled_if_fails - @model.before_create {|record| false} - + @model.before_create { throw :abort } + ran_callback = false @machine.after_transition { ran_callback = true } - + begin; @record.save; rescue; end assert !ran_callback end - + def test_should_run_failure_callbacks__if_fails - @model.before_create {|record| false} - + @model.before_create { throw :abort } + ran_callback = false @machine.after_failure { ran_callback = true } - + begin; @record.save; rescue; end assert ran_callback end - + def test_should_not_run_around_callbacks_if_fails - @model.before_create {|record| false} - + @model.before_create { throw :abort } + ran_callback = false @machine.around_transition {|block| block.call; ran_callback = true } - + begin; @record.save; rescue; end assert !ran_callback end - + def test_should_run_around_callbacks_after_yield ran_callback = false @machine.around_transition {|block| block.call; ran_callback = true } - + @record.save assert ran_callback end - + def test_should_run_before_transitions_within_transaction @machine.before_transition { @model.create; raise ActiveRecord::Rollback } - + begin @record.save rescue Exception end - + assert_equal 0, @model.count end - + def test_should_run_after_transitions_within_transaction @machine.after_transition { @model.create; raise ActiveRecord::Rollback } - + begin @record.save rescue Exception end - + assert_equal 0, @model.count end - + def test_should_run_around_transition_within_transaction @machine.around_transition { @model.create; raise ActiveRecord::Rollback } - + begin @record.save rescue Exception end - + assert_equal 0, @model.count end - + def test_should_allow_additional_transitions_to_new_state_in_after_transitions @machine.event :park do transition :idling => :parked end - + @machine.after_transition(:on => :ignite) { @record.park } - + @record.save assert_equal 'parked', @record.state - + @record.reload assert_equal 'parked', @record.state end - + def test_should_allow_additional_transitions_to_previous_state_in_after_transitions @machine.event :shift_up do transition :idling => :first_gear end - + @machine.after_transition(:on => :ignite) { @record.shift_up } - + @record.save assert_equal 'first_gear', @record.state - + @record.reload assert_equal 'first_gear', @record.state end - + def test_should_return_nil_on_manual_rollback @machine.before_transition { raise ActiveRecord::Rollback } - - assert_equal nil, @record.save + + assert_nil @record.save end end - + if ActiveRecord::VERSION::MAJOR >= 3 || ActiveRecord::VERSION::MINOR >= 3 class MachineWithEventAttributesOnAutosaveTest < BaseTestCase def setup @@ -1718,48 +1645,47 @@ def setup connection.add_column table_name, :owner_id, :integer end ActiveRecordTest.const_set('Vehicle', @vehicle_model) - + @owner_model = new_model(:owner) ActiveRecordTest.const_set('Owner', @owner_model) - + machine = StateMachine::Machine.new(@vehicle_model) machine.event :ignite do transition :parked => :idling end - + @owner = @owner_model.create @vehicle = @vehicle_model.create(:state => 'parked', :owner_id => @owner.id) end - + def test_should_persist_has_one_autosave @owner_model.has_one :vehicle, :class_name => 'ActiveRecordTest::Vehicle', :autosave => true @owner.vehicle.state_event = 'ignite' @owner.save - + @vehicle.reload assert_equal 'idling', @vehicle.state end - + def test_should_persist_has_many_autosave @owner_model.has_many :vehicles, :class_name => 'ActiveRecordTest::Vehicle', :autosave => true @owner.vehicles[0].state_event = 'ignite' @owner.save - + @vehicle.reload assert_equal 'idling', @vehicle.state end - + def teardown ActiveRecordTest.class_eval do remove_const('Vehicle') remove_const('Owner') end - ActiveSupport::Dependencies.clear if defined?(ActiveSupport::Dependencies) super end end end - + class MachineWithEventAttributesOnSaveBangTest < BaseTestCase def setup @model = new_model @@ -1767,80 +1693,80 @@ def setup @machine.event :ignite do transition :parked => :idling end - + @record = @model.new @record.state = 'parked' @record.state_event = 'ignite' end - + def test_should_fail_if_event_is_invalid @record.state_event = 'invalid' assert_raise(ActiveRecord::RecordInvalid) { @record.save! } end - + def test_should_fail_if_event_has_no_transition @record.state = 'idling' assert_raise(ActiveRecord::RecordInvalid) { @record.save! } end - + def test_should_be_successful_if_event_has_transition assert_equal true, @record.save! end - + def test_should_run_before_callbacks ran_callback = false @machine.before_transition { ran_callback = true } - + @record.save! assert ran_callback end - + def test_should_run_before_callbacks_once before_count = 0 @machine.before_transition { before_count += 1 } - + @record.save! assert_equal 1, before_count end - + def test_should_run_around_callbacks_before_yield ran_callback = false @machine.around_transition {|block| ran_callback = true; block.call } - + @record.save! assert ran_callback end - + def test_should_run_around_callbacks_before_yield_once around_before_count = 0 @machine.around_transition {|block| around_before_count += 1; block.call } - + @record.save! assert_equal 1, around_before_count end - + def test_should_persist_new_state @record.save! assert_equal 'idling', @record.state end - + def test_should_run_after_callbacks ran_callback = false @machine.after_transition { ran_callback = true } - + @record.save! assert ran_callback end - + def test_should_run_around_callbacks_after_yield ran_callback = false @machine.around_transition {|block| block.call; ran_callback = true } - + @record.save! assert ran_callback end end - + class MachineWithEventAttributesOnCustomActionTest < BaseTestCase def setup @superclass = new_model do @@ -1853,494 +1779,191 @@ def persist @machine.event :ignite do transition :parked => :idling end - + @record = @model.new @record.state = 'parked' @record.state_event = 'ignite' end - + def test_should_not_transition_on_valid? @record.valid? assert_equal 'parked', @record.state end - + def test_should_not_transition_on_save @record.save assert_equal 'parked', @record.state end - + def test_should_not_transition_on_save! @record.save! assert_equal 'parked', @record.state end - + def test_should_transition_on_custom_action @record.persist assert_equal 'idling', @record.state end end - - class MachineWithObserversTest < BaseTestCase + + + class MachineWithScopesTest < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model) - @machine.state :parked, :idling - @machine.event :ignite - @record = @model.new(:state => 'parked') - @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling) + @machine.state :parked, :first_gear + @machine.state :idling, :value => lambda {'idling'} end - - def test_should_call_all_transition_callback_permutations - callbacks = [ - :before_ignite_from_parked_to_idling, - :before_ignite_from_parked, - :before_ignite_to_idling, - :before_ignite, - :before_transition_state_from_parked_to_idling, - :before_transition_state_from_parked, - :before_transition_state_to_idling, - :before_transition_state, - :before_transition - ] - - observer = new_observer(@model) do - callbacks.each do |callback| - define_method(callback) do |*args| - notifications << callback - end - end - end - - instance = observer.instance - - @transition.perform - assert_equal callbacks, instance.notifications - end - - def test_should_call_no_transition_callbacks_when_observers_disabled - return unless ActiveRecord::VERSION::MAJOR >= 3 && ActiveRecord::VERSION::MINOR >= 1 - - callbacks = [ - :before_ignite, - :before_transition - ] - - observer = new_observer(@model) do - callbacks.each do |callback| - define_method(callback) do |*args| - notifications << callback - end - end - end - - instance = observer.instance - - @model.observers.disable(observer) do - @transition.perform - end - - assert_equal [], instance.notifications + + def test_should_create_singular_with_scope + assert @model.respond_to?(:with_state) end - - def test_should_pass_record_and_transition_to_before_callbacks - observer = new_observer(@model) do - def before_transition(*args) - notifications << args - end - end - instance = observer.instance - - @transition.perform - assert_equal [[@record, @transition]], instance.notifications + + def test_should_only_include_records_with_state_in_singular_with_scope + parked = @model.create :state => 'parked' + @model.create :state => 'idling' + + assert_equal [parked], @model.with_state(:parked).to_a end - - def test_should_pass_record_and_transition_to_after_callbacks - observer = new_observer(@model) do - def after_transition(*args) - notifications << args - end - end - instance = observer.instance - - @transition.perform - assert_equal [[@record, @transition]], instance.notifications + + def test_should_create_plural_with_scope + assert @model.respond_to?(:with_states) end - - def test_should_call_methods_outside_the_context_of_the_record - observer = new_observer(@model) do - def before_ignite(*args) - notifications << self - end - end - instance = observer.instance - - @transition.perform - assert_equal [instance], instance.notifications + + def test_should_only_include_records_with_states_in_plural_with_scope + parked = @model.create :state => 'parked' + idling = @model.create :state => 'idling' + + assert_equal [parked, idling], @model.with_states(:parked, :idling).to_a end - - def test_should_continue_to_handle_non_state_machine_callbacks - observer = new_observer(@model) do - def before_save(object) - notifications << [:before_save, object] - end - - def before_ignite(*args) - notifications << :before_ignite - end - end - - instance = observer.instance - - @transition.perform - assert_equal [:before_ignite, [:before_save, @record]], instance.notifications - end - - def test_should_support_nil_from_states - callbacks = [ - :before_ignite_from_nil_to_idling, - :before_ignite_from_nil, - :before_transition_state_from_nil_to_idling, - :before_transition_state_from_nil - ] - - observer = new_observer(@model) do - callbacks.each do |callback| - define_method(callback) do |*args| - notifications << callback - end - end - end - - instance = observer.instance - - transition = StateMachine::Transition.new(@record, @machine, :ignite, nil, :idling) - transition.perform - assert_equal callbacks, instance.notifications - end - - def test_should_support_nil_to_states - callbacks = [ - :before_ignite_from_parked_to_nil, - :before_ignite_to_nil, - :before_transition_state_from_parked_to_nil, - :before_transition_state_to_nil - ] - - observer = new_observer(@model) do - callbacks.each do |callback| - define_method(callback) do |*args| - notifications << callback - end - end - end - - instance = observer.instance - - transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, nil) - transition.perform - assert_equal callbacks, instance.notifications + + def test_should_allow_lookup_by_string_name + parked = @model.create :state => 'parked' + idling = @model.create :state => 'idling' + + assert_equal [parked, idling], @model.with_states('parked', 'idling').to_a + end + + def test_should_create_singular_without_scope + assert @model.respond_to?(:without_state) + end + + def test_should_only_include_records_without_state_in_singular_without_scope + parked = @model.create :state => 'parked' + idling = @model.create :state => 'idling' + + assert_equal [parked], @model.without_state(:idling).to_a + end + + def test_should_create_plural_without_scope + assert @model.respond_to?(:without_states) + end + + def test_should_only_include_records_without_states_in_plural_without_scope + parked = @model.create :state => 'parked' + idling = @model.create :state => 'idling' + first_gear = @model.create :state => 'first_gear' + + assert_equal [parked, idling], @model.without_states(:first_gear).to_a + end + + def test_should_allow_chaining_scopes + parked = @model.create :state => 'parked' + idling = @model.create :state => 'idling' + + assert_equal [idling], @model.without_state(:parked).with_state(:idling).to_a end end - - class MachineWithNamespacedObserversTest < BaseTestCase + + class MachineWithScopesAndOwnerSubclassTest < BaseTestCase def setup @model = new_model - @machine = StateMachine::Machine.new(@model, :state, :namespace => 'alarm') - @machine.state :active, :off - @machine.event :enable - @record = @model.new(:state => 'off') - @transition = StateMachine::Transition.new(@record, @machine, :enable, :off, :active) - end - - def test_should_call_namespaced_before_event_method - observer = new_observer(@model) do - def before_enable_alarm(*args) - notifications << args - end - end - instance = observer.instance - - @transition.perform - assert_equal [[@record, @transition]], instance.notifications + @machine = StateMachine::Machine.new(@model, :state) + + @subclass = Class.new(@model) + @subclass_machine = @subclass.state_machine(:state) {} + @subclass_machine.state :parked, :idling, :first_gear end - - def test_should_call_namespaced_after_event_method - observer = new_observer(@model) do - def after_enable_alarm(*args) - notifications << args - end - end - instance = observer.instance - - @transition.perform - assert_equal [[@record, @transition]], instance.notifications + + def test_should_only_include_records_with_subclass_states_in_with_scope + parked = @subclass.create :state => 'parked' + idling = @subclass.create :state => 'idling' + + assert_equal [parked, idling], @subclass.with_states(:parked, :idling).to_a + end + + def test_should_only_include_records_without_subclass_states_in_without_scope + parked = @subclass.create :state => 'parked' + idling = @subclass.create :state => 'idling' + first_gear = @subclass.create :state => 'first_gear' + + assert_equal [parked, idling], @subclass.without_states(:first_gear).to_a end end - - class MachineWithFailureCallbacksTest < BaseTestCase + + class MachineWithComplexPluralizationScopesTest < BaseTestCase def setup @model = new_model - @machine = StateMachine::Machine.new(@model) - @machine.state :parked, :idling - @machine.event :ignite - @record = @model.new(:state => 'parked') - @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling) - - @notifications = [] - - # Create callbacks - @machine.before_transition {false} - @machine.after_failure {@notifications << :callback_after_failure} - - # Create observer callbacks - observer = new_observer(@model) do - def after_failure_to_ignite(*args) - notifications << :observer_after_failure_ignite - end - - def after_failure_to_transition(*args) - notifications << :observer_after_failure_transition - end - end - instance = observer.instance - instance.notifications = @notifications - - @transition.perform + @machine = StateMachine::Machine.new(@model, :status) end - - def test_should_invoke_callbacks_in_specific_order - expected = [ - :callback_after_failure, - :observer_after_failure_ignite, - :observer_after_failure_transition - ] - - assert_equal expected, @notifications + + def test_should_create_singular_with_scope + assert @model.respond_to?(:with_status) + end + + def test_should_create_plural_with_scope + assert @model.respond_to?(:with_statuses) end end - - class MachineWithMixedCallbacksTest < BaseTestCase + + class MachineWithScopesAndJoinsTest < BaseTestCase def setup - @model = new_model - @machine = StateMachine::Machine.new(@model) - @machine.state :parked, :idling - @machine.event :ignite - @record = @model.new(:state => 'parked') - @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling) - - @notifications = [] - - # Create callbacks - @machine.before_transition {@notifications << :callback_before_transition} - @machine.after_transition {@notifications << :callback_after_transition} - @machine.around_transition do |block| - @notifications << :callback_around_before_transition - block.call - @notifications << :callback_arond_after_transition - end - - # Create observer callbacks - observer = new_observer(@model) do - def before_ignite(*args) - notifications << :observer_before_ignite - end - - def before_transition(*args) - notifications << :observer_before_transition - end - - def after_ignite(*args) - notifications << :observer_after_ignite - end - - def after_transition(*args) - notifications << :observer_after_transition - end + @company = new_model(:company) + ActiveRecordTest.const_set('Company', @company) + + @vehicle = new_model(:vehicle) do + connection.add_column table_name, :company_id, :integer + belongs_to :company, :class_name => 'ActiveRecordTest::Company' end - instance = observer.instance - instance.notifications = @notifications - - @transition.perform + ActiveRecordTest.const_set('Vehicle', @vehicle) + + @company_machine = StateMachine::Machine.new(@company, :initial => :active) + @vehicle_machine = StateMachine::Machine.new(@vehicle, :initial => :parked) + @vehicle_machine.state :idling + + @ford = @company.create + @mustang = @vehicle.create(:company => @ford) end - - def test_should_invoke_callbacks_in_specific_order - expected = [ - :callback_before_transition, - :callback_around_before_transition, - :observer_before_ignite, - :observer_before_transition, - :callback_arond_after_transition, - :callback_after_transition, - :observer_after_ignite, - :observer_after_transition - ] - - assert_equal expected, @notifications + + def test_should_find_records_in_with_scope + assert_equal [@mustang], @vehicle.with_states(:parked).joins(:company).where("#{@company.table_name}.state = ?", 'active').to_a end - end - - if ActiveRecord.const_defined?(:NamedScope) - class MachineWithScopesTest < BaseTestCase - def setup - @model = new_model - @machine = StateMachine::Machine.new(@model) - @machine.state :parked, :first_gear - @machine.state :idling, :value => lambda {'idling'} - end - - def test_should_create_singular_with_scope - assert @model.respond_to?(:with_state) - end - - def test_should_only_include_records_with_state_in_singular_with_scope - parked = @model.create :state => 'parked' - @model.create :state => 'idling' - - assert_equal [parked], @model.with_state(:parked).find(:all) - end - - def test_should_create_plural_with_scope - assert @model.respond_to?(:with_states) - end - - def test_should_only_include_records_with_states_in_plural_with_scope - parked = @model.create :state => 'parked' - idling = @model.create :state => 'idling' - - assert_equal [parked, idling], @model.with_states(:parked, :idling).find(:all) - end - - def test_should_allow_lookup_by_string_name - parked = @model.create :state => 'parked' - idling = @model.create :state => 'idling' - - assert_equal [parked, idling], @model.with_states('parked', 'idling').find(:all) - end - - def test_should_create_singular_without_scope - assert @model.respond_to?(:without_state) - end - - def test_should_only_include_records_without_state_in_singular_without_scope - parked = @model.create :state => 'parked' - idling = @model.create :state => 'idling' - - assert_equal [parked], @model.without_state(:idling).find(:all) - end - - def test_should_create_plural_without_scope - assert @model.respond_to?(:without_states) - end - - def test_should_only_include_records_without_states_in_plural_without_scope - parked = @model.create :state => 'parked' - idling = @model.create :state => 'idling' - first_gear = @model.create :state => 'first_gear' - - assert_equal [parked, idling], @model.without_states(:first_gear).find(:all) - end - - def test_should_allow_chaining_scopes - parked = @model.create :state => 'parked' - idling = @model.create :state => 'idling' - - assert_equal [idling], @model.without_state(:parked).with_state(:idling).find(:all) - end - end - - class MachineWithScopesAndOwnerSubclassTest < BaseTestCase - def setup - @model = new_model - @machine = StateMachine::Machine.new(@model, :state) - - @subclass = Class.new(@model) - @subclass_machine = @subclass.state_machine(:state) {} - @subclass_machine.state :parked, :idling, :first_gear - end - - def test_should_only_include_records_with_subclass_states_in_with_scope - parked = @subclass.create :state => 'parked' - idling = @subclass.create :state => 'idling' - - assert_equal [parked, idling], @subclass.with_states(:parked, :idling).find(:all) - end - - def test_should_only_include_records_without_subclass_states_in_without_scope - parked = @subclass.create :state => 'parked' - idling = @subclass.create :state => 'idling' - first_gear = @subclass.create :state => 'first_gear' - - assert_equal [parked, idling], @subclass.without_states(:first_gear).find(:all) - end - end - - class MachineWithComplexPluralizationScopesTest < BaseTestCase - def setup - @model = new_model - @machine = StateMachine::Machine.new(@model, :status) - end - - def test_should_create_singular_with_scope - assert @model.respond_to?(:with_status) - end - - def test_should_create_plural_with_scope - assert @model.respond_to?(:with_statuses) - end + + def test_should_find_records_in_without_scope + assert_equal [@mustang], @vehicle.without_states(:idling).joins(:company).where("#{@company.table_name}.state = ?", 'active').to_a end - - class MachineWithScopesAndJoinsTest < BaseTestCase - def setup - @company = new_model(:company) - ActiveRecordTest.const_set('Company', @company) - - @vehicle = new_model(:vehicle) do - connection.add_column table_name, :company_id, :integer - belongs_to :company, :class_name => 'ActiveRecordTest::Company' - end - ActiveRecordTest.const_set('Vehicle', @vehicle) - - @company_machine = StateMachine::Machine.new(@company, :initial => :active) - @vehicle_machine = StateMachine::Machine.new(@vehicle, :initial => :parked) - @vehicle_machine.state :idling - - @ford = @company.create - @mustang = @vehicle.create(:company => @ford) - end - - def test_should_find_records_in_with_scope - assert_equal [@mustang], @vehicle.with_states(:parked).find(:all, :joins => :company, :conditions => "#{@company.table_name}.state = \"active\"") - end - - def test_should_find_records_in_without_scope - assert_equal [@mustang], @vehicle.without_states(:idling).find(:all, :joins => :company, :conditions => "#{@company.table_name}.state = \"active\"") - end - - def teardown - ActiveRecordTest.class_eval do - remove_const('Vehicle') - remove_const('Company') - end - ActiveSupport::Dependencies.clear if defined?(ActiveSupport::Dependencies) - super + + def teardown + ActiveRecordTest.class_eval do + remove_const('Vehicle') + remove_const('Company') end + super end - else - $stderr.puts 'Skipping ActiveRecord Scope tests.' end - + if ActiveRecord.const_defined?(:Relation) class MachineWithDefaultScope < BaseTestCase def setup @model = new_model @machine = StateMachine::Machine.new(@model, :initial => :parked) @machine.state :idling - + @model.class_eval do default_scope { with_state(:parked, :idling) } end end - + def test_should_set_initial_state_on_created_object object = @model.new assert_equal 'parked', object.state @@ -2349,197 +1972,197 @@ def test_should_set_initial_state_on_created_object else $stderr.puts 'Skipping ActiveRecord Default Scope tests.' end - + if Object.const_defined?(:I18n) class MachineWithInternationalizationTest < BaseTestCase def setup I18n.backend = I18n::Backend::Simple.new - + # Initialize the backend StateMachine::Machine.new(new_model) I18n.backend.translate(:en, 'activerecord.errors.messages.invalid_transition', :event => 'ignite', :value => 'idling') - + @model = new_model end - + def test_should_use_defaults I18n.backend.store_translations(:en, { :activerecord => {:errors => {:messages => {:invalid_transition => "cannot #{interpolation_key('event')}"}}} }) - + machine = StateMachine::Machine.new(@model) machine.state :parked, :idling machine.event :ignite - + record = @model.new(:state => 'idling') - + machine.invalidate(record, :state, :invalid_transition, [[:event, 'ignite']]) assert_equal ['State cannot ignite'], record.errors.full_messages end - + def test_should_allow_customized_error_key I18n.backend.store_translations(:en, { :activerecord => {:errors => {:messages => {:bad_transition => "cannot #{interpolation_key('event')}"}}} }) - + machine = StateMachine::Machine.new(@model, :messages => {:invalid_transition => :bad_transition}) machine.state :parked, :idling - + record = @model.new(:state => 'idling') - + machine.invalidate(record, :state, :invalid_transition, [[:event, 'ignite']]) assert_equal ['State cannot ignite'], record.errors.full_messages end - + def test_should_allow_customized_error_string machine = StateMachine::Machine.new(@model, :messages => {:invalid_transition => "cannot #{interpolation_key('event')}"}) machine.state :parked, :idling - + record = @model.new(:state => 'idling') - + machine.invalidate(record, :state, :invalid_transition, [[:event, 'ignite']]) assert_equal ['State cannot ignite'], record.errors.full_messages end - + def test_should_allow_customized_state_key_scoped_to_class_and_machine I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:'active_record_test/foo' => {:state => {:states => {:parked => 'shutdown'}}}}} }) - + machine = StateMachine::Machine.new(@model) machine.state :parked - + assert_equal 'shutdown', machine.state(:parked).human_name end - + def test_should_allow_customized_state_key_scoped_to_class I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:'active_record_test/foo' => {:states => {:parked => 'shutdown'}}}} }) - + machine = StateMachine::Machine.new(@model) machine.state :parked - + assert_equal 'shutdown', machine.state(:parked).human_name end - + def test_should_allow_customized_state_key_scoped_to_machine I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:state => {:states => {:parked => 'shutdown'}}}} }) - + machine = StateMachine::Machine.new(@model) machine.state :parked - + assert_equal 'shutdown', machine.state(:parked).human_name end - + def test_should_allow_customized_state_key_unscoped I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:states => {:parked => 'shutdown'}}} }) - + machine = StateMachine::Machine.new(@model) machine.state :parked - + assert_equal 'shutdown', machine.state(:parked).human_name end - + def test_should_support_nil_state_key I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:states => {:nil => 'empty'}}} }) - + machine = StateMachine::Machine.new(@model) - + assert_equal 'empty', machine.state(nil).human_name end - + def test_should_allow_customized_event_key_scoped_to_class_and_machine I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:'active_record_test/foo' => {:state => {:events => {:park => 'stop'}}}}} }) - + machine = StateMachine::Machine.new(@model) machine.event :park - + assert_equal 'stop', machine.event(:park).human_name end - + def test_should_allow_customized_event_key_scoped_to_class I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:'active_record_test/foo' => {:events => {:park => 'stop'}}}} }) - + machine = StateMachine::Machine.new(@model) machine.event :park - + assert_equal 'stop', machine.event(:park).human_name end - + def test_should_allow_customized_event_key_scoped_to_machine I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:state => {:events => {:park => 'stop'}}}} }) - + machine = StateMachine::Machine.new(@model) machine.event :park - + assert_equal 'stop', machine.event(:park).human_name end - + def test_should_allow_customized_event_key_unscoped I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:events => {:park => 'stop'}}} }) - + machine = StateMachine::Machine.new(@model) machine.event :park - + assert_equal 'stop', machine.event(:park).human_name end - + def test_should_only_add_locale_once_in_load_path assert_equal 1, I18n.load_path.select {|path| path =~ %r{active_record/locale\.rb$}}.length - + # Create another ActiveRecord model that will triger the i18n feature new_model - + assert_equal 1, I18n.load_path.select {|path| path =~ %r{active_record/locale\.rb$}}.length end - + def test_should_add_locale_to_beginning_of_load_path @original_load_path = I18n.load_path I18n.backend = I18n::Backend::Simple.new - + app_locale = File.dirname(__FILE__) + '/../../files/en.yml' default_locale = File.dirname(__FILE__) + '/../../../lib/state_machine/integrations/active_record/locale.rb' I18n.load_path = [app_locale] - + StateMachine::Machine.new(@model) - + assert_equal [default_locale, app_locale].map {|path| File.expand_path(path)}, I18n.load_path.map {|path| File.expand_path(path)} ensure I18n.load_path = @original_load_path end - + def test_should_prefer_other_locales_first @original_load_path = I18n.load_path I18n.backend = I18n::Backend::Simple.new I18n.load_path = [File.dirname(__FILE__) + '/../../files/en.yml'] - + machine = StateMachine::Machine.new(@model) machine.state :parked, :idling machine.event :ignite - + record = @model.new(:state => 'idling') - + machine.invalidate(record, :state, :invalid_transition, [[:event, 'ignite']]) assert_equal ['State cannot transition'], record.errors.full_messages ensure I18n.load_path = @original_load_path end - + private def interpolation_key(key) !defined?(I18n::VERSION) || I18n::VERSION < '0.4.0' ? "{{#{key}}}" : "%{#{key}}" diff --git a/test/unit/machine_test.rb b/test/unit/machine_test.rb index 08aba050..3b1af709 100644 --- a/test/unit/machine_test.rb +++ b/test/unit/machine_test.rb @@ -2264,7 +2264,12 @@ def test_should_return_referenced_states_for_blacklist_matcher def test_should_not_allow_configurations exception = assert_raise(ArgumentError) { @machine.state(StateMachine::BlacklistMatcher.new([:parked]), :human_name => 'Parked') } - assert_equal 'Cannot configure states when using matchers (using {:human_name=>"Parked"})', exception.message + + if RUBY_VERSION < "3.4" + assert_equal 'Cannot configure states when using matchers (using {:human_name=>"Parked"})', exception.message + else + assert_equal 'Cannot configure states when using matchers (using {human_name: "Parked"})', exception.message + end end def test_should_track_referenced_states @@ -2406,7 +2411,12 @@ def test_should_return_referenced_events_for_blacklist_matcher def test_should_not_allow_configurations exception = assert_raise(ArgumentError) { @machine.event(StateMachine::BlacklistMatcher.new([:park]), :human_name => 'Park') } - assert_equal 'Cannot configure events when using matchers (using {:human_name=>"Park"})', exception.message + + if RUBY_VERSION < "3.4" + assert_equal 'Cannot configure events when using matchers (using {:human_name=>"Park"})', exception.message + else + assert_equal 'Cannot configure events when using matchers (using {human_name: "Park"})', exception.message + end end def test_should_track_referenced_events