modelfactory 0.7.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/History.txt +7 -0
- data/License.txt +20 -0
- data/Manifest.txt +15 -0
- data/README.txt +91 -0
- data/Rakefile +20 -0
- data/lib/fixture_converter.rb +97 -0
- data/lib/model_factory.rb +111 -0
- data/lib/model_factory/version.rb +9 -0
- data/script/destroy +14 -0
- data/script/fixtures2factories +18 -0
- data/script/generate +14 -0
- data/script/txt2html +74 -0
- data/setup.rb +1585 -0
- data/test/model_factory_test.rb +139 -0
- data/test/test_helper.rb +12 -0
- metadata +81 -0
@@ -0,0 +1,139 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
# The classes below are rough mocks of ActiveRecord::Base that only handle instantiation.
|
4
|
+
|
5
|
+
# This class has defaults defined.
|
6
|
+
class ModelFactoryTestDef
|
7
|
+
def self.protected_attributes; nil; end
|
8
|
+
def self.accessible_attributes; nil; end
|
9
|
+
|
10
|
+
attr_accessor :id, :nest, :bar, :baz
|
11
|
+
def initialize(opts = {})
|
12
|
+
opts.each do |k,v|
|
13
|
+
self.send("#{k}=", v)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# This class has no defaults defined.
|
19
|
+
class ModelFactoryTestNoDef < ModelFactoryTestDef; end
|
20
|
+
|
21
|
+
# This class has nested defaults defined.
|
22
|
+
class ModelFactoryTestNestDef < ModelFactoryTestDef; end
|
23
|
+
|
24
|
+
# This class has protected attributes.
|
25
|
+
class ModelFactoryTestProtected < ModelFactoryTestDef
|
26
|
+
def self.protected_attributes; [:baz]; end
|
27
|
+
|
28
|
+
def initialize(opts = {})
|
29
|
+
opts = opts.clone
|
30
|
+
opts.delete(:baz) # Simulate a protected attribute.
|
31
|
+
super(opts)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# This class has accessible attributes.
|
36
|
+
class ModelFactoryTestAccessible < ModelFactoryTestDef
|
37
|
+
def self.accessible_attributes; [:id, :nest, 'bar']; end
|
38
|
+
|
39
|
+
def initialize(opts = {})
|
40
|
+
opts = opts.clone
|
41
|
+
opts.delete(:baz) # Simulate a protected attribute.
|
42
|
+
super(opts)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# This is the testfactory class def with test defaults.
|
47
|
+
class ModelFactoryTestFactory
|
48
|
+
extend ModelFactory
|
49
|
+
default ModelFactoryTestDef, { :bar => 'baz' }
|
50
|
+
default ModelFactoryTestNestDef, { :nest => default_model_factory_test_def }
|
51
|
+
end
|
52
|
+
|
53
|
+
class ModelFactoryTest < Test::Unit::TestCase
|
54
|
+
test "protected attributes" do
|
55
|
+
m = ModelFactoryTestFactory.new_model_factory_test_protected(:baz => 4)
|
56
|
+
assert_equal 4, m.baz
|
57
|
+
end
|
58
|
+
|
59
|
+
test "dynamic protected attributes" do
|
60
|
+
i = 1
|
61
|
+
m = ModelFactoryTestFactory.new_model_factory_test_protected(:bar => 3, :baz => lambda { i += 1 } )
|
62
|
+
assert_equal 2, m.baz
|
63
|
+
end
|
64
|
+
|
65
|
+
test "accessible attributes" do
|
66
|
+
m = ModelFactoryTestFactory.new_model_factory_test_accessible(:baz => 4)
|
67
|
+
assert_equal 4, m.baz
|
68
|
+
end
|
69
|
+
|
70
|
+
test "dynamic accessible attributes" do
|
71
|
+
i = 1
|
72
|
+
m = ModelFactoryTestFactory.new_model_factory_test_accessible(:bar => 3, :baz => lambda { i += 1 } )
|
73
|
+
assert_equal 2, m.baz
|
74
|
+
end
|
75
|
+
|
76
|
+
test "new with no arguments and nested defaults" do
|
77
|
+
m = ModelFactoryTestFactory.new_model_factory_test_nest_def
|
78
|
+
assert m.nest.id > 0
|
79
|
+
assert m.id > 0
|
80
|
+
end
|
81
|
+
|
82
|
+
test "new with arguments and nested defaults" do
|
83
|
+
m = ModelFactoryTestFactory.new_model_factory_test_nest_def(:bar => 'foo')
|
84
|
+
assert_equal 'foo', m.bar
|
85
|
+
assert m.nest.id > 0
|
86
|
+
assert m.id > 0
|
87
|
+
end
|
88
|
+
|
89
|
+
test "new with no arguments and explicit defaults" do
|
90
|
+
m = ModelFactoryTestFactory.new_model_factory_test_def
|
91
|
+
assert_equal 'baz', m.bar
|
92
|
+
assert m.id > 0
|
93
|
+
end
|
94
|
+
|
95
|
+
test "new with arguments and explicit defaults" do
|
96
|
+
m = ModelFactoryTestFactory.new_model_factory_test_def(:bar => 'foo')
|
97
|
+
assert_equal 'foo', m.bar
|
98
|
+
assert m.id > 0
|
99
|
+
end
|
100
|
+
|
101
|
+
test "create with arguments and explicit defaults" do
|
102
|
+
instance = ModelFactoryTestDef.new
|
103
|
+
ModelFactoryTestDef.expects(:create!).with(:bar => 'foo').returns(instance)
|
104
|
+
ModelFactoryTestFactory.create_model_factory_test_def(:bar => 'foo')
|
105
|
+
end
|
106
|
+
|
107
|
+
test "create with no arguments and explicit defaults" do
|
108
|
+
instance = ModelFactoryTestDef.new
|
109
|
+
ModelFactoryTestDef.expects(:create!).with(:bar => 'baz').returns(instance)
|
110
|
+
ModelFactoryTestFactory.create_model_factory_test_def
|
111
|
+
end
|
112
|
+
|
113
|
+
test "new with no arguments and no defaults" do
|
114
|
+
instance = ModelFactoryTestNoDef.new
|
115
|
+
ModelFactoryTestNoDef.expects(:new).returns(instance)
|
116
|
+
m = ModelFactoryTestFactory.new_model_factory_test_no_def
|
117
|
+
assert m.id > 0
|
118
|
+
end
|
119
|
+
|
120
|
+
test "new with arguments and no defaults" do
|
121
|
+
instance = ModelFactoryTestNoDef.new
|
122
|
+
ModelFactoryTestNoDef.expects(:new).with(:bar => 'foo').returns(instance)
|
123
|
+
m = ModelFactoryTestFactory.new_model_factory_test_no_def(:bar => 'foo')
|
124
|
+
assert m.id > 0
|
125
|
+
end
|
126
|
+
|
127
|
+
test "create with no arguments and no defaults" do
|
128
|
+
instance = ModelFactoryTestNoDef.new
|
129
|
+
ModelFactoryTestNoDef.expects(:create!).returns(instance)
|
130
|
+
ModelFactoryTestFactory.create_model_factory_test_no_def
|
131
|
+
end
|
132
|
+
|
133
|
+
test "create with arguments and no defaults" do
|
134
|
+
instance = ModelFactoryTestNoDef.new
|
135
|
+
ModelFactoryTestNoDef.expects(:create!).with(:bar => 'foo').returns(instance)
|
136
|
+
ModelFactoryTestFactory.create_model_factory_test_no_def(:bar => 'foo')
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'mocha'
|
4
|
+
require File.dirname(__FILE__) + '/../lib/model_factory'
|
5
|
+
|
6
|
+
class << Test::Unit::TestCase
|
7
|
+
def test(name, &block)
|
8
|
+
test_name = "test_#{name.gsub(/[\s\W]/,'_')}"
|
9
|
+
raise ArgumentError, "#{test_name} is already defined" if self.instance_methods.include? test_name
|
10
|
+
define_method test_name, &block
|
11
|
+
end
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: modelfactory
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Justin Balthrop
|
8
|
+
- Zack Hobson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2008-11-13 00:00:00 -08:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: hoe
|
18
|
+
type: :development
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 1.8.2
|
25
|
+
version:
|
26
|
+
description: A replacement for fixtures.
|
27
|
+
email: justin@geni.com
|
28
|
+
executables: []
|
29
|
+
|
30
|
+
extensions: []
|
31
|
+
|
32
|
+
extra_rdoc_files:
|
33
|
+
- History.txt
|
34
|
+
- License.txt
|
35
|
+
- Manifest.txt
|
36
|
+
- README.txt
|
37
|
+
files:
|
38
|
+
- History.txt
|
39
|
+
- License.txt
|
40
|
+
- Manifest.txt
|
41
|
+
- README.txt
|
42
|
+
- Rakefile
|
43
|
+
- lib/fixture_converter.rb
|
44
|
+
- lib/model_factory.rb
|
45
|
+
- lib/model_factory/version.rb
|
46
|
+
- script/destroy
|
47
|
+
- script/fixtures2factories
|
48
|
+
- script/generate
|
49
|
+
- script/txt2html
|
50
|
+
- setup.rb
|
51
|
+
- test/model_factory_test.rb
|
52
|
+
- test/test_helper.rb
|
53
|
+
has_rdoc: true
|
54
|
+
homepage: http://modelfactory.rubyforge.org/
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options:
|
57
|
+
- --main
|
58
|
+
- README.txt
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "0"
|
66
|
+
version:
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: "0"
|
72
|
+
version:
|
73
|
+
requirements: []
|
74
|
+
|
75
|
+
rubyforge_project: modelfactory
|
76
|
+
rubygems_version: 1.2.0
|
77
|
+
signing_key:
|
78
|
+
specification_version: 2
|
79
|
+
summary: A replacement for fixtures.
|
80
|
+
test_files:
|
81
|
+
- test/model_factory_test.rb
|