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.
@@ -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: []