active_mocker 1.3.2 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.travis.yml +1 -1
 - data/README.md +136 -24
 - data/Rakefile +8 -2
 - data/active_mocker.gemspec +3 -3
 - data/lib/active_mock/association.rb +7 -0
 - data/lib/active_mock/base.rb +250 -0
 - data/lib/active_mock/collection.rb +52 -0
 - data/lib/active_mock/creators.rb +25 -0
 - data/lib/active_mock/do_nothing_active_record_methods.rb +51 -0
 - data/lib/active_mock/has_and_belongs_to_many.rb +7 -0
 - data/lib/active_mock/has_many.rb +54 -0
 - data/lib/active_mock/next_id.rb +16 -0
 - data/lib/active_mock/object_inspect.rb +39 -0
 - data/lib/{active_mocker/collection → active_mock}/queries.rb +26 -19
 - data/lib/active_mock/records.rb +81 -0
 - data/lib/active_mock/relation.rb +8 -0
 - data/lib/active_mocker.rb +3 -1
 - data/lib/active_mocker/active_mock.rb +26 -0
 - data/lib/active_mocker/active_record.rb +18 -0
 - data/lib/active_mocker/active_record/relationships.rb +57 -6
 - data/lib/active_mocker/active_record/schema.rb +1 -1
 - data/lib/active_mocker/active_record/scope.rb +1 -1
 - data/lib/active_mocker/active_record/unknown_class_method.rb +1 -1
 - data/lib/active_mocker/active_record/unknown_module.rb +10 -9
 - data/lib/active_mocker/db_to_ruby_type.rb +26 -0
 - data/lib/active_mocker/field.rb +16 -8
 - data/lib/active_mocker/generate.rb +19 -174
 - data/lib/active_mocker/loaded_mocks.rb +48 -8
 - data/lib/active_mocker/logger.rb +2 -0
 - data/lib/active_mocker/mock_template.erb +123 -53
 - data/lib/active_mocker/model_reader.rb +42 -13
 - data/lib/active_mocker/model_schema.rb +279 -0
 - data/lib/active_mocker/model_schema/generate.rb +175 -0
 - data/lib/active_mocker/reparameterize.rb +23 -3
 - data/lib/active_mocker/table.rb +2 -2
 - data/lib/active_mocker/version.rb +1 -1
 - data/sample_app_rails_4/Gemfile +1 -1
 - data/sample_app_rails_4/app/models/micropost.rb +13 -1
 - data/sample_app_rails_4/db/schema.rb +1 -1
 - data/sample_app_rails_4/spec/compare_mocker_and_record_spec.rb +194 -7
 - data/sample_app_rails_4/spec/micropost_mock_spec.rb +145 -0
 - data/sample_app_rails_4/spec/mocks/micropost_mock.rb +81 -55
 - data/sample_app_rails_4/spec/mocks/relationship_mock.rb +85 -54
 - data/sample_app_rails_4/spec/mocks/user_mock.rb +71 -72
 - data/sample_app_rails_4/spec/reload_spec.rb +1 -1
 - data/sample_app_rails_4/spec/user_mock_spec.rb +25 -7
 - data/spec/lib/acitve_mock/queriable_spec.rb +207 -0
 - data/spec/lib/active_mocker/db_to_ruby_type_spec.rb +124 -0
 - data/spec/lib/active_mocker/loaded_mocks_spec.rb +167 -0
 - data/spec/lib/active_mocker/logger_spec.rb +32 -0
 - data/spec/lib/active_mocker/model_reader_spec.rb +79 -28
 - data/spec/lib/active_mocker/model_schema/generate_spec.rb +111 -0
 - data/spec/lib/active_mocker/model_schema_spec.rb +145 -0
 - data/spec/lib/model.rb +2 -1
 - data/spec/lib/reparameterize_spec.rb +202 -0
 - data/spec/unit_logger.rb +2 -2
 - metadata +55 -35
 - data/lib/active_hash/ar_api.rb +0 -77
 - data/lib/active_hash/init.rb +0 -32
 - data/lib/active_mocker/collection/association.rb +0 -12
 - data/lib/active_mocker/collection/base.rb +0 -65
 - data/lib/active_mocker/collection/relation.rb +0 -11
 - data/lib/active_mocker/mock_class_methods.rb +0 -92
 - data/lib/active_mocker/mock_instance_methods.rb +0 -84
 - data/lib/active_mocker/mock_requires.rb +0 -10
 - data/spec/lib/active_mocker/collection.rb +0 -94
 
| 
         @@ -1,84 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module ActiveMocker
         
     | 
| 
       2 
     | 
    
         
            -
            module MockInstanceMethods
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              def mock_instance_method(method, &block)
         
     | 
| 
       6 
     | 
    
         
            -
                model_instance_methods[method] = block
         
     | 
| 
       7 
     | 
    
         
            -
              end
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def inspect
         
     | 
| 
       10 
     | 
    
         
            -
                inspection =  self.class.column_names.map { |name|
         
     | 
| 
       11 
     | 
    
         
            -
                  "#{name}: #{attribute_for_inspect(name)}"
         
     | 
| 
       12 
     | 
    
         
            -
                }.compact.join(", ")
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                "#<#{self.class} #{inspection}>"
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              def attribute_for_inspect(attr_name)
         
     | 
| 
       18 
     | 
    
         
            -
                value = self.attributes[attr_name]
         
     | 
| 
       19 
     | 
    
         
            -
                if value.is_a?(String) && value.length > 50
         
     | 
| 
       20 
     | 
    
         
            -
                  "#{value[0, 50]}...".inspect
         
     | 
| 
       21 
     | 
    
         
            -
                elsif value.is_a?(Date) || value.is_a?(Time)
         
     | 
| 
       22 
     | 
    
         
            -
                  %("#{value.to_s(:db)}")
         
     | 
| 
       23 
     | 
    
         
            -
                elsif value.is_a?(Array) && value.size > 10
         
     | 
| 
       24 
     | 
    
         
            -
                  inspected = value.first(10).inspect
         
     | 
| 
       25 
     | 
    
         
            -
                  %(#{inspected[0...-1]}, ...])
         
     | 
| 
       26 
     | 
    
         
            -
                else
         
     | 
| 
       27 
     | 
    
         
            -
                  value.inspect
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              def hash
         
     | 
| 
       32 
     | 
    
         
            -
                attributes.hash
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
              def ==(obj)
         
     | 
| 
       36 
     | 
    
         
            -
                return false if obj.nil?
         
     | 
| 
       37 
     | 
    
         
            -
                return hash == obj.attributes.hash if obj.respond_to?(:attributes)
         
     | 
| 
       38 
     | 
    
         
            -
                hash == obj.hash if obj.respond_to?(:hash)
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              private
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
              def read_attribute(attr)
         
     | 
| 
       44 
     | 
    
         
            -
                @attributes[attr]
         
     | 
| 
       45 
     | 
    
         
            -
              end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
              def write_attribute(attr, value)
         
     | 
| 
       48 
     | 
    
         
            -
                @attributes[attr] = value
         
     | 
| 
       49 
     | 
    
         
            -
              end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
              def read_association(attr)
         
     | 
| 
       52 
     | 
    
         
            -
                @associations[attr]
         
     | 
| 
       53 
     | 
    
         
            -
              end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
              def write_association(attr, value)
         
     | 
| 
       56 
     | 
    
         
            -
                @associations[attr] = value
         
     | 
| 
       57 
     | 
    
         
            -
              end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
              def attribute_to_string
         
     | 
| 
       60 
     | 
    
         
            -
                attributes.map {|k, v| "#{k.to_s}: #{v.inspect}"}.join(', ')
         
     | 
| 
       61 
     | 
    
         
            -
              end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
              def delegate_to_model_instance(method, *args)
         
     | 
| 
       64 
     | 
    
         
            -
                self.class.send(:delegate_to_model_instance, method, *args)
         
     | 
| 
       65 
     | 
    
         
            -
              end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
              def delegate_to_model_class(method, *args)
         
     | 
| 
       68 
     | 
    
         
            -
                self.class.send(:delegate_to_model_class, method, *args)
         
     | 
| 
       69 
     | 
    
         
            -
              end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
              def model_instance_methods
         
     | 
| 
       72 
     | 
    
         
            -
                @model_instance_methods ||= self.class.send(:model_instance_methods)
         
     | 
| 
       73 
     | 
    
         
            -
              end
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
              def model_class_methods
         
     | 
| 
       76 
     | 
    
         
            -
                @model_class_methods ||= self.class.send(:model_class_methods)
         
     | 
| 
       77 
     | 
    
         
            -
              end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
              def schema_attributes
         
     | 
| 
       80 
     | 
    
         
            -
                @schema_attributes ||= self.class.send(:attribute_template).dup
         
     | 
| 
       81 
     | 
    
         
            -
              end
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
            end
         
     | 
| 
       84 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,10 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'active_mocker/collection/queries'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'active_mocker/collection/base'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'active_mocker/collection/association'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'active_mocker/mock_class_methods'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'active_mocker/mock_instance_methods'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'active_mocker/loaded_mocks'
         
     | 
| 
       7 
     | 
    
         
            -
            require 'active_hash'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'active_hash/ar_api'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'active_mocker/class_exists'
         
     | 
| 
       10 
     | 
    
         
            -
            require 'virtus'
         
     | 
| 
         @@ -1,94 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rspec'
         
     | 
| 
       2 
     | 
    
         
            -
            $:.unshift File.expand_path('../../', __FILE__)
         
     | 
| 
       3 
     | 
    
         
            -
            require 'active_support/all'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'active_mocker/collection/base'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'active_mocker/collection/queries'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'active_mocker/collection/relation'
         
     | 
| 
       7 
     | 
    
         
            -
            require 'ostruct'
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            describe ActiveMocker::Collection::Relation do
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              subject{described_class.new}
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              describe '#sum' do
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                it 'sum values by attribute name' do
         
     | 
| 
       16 
     | 
    
         
            -
                  subject << [OpenStruct.new(value: 1), OpenStruct.new(value: 1)]
         
     | 
| 
       17 
     | 
    
         
            -
                  expect(subject.sum(:value)).to eq 2
         
     | 
| 
       18 
     | 
    
         
            -
                end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
              describe '#<<' do
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                it 'will add a single item to the array' do
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  subject << "item"
         
     | 
| 
       27 
     | 
    
         
            -
                  expect(subject.count).to eq 1
         
     | 
| 
       28 
     | 
    
         
            -
                  expect(subject.first).to eq 'item'
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                it 'will add a many item to the array' do
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                  subject << ['item1', 'item2', 'item3']
         
     | 
| 
       35 
     | 
    
         
            -
                  expect(subject.count).to eq 3
         
     | 
| 
       36 
     | 
    
         
            -
                  expect(subject).to eq ['item1', 'item2', 'item3']
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
              end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
              describe 'new' do
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                it 'take optional item and adds to collection' do
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                  subject = described_class.new(1)
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                  expect(subject.first).to eq 1
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                it 'can take an array' do
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                  subject = described_class.new([1])
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                  expect(subject.first).to eq 1
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                  subject = described_class.new([1,2])
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                  expect(subject.last).to eq 2
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
                end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
              end
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
              describe 'empty?' do
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                it 'works' do
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                  expect(subject.empty?).to eq true
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                end
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
              end
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
              describe 'each' do
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
                it 'works' do
         
     | 
| 
       79 
     | 
    
         
            -
                  expect(described_class.new([1,2]).each{|a| a + a}).to eq [1, 2]
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                end
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
              end
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
              describe 'map' do
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
                it 'works' do
         
     | 
| 
       88 
     | 
    
         
            -
                  expect(described_class.new([1, 2]).map { |a| a + a }).to eq [2, 4]
         
     | 
| 
       89 
     | 
    
         
            -
                end
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
              end
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
            end
         
     |