Module: Modelizer
- Includes:
- Assertions
- Defined in:
- lib/modelizer.rb,
lib/modelizer/assertions.rb,
lib/modelizer/validations.rb
Defined Under Namespace
Modules: Assertions, Validations
Classes: Context
Constant Summary
collapse
- VERSION =
"5.0.1"
Class Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Assertions
#assert_invalid
Class Attribute Details
.glob ⇒ Object
Returns the value of attribute glob.
74
75
76
|
# File 'lib/modelizer.rb', line 74
def glob
@glob
end
|
Class Method Details
.cache ⇒ Object
79
80
81
|
# File 'lib/modelizer.rb', line 79
def self.cache
@cache ||= {}
end
|
.factories ⇒ Object
87
88
89
|
# File 'lib/modelizer.rb', line 87
def self.factories
@factories ||= {}
end
|
.factory(name, model, &initializer) ⇒ Object
83
84
85
|
# File 'lib/modelizer.rb', line 83
def self.factory name, model, &initializer
factories[name] = [model, initializer]
end
|
.fixture(name, model, &initializer) ⇒ Object
91
92
93
|
# File 'lib/modelizer.rb', line 91
def self.fixture name, model, &initializer
fixtures[name] = [model, initializer]
end
|
.fixtures ⇒ Object
95
96
97
|
# File 'lib/modelizer.rb', line 95
def self.fixtures
@fixtures ||= {}
end
|
.identify(name) ⇒ Object
99
100
101
|
# File 'lib/modelizer.rb', line 99
def self.identify name
Zlib.crc32(name.to_s) % (2 ** 30 - 1)
end
|
.ids ⇒ Object
103
104
105
|
# File 'lib/modelizer.rb', line 103
def self.ids
@ids ||= {}
end
|
.included(klass) ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/modelizer.rb', line 46
def self.included klass
Dir[glob].sort.each { |f| instance_eval File.read(f), f, 1 }
instances = {}
context = Context.new instances
fixtures.each do |name, value|
instances[name] = value.first.new
end
instances.each do |name, obj|
_, *initializers = fixtures[name]
initializers.each { |i| context.instance_exec obj, &i }
obj.id = identify name
ids[name] = [obj.class, obj.id]
end
ActiveRecord::Base.transaction do
instances.each do |name, obj|
unless obj.save
raise "'#{name}' fixture can't be saved: #{obj.errors.full_messages}"
end
end
end
end
|
Instance Method Details
#build(name, overrides = nil, &block) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# File 'lib/modelizer.rb', line 7
def build name, overrides = nil, &block
model, *initializers = Modelizer.factories[name]
raise "Can't find the \"#{name}\" factory." unless model
obj = model.new
initializers << block if block_given?
initializers.each { |i| instance_exec obj, &i }
overrides.each { |k, v| obj.send "#{k}=", v } if overrides
obj
end
|
#create(name, overrides = nil, &block) ⇒ Object
21
22
23
24
25
26
27
|
# File 'lib/modelizer.rb', line 21
def create name, overrides = nil, &block
obj = build name, overrides, &block
obj.save!
obj
end
|
#use(name) ⇒ Object
29
30
31
32
33
34
|
# File 'lib/modelizer.rb', line 29
def use name
model, id = Modelizer.ids[name]
raise "Can't find the \"#{name}\" fixture." unless model
model.find id
end
|