factories.rb
1.73 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
module Noosfero::Factory
def fast_create(name, attrs = {})
obj = build(name, attrs)
obj.attributes.keys.each do |attr|
if !obj.column_for_attribute(attr).null && obj.send(attr).nil?
obj.send("#{attr}=", factory_num_seq)
end
end
obj.save_without_validation!
obj
end
def create(name, attrs = {})
target = 'create_' + name.to_s
if respond_to?(target)
send(target, attrs)
else
obj = build(name, attrs)
obj.save!
obj
end
end
def build(name, attrs = {})
data =
if respond_to?('defaults_for_' + name.to_s)
send('defaults_for_'+ name.to_s).merge(attrs)
else
attrs
end
eval(name.to_s.camelize).new(data)
end
def self.num_seq
@num_seq ||= 0
@num_seq += 1
@num_seq
end
protected
def factory_num_seq
Noosfero::Factory.num_seq
end
###############################################
# Blog
###############################################
def create_blog
profile = Profile.create!(:identifier => 'testuser' + factory_num_seq.to_s, :name => 'Test user')
Blog.create!(:name => 'blog', :profile => profile)
end
###############################################
# ExternalFeed
###############################################
def defaults_for_external_feed
{ :address => RAILS_ROOT + '/test/fixtures/files/feed.xml' }
end
def create_external_feed(attrs = {})
feed = build(:external_feed, attrs)
feed.blog = create_blog
feed.save!
feed
end
###############################################
# FeedReaderBlock
###############################################
def defaults_for_feed_reader_block
{ :address => RAILS_ROOT + '/test/fixtures/files/feed.xml' }
end
end