model_steps.rb
2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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
72
73
74
75
76
77
78
79
80
81
82
# GENERATION
When /^I generate a model named "(.*)"$/ do |model|
system "cd #{@rails_root} && " <<
"script/generate model #{model} && " <<
"cd .."
end
When /^I generate a model "(.*)" with a (.*) "(.*)"$/ do |model, attr_type, attr_name|
system "cd #{@rails_root} && " <<
"script/generate model #{model} #{attr_name}:#{attr_type} && " <<
"cd .."
end
When /^I generate a model "(.*)" that belongs to a "(.*)"$/ do |model, association|
association.downcase!
system "cd #{@rails_root} && " <<
"script/generate model #{model} #{association}:belongs_to && " <<
"cd .."
end
When /^I generate a model "(.*)" with file "(.*)"$/ do |model, file|
file.downcase!
system "cd #{@rails_root} && " <<
"script/generate model #{model} #{file}:paperclip && " <<
"cd .."
end
# MODEL
Then /^the "(.*)" model should have "(.*)" macro$/ do |model, macro|
model.downcase!
assert_generated_file("app/models/#{model}.rb") do
macro
end
end
# FACTORY
Then /^a factory should be generated for "(.*)"$/ do |model|
model.downcase!
assert_generated_file("test/factories/#{model}.rb") do
"Factory.define :#{model.downcase} do |#{model.downcase}|\n" <<
"end\n"
end
end
Then /^a factory for "(.*)" should have an? "(.*)" (.*)$/ do |model, attr_name, attr_type|
model.downcase!
assert_generated_file("test/factories/#{model}.rb") do
"Factory.define :#{model} do |#{model}|\n" <<
" #{model}.#{attr_name} { '#{attr_type}' }\n" <<
"end\n"
end
end
Then /^a factory for "(.*)" should have an association to "(.*)"$/ do |model, associated_model|
model.downcase!
associated_model.downcase!
assert_generated_file("test/factories/#{model}.rb") do
"Factory.define :#{model} do |#{model}|\n" <<
" #{model}.association(:#{associated_model})\n" <<
"end\n"
end
end
# UNIT TEST
Then /^a unit test should be generated for "(.*)"$/ do |model|
model.downcase!
assert_generated_file("test/unit/#{model}_test.rb") do
"assert_valid Factory.build(:#{model})"
end
end
Then /^the "(.*)" unit test should have "(.*)" macro$/ do |model, macro|
model.downcase!
assert_generated_file("test/unit/#{model}_test.rb") do
macro
end
end