-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfactories.rb
96 lines (79 loc) · 2.19 KB
/
factories.rb
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
require 'faker'
FactoryBot.define do
factory :user, aliases: %i[author commenter friend sender receiver liker] do
email { Faker::Internet.email }
first_name { Faker::Name.first_name }
last_name { Faker::Name.last_name }
password { 'foobar' }
password_confirmation { 'foobar' }
factory :user_with_relations do
transient do
friends_count { 1 }
sent_friend_requests_count { 1 }
received_friend_requests_count { 1 }
end
after :create do |user, vars|
create_list(:friendship, vars.friends_count, user: user)
create_list(:friend_request, vars.sent_friend_requests_count, sender: user)
create_list(:friend_request, vars.received_friend_requests_count, receiver: user)
end
end
factory :user_with_posts_comments_and_likes do
transient do
posts_count { 1 }
liked_count { 1 }
comment_count { 1 }
end
after :create do |user, vars|
create_list(:post_with_likes, vars.posts_count, author: user)
create_list(:like, vars.liked_count, :for_post, liker: user)
create_list(:like, vars.liked_count, :for_comment, liker: user)
create_list(:comment_with_likes, vars.comment_count, commenter: user)
end
end
end
factory :post do
content { Faker::ChuckNorris.fact }
author
factory :invalid_post do
content { '' }
end
factory :post_with_likes do
transient { count { 1 } }
after :create do |post, vars|
create_list(:like, vars.count, :for_post, likeable: post)
end
end
end
factory :comment do
content { Faker::Hacker.say_something_smart }
commenter
post
factory :invalid_comment do
content { '' }
end
factory :comment_with_likes do
after :create do |comment|
create_list(:like, 2, :for_comment, likeable: comment)
end
end
end
factory :friendship do
user
friend
end
factory :friend_request do
sender
receiver
end
factory :like do
liker
for_post
trait :for_post do
association :likeable, factory: :post
end
trait :for_comment do
association :likeable, factory: :comment
end
end
end