active_mocker 1.3.2 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|