OSDN Git Service

daf841736484377933a78c7f88c518fc1a02f924
[wvm/gitlab.git] / spec / factories.rb
1 include ActionDispatch::TestProcess
2
3 FactoryGirl.define do
4   sequence :sentence, aliases: [:title, :content] do
5     Faker::Lorem.sentence
6   end
7
8   sequence :name, aliases: [:file_name] do
9     Faker::Name.name
10   end
11
12   sequence(:url) { Faker::Internet.uri('http') }
13
14   factory :user, aliases: [:author, :assignee, :owner, :creator] do
15     email { Faker::Internet.email }
16     name
17     sequence(:username) { |n| "#{Faker::Internet.user_name}#{n}" }
18     password "12345678"
19     password_confirmation { password }
20     confirmed_at { Time.now }
21     confirmation_token { nil }
22
23     trait :admin do
24       admin true
25     end
26
27     factory :admin, traits: [:admin]
28   end
29
30   factory :project do
31     sequence(:name) { |n| "project#{n}" }
32     path { name.downcase.gsub(/\s/, '_') }
33     namespace
34     creator
35
36     trait :source do
37       sequence(:name) { |n| "source project#{n}" }
38     end
39     trait :target do
40       sequence(:name) { |n| "target project#{n}" }
41     end
42
43     factory :source_project, traits: [:source]
44     factory :target_project, traits: [:target]
45   end
46
47
48   factory :redmine_project, parent: :project do
49     issues_tracker { "redmine" }
50     issues_tracker_id { "project_name_in_redmine" }
51   end
52
53   factory :project_with_code, parent: :project do
54     path { 'gitlabhq' }
55
56     trait :source_path do
57       path { 'source_gitlabhq' }
58     end
59
60     trait :target_path do
61       path { 'target_gitlabhq' }
62     end
63
64     factory :source_project_with_code, traits: [:source, :source_path]
65     factory :target_project_with_code, traits: [:target, :target_path]
66
67     after :create do |project|
68       TestEnv.clear_repo_dir(project.namespace, project.path)
69       TestEnv.reset_satellite_dir
70       TestEnv.create_repo(project.namespace, project.path)
71     end
72   end
73
74   factory :group do
75     sequence(:name) { |n| "group#{n}" }
76     path { name.downcase.gsub(/\s/, '_') }
77     type 'Group'
78   end
79
80   factory :namespace do
81     sequence(:name) { |n| "namespace#{n}" }
82     path { name.downcase.gsub(/\s/, '_') }
83     owner
84   end
85
86   factory :users_project do
87     user
88     project
89     project_access { UsersProject::MASTER }
90   end
91
92   factory :issue do
93     title
94     author
95     project
96
97     trait :closed do
98       state :closed
99     end
100
101     trait :reopened do
102       state :reopened
103     end
104
105     factory :closed_issue, traits: [:closed]
106     factory :reopened_issue, traits: [:reopened]
107   end
108
109   factory :merge_request do
110     title
111     author
112     source_project factory: :source_project_with_code
113     target_project factory: :target_project_with_code
114     source_branch "master"
115     target_branch "stable"
116
117     # pick 3 commits "at random" (from bcf03b5d~3 to bcf03b5d)
118     trait :with_diffs do
119       target_branch "master" # pretend bcf03b5d~3
120       source_branch "stable" # pretend bcf03b5d
121       st_commits do
122         [
123           source_project.repository.commit('bcf03b5d').to_hash,
124           source_project.repository.commit('bcf03b5d~1').to_hash,
125           source_project.repository.commit('bcf03b5d~2').to_hash
126         ]
127       end
128       st_diffs do
129         source_project.repo.diff("bcf03b5d~3", "bcf03b5d")
130       end
131     end
132
133     trait :closed do
134       state :closed
135     end
136
137     trait :reopened do
138       state :reopened
139     end
140
141     factory :closed_merge_request, traits: [:closed]
142     factory :reopened_merge_request, traits: [:reopened]
143     factory :merge_request_with_diffs, traits: [:with_diffs]
144   end
145
146   factory :note do
147     project
148     note "Note"
149     author
150
151     factory :note_on_commit, traits: [:on_commit]
152     factory :note_on_commit_diff, traits: [:on_commit, :on_diff]
153     factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note]
154     factory :note_on_merge_request, traits: [:on_merge_request]
155     factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff]
156     factory :note_on_merge_request_with_attachment, traits: [:on_merge_request, :with_attachment]
157
158     trait :on_commit do
159       project factory: :project_with_code
160       commit_id "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a"
161       noteable_type "Commit"
162     end
163
164     trait :on_diff do
165       line_code "0_184_184"
166     end
167
168     trait :on_merge_request do
169       project factory: :project_with_code
170       noteable_id 1
171       noteable_type "MergeRequest"
172     end
173
174     trait :on_issue do
175       noteable_id 1
176       noteable_type "Issue"
177     end
178
179     trait :with_attachment do
180       attachment { fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "image/png") }
181     end
182   end
183
184   factory :event do
185     factory :closed_issue_event do
186       project
187       action { Event::CLOSED }
188       target factory: :closed_issue
189       author factory: :user
190     end
191   end
192
193   factory :key do
194     title
195     key do
196       "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
197     end
198
199     factory :deploy_key, class: 'DeployKey' do
200     end
201
202     factory :personal_key do
203       user
204     end
205
206     factory :key_with_a_space_in_the_middle do
207       key do
208         "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa ++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
209       end
210     end
211
212     factory :invalid_key do
213       key do
214         "ssh-rsa this_is_invalid_key=="
215       end
216     end
217   end
218
219   factory :milestone do
220     title
221     project
222
223     trait :closed do
224       state :closed
225     end
226
227     factory :closed_milestone, traits: [:closed]
228   end
229
230   factory :system_hook do
231     url
232   end
233
234   factory :project_hook do
235     url
236   end
237
238   factory :project_snippet do
239     project
240     author
241     title
242     content
243     file_name
244   end
245
246   factory :personal_snippet do
247     author
248     title
249     content
250     file_name
251   end
252
253   factory :snippet do
254     author
255     title
256     content
257     file_name
258   end
259
260   factory :protected_branch do
261     name
262     project
263   end
264
265   factory :service do
266     type ""
267     title "GitLab CI"
268     token "x56olispAND34ng"
269     project
270   end
271
272   factory :service_hook do
273     url
274     service
275   end
276
277   factory :deploy_keys_project do
278     deploy_key
279     project
280   end
281 end