state_objects 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/CHANGELOG.md +3 -0
- data/DOTrvmrc +21 -0
- data/README.md +4 -0
- data/Rakefile +9 -0
- data/lib/state_objects/base.rb +5 -1
- data/lib/state_objects/model_additions.rb +1 -1
- data/lib/state_objects/version.rb +1 -1
- data/state_objects.gemspec +3 -3
- data/test/{state_objects_methods_test.rb → methods_test.rb} +1 -1
- data/test/{state_objects_exeptions_test.rb → missing_event_ex_test.rb} +6 -6
- data/test/state_object_values_class_test.rb +29 -0
- data/test/state_object_values_test.rb +38 -0
- metadata +11 -6
    
        data/.gitignore
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/DOTrvmrc
    ADDED
    
    | @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            #!/usr/bin/env bash
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ruby_string="ruby-1.9.3-p194"
         | 
| 4 | 
            +
            gemset_name="state-objects"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            if rvm list strings | grep -q "${ruby_string}" ; then
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              # Load or create the specified environment
         | 
| 9 | 
            +
              if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
         | 
| 10 | 
            +
                && -s "${rvm_path:-$HOME/.rvm}/environments/${ruby_string}@${gemset_name}" ]] ; then
         | 
| 11 | 
            +
                \. "${rvm_path:-$HOME/.rvm}/environments/${ruby_string}@${gemset_name}"
         | 
| 12 | 
            +
              else
         | 
| 13 | 
            +
                rvm --create  "${ruby_string}@${gemset_name}"
         | 
| 14 | 
            +
              fi
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            else
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              # Notify the user to install the desired interpreter before proceeding.
         | 
| 19 | 
            +
              echo "${ruby_string} was not found, please run 'rvm install ${ruby_string}' and then cd back into the project directory."
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            fi
         | 
    
        data/README.md
    CHANGED
    
    | @@ -120,6 +120,7 @@ adds the following INSTANCE METHODS to WalkLight | |
| 120 120 |  | 
| 121 121 | 
             
            ### Example #4:  adding scope with _occurs
         | 
| 122 122 | 
             
            It's now easy to add scopes with using _occurs, which will generate your where statement for you.
         | 
| 123 | 
            +
             | 
| 123 124 | 
             
                scope :red,   where(WalkLight.color_state_red_occurs )     # => "(color_state ='R')"
         | 
| 124 125 | 
             
                scope :green, where(WalkLight.color_state_green_occurs )   # => "(color_state ='G')"   
         | 
| 125 126 |  | 
| @@ -130,3 +131,6 @@ It's now easy to add scopes with using _occurs, which will generate your where s | |
| 130 131 | 
             
            3. Commit your changes (`git commit -am 'Add some feature'`)
         | 
| 131 132 | 
             
            4. Push to the branch (`git push origin my-new-feature`)
         | 
| 132 133 | 
             
            5. Create new Pull Request
         | 
| 134 | 
            +
             | 
| 135 | 
            +
            ## Thanks To
         | 
| 136 | 
            +
            * Scott Baron - for helping with the unit tests.
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/lib/state_objects/base.rb
    CHANGED
    
    | @@ -5,7 +5,11 @@ module StateObjects | |
| 5 5 | 
             
                  @model = model               
         | 
| 6 6 | 
             
                end
         | 
| 7 7 |  | 
| 8 | 
            -
                def self.state_object_values(*opts)  # :nodoc:
         | 
| 8 | 
            +
                def self.state_object_values(*opts)  # :nodoc:          
         | 
| 9 | 
            +
                  unless opts.size == 3
         | 
| 10 | 
            +
                    raise @model.to_s + "#state_object_values Must have 3 arguments: symbol, db_value, label.  For Example: state_object_values :red,'R','Dont Walk'"
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                  
         | 
| 9 13 | 
             
                  class_eval <<-EOF
         | 
| 10 14 | 
             
                    def self.symbol
         | 
| 11 15 | 
             
                      '#{opts[0]}'.to_sym
         | 
| @@ -69,7 +69,7 @@ module StateObjects | |
| 69 69 | 
             
                  opts.each do |option_klass|
         | 
| 70 70 | 
             
                    [:symbol, :label, :db_value].each do |required_method|
         | 
| 71 71 | 
             
                      unless option_klass.respond_to?(required_method) 
         | 
| 72 | 
            -
                        raise "Invalid State class ["+ option_klass.to_s + "]. Must implement a class method named: ##{required_method}.   | 
| 72 | 
            +
                        raise "Invalid State class ["+ option_klass.to_s + "]. Must implement a class method named: ##{required_method}.  Use #state_object_values to setup StateObject"
         | 
| 73 73 | 
             
                      end          
         | 
| 74 74 | 
             
                    end
         | 
| 75 75 |  | 
    
        data/state_objects.gemspec
    CHANGED
    
    | @@ -20,8 +20,8 @@ Gem::Specification.new do |gem| | |
| 20 20 |  | 
| 21 21 | 
             
              # gem.add_development_dependency "supermodel" # TODO  
         | 
| 22 22 | 
             
              # gem.add_development_dependency "activerecord"
         | 
| 23 | 
            -
              gem.add_development_dependency  | 
| 24 | 
            -
              gem.add_development_dependency  | 
| 25 | 
            -
              gem.add_runtime_dependency      | 
| 23 | 
            +
              gem.add_development_dependency 'supermodel'
         | 
| 24 | 
            +
              gem.add_development_dependency 'rspec-given'
         | 
| 25 | 
            +
              gem.add_runtime_dependency     'activerecord'
         | 
| 26 26 |  | 
| 27 27 | 
             
            end
         | 
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            ## ruby -Itest -Ilib test/ | 
| 1 | 
            +
            ## ruby -Itest -Ilib test/missing_event_ex_test.rb
         | 
| 2 2 | 
             
            require 'test_helper'
         | 
| 3 3 |  | 
| 4 4 | 
             
            #
         | 
| @@ -9,7 +9,7 @@ class LightGreenState  < StateObjects::Base | |
| 9 9 | 
             
              state_object_values :green, 'G', 'Walk' 
         | 
| 10 10 | 
             
            end        
         | 
| 11 11 |  | 
| 12 | 
            -
            class  | 
| 12 | 
            +
            class MissingEventExModelUnderTest < SuperModel::Base
         | 
| 13 13 | 
             
              extend StateObjects::ModelAdditions
         | 
| 14 14 | 
             
              state_objects :color_state,
         | 
| 15 15 | 
             
                 LightGreenState
         | 
| @@ -27,15 +27,15 @@ class ModelUnderTest < SuperModel::Base | |
| 27 27 |  | 
| 28 28 | 
             
            end
         | 
| 29 29 |  | 
| 30 | 
            -
            class  | 
| 30 | 
            +
            class MissingEventExTest < Test::Unit::TestCase
         | 
| 31 31 | 
             
              def setup
         | 
| 32 | 
            -
                @model  =  | 
| 32 | 
            +
                @model  = MissingEventExModelUnderTest
         | 
| 33 33 | 
             
              end
         | 
| 34 34 |  | 
| 35 35 | 
             
              def test_exception_missing_event
         | 
| 36 | 
            -
                assert_equal RuntimeError,  | 
| 36 | 
            +
                assert_equal RuntimeError, MissingEventExModelUnderTest.exception_missing_event.class
         | 
| 37 37 | 
             
                assert_equal "Invalid state class LightGreenState must implement #missing_event",
         | 
| 38 | 
            -
                               | 
| 38 | 
            +
                              MissingEventExModelUnderTest.exception_missing_event.message
         | 
| 39 39 | 
             
              end 
         | 
| 40 40 |  | 
| 41 41 | 
             
            end
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            ## ruby -Itest -Ilib test/state_object_values_class_test.rb
         | 
| 2 | 
            +
            require 'test_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class StateObjectUnderTest < StateObjects::Base
         | 
| 5 | 
            +
                
         | 
| 6 | 
            +
              begin 
         | 
| 7 | 
            +
                state_object_values :green, 'G'
         | 
| 8 | 
            +
              rescue RuntimeError => ex
         | 
| 9 | 
            +
                @@ex_incomplete_values = ex
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def self.ex_incomplete_values
         | 
| 13 | 
            +
                @@ex_incomplete_values
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            class StateObjectValuesClassTest < Test::Unit::TestCase
         | 
| 19 | 
            +
              def setup
         | 
| 20 | 
            +
                @model  = StateObjectUnderTest
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              def test_ex_incomplete_values
         | 
| 24 | 
            +
                assert_equal RuntimeError, StateObjectUnderTest.ex_incomplete_values.class
         | 
| 25 | 
            +
                assert_equal "#state_object_values Must have 3 arguments: symbol, db_value, label.  For Example: state_object_values :red,'R','Dont Walk'",
         | 
| 26 | 
            +
                              StateObjectUnderTest.ex_incomplete_values.message
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            end
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            ## ruby -Itest -Ilib test/state_object_values_test.rb
         | 
| 2 | 
            +
            require 'test_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # test bad data and exceptions
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
                   
         | 
| 8 | 
            +
            class NoStateObjectValues < StateObjects::Base
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            class ModelUnderTest < SuperModel::Base
         | 
| 12 | 
            +
              extend StateObjects::ModelAdditions
         | 
| 13 | 
            +
                
         | 
| 14 | 
            +
              begin                                             
         | 
| 15 | 
            +
                state_objects :no_state,
         | 
| 16 | 
            +
                   NoStateObjectValues    
         | 
| 17 | 
            +
              rescue RuntimeError => ex
         | 
| 18 | 
            +
                @@ex_no_state_values = ex
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              def self.ex_no_state_values
         | 
| 22 | 
            +
                @@ex_no_state_values
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            class StateObjectValuesTest < Test::Unit::TestCase
         | 
| 28 | 
            +
              def setup
         | 
| 29 | 
            +
                @model  = ModelUnderTest
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              def test_no_state_values
         | 
| 33 | 
            +
                assert_equal RuntimeError, ModelUnderTest.ex_no_state_values.class
         | 
| 34 | 
            +
                assert_equal "Invalid State class [NoStateObjectValues]. Must implement a class method named: #symbol.  Use #state_object_values to setup StateObject",
         | 
| 35 | 
            +
                              ModelUnderTest.ex_no_state_values.message
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: state_objects
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.8
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-12- | 
| 12 | 
            +
            date: 2012-12-09 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: supermodel
         | 
| @@ -70,6 +70,7 @@ extra_rdoc_files: [] | |
| 70 70 | 
             
            files:
         | 
| 71 71 | 
             
            - .gitignore
         | 
| 72 72 | 
             
            - CHANGELOG.md
         | 
| 73 | 
            +
            - DOTrvmrc
         | 
| 73 74 | 
             
            - Gemfile
         | 
| 74 75 | 
             
            - LICENSE.txt
         | 
| 75 76 | 
             
            - README.md
         | 
| @@ -79,8 +80,10 @@ files: | |
| 79 80 | 
             
            - lib/state_objects/model_additions.rb
         | 
| 80 81 | 
             
            - lib/state_objects/version.rb
         | 
| 81 82 | 
             
            - state_objects.gemspec
         | 
| 82 | 
            -
            - test/ | 
| 83 | 
            -
            - test/ | 
| 83 | 
            +
            - test/methods_test.rb
         | 
| 84 | 
            +
            - test/missing_event_ex_test.rb
         | 
| 85 | 
            +
            - test/state_object_values_class_test.rb
         | 
| 86 | 
            +
            - test/state_object_values_test.rb
         | 
| 84 87 | 
             
            - test/test_helper.rb
         | 
| 85 88 | 
             
            homepage: https://github.com/mwindholtz/state_objects
         | 
| 86 89 | 
             
            licenses: []
         | 
| @@ -107,6 +110,8 @@ signing_key: | |
| 107 110 | 
             
            specification_version: 3
         | 
| 108 111 | 
             
            summary: ! '''State'' Design Pattern from the Gang of Four book'
         | 
| 109 112 | 
             
            test_files:
         | 
| 110 | 
            -
            - test/ | 
| 111 | 
            -
            - test/ | 
| 113 | 
            +
            - test/methods_test.rb
         | 
| 114 | 
            +
            - test/missing_event_ex_test.rb
         | 
| 115 | 
            +
            - test/state_object_values_class_test.rb
         | 
| 116 | 
            +
            - test/state_object_values_test.rb
         | 
| 112 117 | 
             
            - test/test_helper.rb
         |