mockumentary 0.2.0
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/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +51 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +29 -0
- data/Rakefile +52 -0
- data/VERSION +1 -0
- data/lib/mockumentary/active_record.rb +23 -0
- data/lib/mockumentary/collection.rb +45 -0
- data/lib/mockumentary/data.rb +63 -0
- data/lib/mockumentary/mockery.rb +87 -0
- data/lib/mockumentary/mocksimile.rb +57 -0
- data/lib/mockumentary/model.rb +126 -0
- data/lib/mockumentary.rb +42 -0
- data/mockumentary.gemspec +92 -0
- data/spec/fixtures/app/models/event/follow.rb +3 -0
- data/spec/fixtures/app/models/event.rb +4 -0
- data/spec/fixtures/app/models/event_resource.rb +27 -0
- data/spec/fixtures/app/models/task.rb +2 -0
- data/spec/fixtures/app/models/user.rb +9 -0
- data/spec/fixtures/config/.gitkeep +0 -0
- data/spec/fixtures/db/schema.rb +33 -0
- data/spec/mockery/active_record_spec.rb +51 -0
- data/spec/mockery/collection_spec.rb +96 -0
- data/spec/mockery/data_spec.rb +15 -0
- data/spec/mockery/mockery_spec.rb +302 -0
- data/spec/mockery/mockumentary_spec.rb +24 -0
- data/spec/mockery/spec_helper.rb +31 -0
- data/spec/mocksimile/mocksimile_spec.rb +106 -0
- data/spec/mocksimile/mockumentary_spec.rb +38 -0
- data/spec/mocksimile/spec_helper.rb +18 -0
- metadata +182 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'bundler'
|
6
|
+
require 'rspec'
|
7
|
+
require 'mockumentary'
|
8
|
+
|
9
|
+
Bundler.require(:test)
|
10
|
+
|
11
|
+
# do the activerecord and schema load dance.
|
12
|
+
ActiveRecord::Base.establish_connection(
|
13
|
+
:adapter => 'sqlite3',
|
14
|
+
:database => SQLite3::Database.new("spec/mockery/test.db")
|
15
|
+
)
|
16
|
+
load('fixtures/db/schema.rb')
|
17
|
+
|
18
|
+
unless defined?(Rails)
|
19
|
+
class Rails; end
|
20
|
+
end
|
21
|
+
FIXTURE_ROOT = File.dirname(__FILE__) + "/../fixtures"
|
22
|
+
|
23
|
+
# Requires supporting files with custom matchers and macros, etc,
|
24
|
+
Dir["#{File.dirname(__FILE__)}/../support/**/*.rb"].each {|f| require f}
|
25
|
+
|
26
|
+
# Require fake AR files
|
27
|
+
Dir["#{FIXTURE_ROOT}/app/models/**/*.rb"].each {|f| require f}
|
28
|
+
|
29
|
+
RSpec.configure do |config|
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe Mocksimile do
|
4
|
+
describe '.generate' do
|
5
|
+
before do
|
6
|
+
Mocksimile.generate('User', {
|
7
|
+
:init => {:state => 'new'},
|
8
|
+
:mock => {:full_name => :full_name},
|
9
|
+
:save => {:state => 'saved'},
|
10
|
+
:relationships => {
|
11
|
+
:tasks => 'Task',
|
12
|
+
:activities => 'Event',
|
13
|
+
:activity_references => 'EventResource',
|
14
|
+
:events => 'Event'
|
15
|
+
}
|
16
|
+
})
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should make a nested class' do
|
20
|
+
defined?(Mocksimile::User).should == 'constant'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should set the default init options' do
|
24
|
+
Mocksimile::User.init_defaults.should == {
|
25
|
+
:state => 'new'
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should set the default mock options' do
|
30
|
+
Mocksimile::User.mock_defaults.should == {
|
31
|
+
:full_name => :full_name
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should set the default save options' do
|
36
|
+
Mocksimile::User.save_defaults.should == {
|
37
|
+
:state => 'saved'
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should set the relationships with appropriate lambdas' do
|
42
|
+
Mocksimile::User.relationships.keys.should == [:tasks, :activities, :activity_references, :events]
|
43
|
+
Mocksimile::User.relationships.values.map(&:class).uniq.should == [Proc]
|
44
|
+
Mocksimile::User.relationships[:tasks].call.type.should == Mocksimile::Task
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'usage' do
|
49
|
+
before :all do
|
50
|
+
RAILS_ROOT = FIXTURE_ROOT unless defined?(RAILS_ROOT)
|
51
|
+
Mocksimile.load
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should use the initialization default attributes' do
|
55
|
+
user = Mocksimile::User.new
|
56
|
+
user.new_record.should == true
|
57
|
+
user.state.should == 'new'
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should use the mock default attributes' do
|
61
|
+
user = Mocksimile::User.mock
|
62
|
+
user.new_record.should == true
|
63
|
+
user.state.should == 'new'
|
64
|
+
user.name.should be_a(String)
|
65
|
+
user.full_name.should be_a(String)
|
66
|
+
user.full_name.split.size.should == 2
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'should use the save default attributes' do
|
70
|
+
user = Mocksimile::User.mock!
|
71
|
+
user.new_record.should == false
|
72
|
+
user.state.should == 'saved'
|
73
|
+
user.name.should be_a(String)
|
74
|
+
user.full_name.should be_a(String)
|
75
|
+
user.created_at.should be_a(Time)
|
76
|
+
user.updated_at.should be_a(Time)
|
77
|
+
user.id.should be_a(Integer)
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'relationships work' do
|
81
|
+
user = Mocksimile::User.mock!
|
82
|
+
user.events.mock!
|
83
|
+
user.events.size.should == 1
|
84
|
+
user.events.first.is_a?(Mocksimile::Event)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe '.release' do
|
89
|
+
before :all do
|
90
|
+
Mocksimile.load
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'should move a copy of an individual mocksimile class into the public namespace' do
|
94
|
+
Mocksimile::User.release
|
95
|
+
User.should == Mocksimile::User
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should move all stored classes into the public namespace when called on Mocksimile' do
|
99
|
+
Mocksimile.release
|
100
|
+
Event.should == Mocksimile::Event
|
101
|
+
EventResource.should == Mocksimile::EventResource
|
102
|
+
Task.should == Mocksimile::Task
|
103
|
+
Event::Follow.should == Mocksimile::Event::Follow
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe Mockumentary do
|
4
|
+
before do
|
5
|
+
RAILS_ROOT = FIXTURE_ROOT unless defined?(RAILS_ROOT)
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '.load' do
|
9
|
+
it 'should raise an error if it cannot find the config file' do
|
10
|
+
Object.send(:remove_const, :RAILS_ROOT) if defined?(RAILS_ROOT)
|
11
|
+
lambda { Mockumentary.load }.should raise_error(
|
12
|
+
ArgumentError, "Could not find mockumentary.yml. Please include a path or define RAILS_ROOT"
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should create Mocksimiles for each of the classes, when it finds the file' do
|
17
|
+
Mockumentary.load
|
18
|
+
defined?(Mocksimile::User).should be_true
|
19
|
+
defined?(Mocksimile::Task).should be_true
|
20
|
+
defined?(Mocksimile::Event).should be_true
|
21
|
+
defined?(Mocksimile::EventResource).should be_true
|
22
|
+
defined?(Mocksimile::Event::Follow).should be_true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '.load_and_release' do
|
27
|
+
it 'calls load on itself' do
|
28
|
+
Mockumentary.should_receive(:load)
|
29
|
+
Mockumentary.load_and_release
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'calls release on Mocksimile' do
|
33
|
+
Mockumentary.stub(:load)
|
34
|
+
Mocksimile.should_receive(:release)
|
35
|
+
Mockumentary.load_and_release
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'bundler'
|
6
|
+
require 'rspec'
|
7
|
+
require 'mockumentary'
|
8
|
+
|
9
|
+
FIXTURE_ROOT = File.dirname(__FILE__) + "/../fixtures"
|
10
|
+
|
11
|
+
# Requires supporting files with custom matchers and macros, etc,
|
12
|
+
Dir["#{File.dirname(__FILE__)}/../support/**/*.rb"].each {|f| require f}
|
13
|
+
|
14
|
+
|
15
|
+
RSpec.configure do |config|
|
16
|
+
|
17
|
+
end
|
18
|
+
|
metadata
ADDED
@@ -0,0 +1,182 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mockumentary
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kane Baccigalupi
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-10-28 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: &70359723389700 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.3.5
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70359723389700
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: hashie
|
27
|
+
requirement: &70359723389080 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70359723389080
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: faker
|
38
|
+
requirement: &70359723388380 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70359723388380
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: activerecord
|
49
|
+
requirement: &70359723387680 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.1.1
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70359723387680
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: sqlite3
|
60
|
+
requirement: &70359723387020 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70359723387020
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: &70359723386520 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 2.3.0
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70359723386520
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: bundler
|
82
|
+
requirement: &70359723385900 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 1.0.0
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70359723385900
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: jeweler
|
93
|
+
requirement: &70359723385360 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 1.6.4
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70359723385360
|
102
|
+
description: ! " With the happy proliferation of TDD, test suites are getting massive,
|
103
|
+
and developer efficiency is dwindling\n as we wait for our tests to pass. There
|
104
|
+
is a big tradeoff between making unit test more integrationish (and therefore more
|
105
|
+
reliable) vs.\n making them very mocky, unity and fast. Mockumentary is a library
|
106
|
+
for the later. It inspects the ActiveRecord universe and\n makes a series of
|
107
|
+
AR mockeries that approximate model without hitting the database, or making any
|
108
|
+
assertions. The assertions,\n they are still part of the developers job.\n \n
|
109
|
+
\ Mocumentary has two types of AR mockeries: One is used within the Rails universe.
|
110
|
+
It uses introspection to derive association\n and field information. The second
|
111
|
+
is a static copy built from the first. This static version can be used outside the
|
112
|
+
Rails\n test universe in a suite faster than the speed of Rails environment load
|
113
|
+
time.\n \n Mocking isn't for everyone, so test-drive responsibly.\n"
|
114
|
+
email: baccigalupi@gmail.com
|
115
|
+
executables: []
|
116
|
+
extensions: []
|
117
|
+
extra_rdoc_files:
|
118
|
+
- LICENSE.txt
|
119
|
+
- README.rdoc
|
120
|
+
files:
|
121
|
+
- .document
|
122
|
+
- .rspec
|
123
|
+
- Gemfile
|
124
|
+
- Gemfile.lock
|
125
|
+
- LICENSE.txt
|
126
|
+
- README.rdoc
|
127
|
+
- Rakefile
|
128
|
+
- VERSION
|
129
|
+
- lib/mockumentary.rb
|
130
|
+
- lib/mockumentary/active_record.rb
|
131
|
+
- lib/mockumentary/collection.rb
|
132
|
+
- lib/mockumentary/data.rb
|
133
|
+
- lib/mockumentary/mockery.rb
|
134
|
+
- lib/mockumentary/mocksimile.rb
|
135
|
+
- lib/mockumentary/model.rb
|
136
|
+
- mockumentary.gemspec
|
137
|
+
- spec/fixtures/app/models/event.rb
|
138
|
+
- spec/fixtures/app/models/event/follow.rb
|
139
|
+
- spec/fixtures/app/models/event_resource.rb
|
140
|
+
- spec/fixtures/app/models/task.rb
|
141
|
+
- spec/fixtures/app/models/user.rb
|
142
|
+
- spec/fixtures/config/.gitkeep
|
143
|
+
- spec/fixtures/db/schema.rb
|
144
|
+
- spec/mockery/active_record_spec.rb
|
145
|
+
- spec/mockery/collection_spec.rb
|
146
|
+
- spec/mockery/data_spec.rb
|
147
|
+
- spec/mockery/mockery_spec.rb
|
148
|
+
- spec/mockery/mockumentary_spec.rb
|
149
|
+
- spec/mockery/spec_helper.rb
|
150
|
+
- spec/mocksimile/mocksimile_spec.rb
|
151
|
+
- spec/mocksimile/mockumentary_spec.rb
|
152
|
+
- spec/mocksimile/spec_helper.rb
|
153
|
+
homepage: http://github.com/baccigalupi/mockumentary
|
154
|
+
licenses:
|
155
|
+
- MIT
|
156
|
+
post_install_message:
|
157
|
+
rdoc_options: []
|
158
|
+
require_paths:
|
159
|
+
- lib
|
160
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ! '>='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
segments:
|
167
|
+
- 0
|
168
|
+
hash: -1128638875850480807
|
169
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
requirements: []
|
176
|
+
rubyforge_project:
|
177
|
+
rubygems_version: 1.8.10
|
178
|
+
signing_key:
|
179
|
+
specification_version: 3
|
180
|
+
summary: An ActiveRecord mocking framework, for making your copius BDD rails tests
|
181
|
+
not quite so slow
|
182
|
+
test_files: []
|