factories.rb 6.0 KB
Newer Older
J
Jack Weeden 已提交
1 2
include ActionDispatch::TestProcess

3 4 5 6 7
FactoryGirl.define do
  sequence :sentence, aliases: [:title, :content] do
    Faker::Lorem.sentence
  end

8 9 10 11
  sequence :name, aliases: [:file_name] do
    Faker::Name.name
  end

12 13
  sequence(:url) { Faker::Internet.uri('http') }

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 "123456"
19
    password_confirmation { password }
D
Dmitriy Zaporozhets 已提交
20 21
    confirmed_at { Time.now }
    confirmation_token { nil }
22 23 24 25 26 27 28 29 30 31

    trait :admin do
      admin true
    end

    factory :admin, traits: [:admin]
  end

  factory :project do
    sequence(:name) { |n| "project#{n}" }
32
    path { name.downcase.gsub(/\s/, '_') }
33
    namespace
34
    creator
I
Izaak Alpert 已提交
35 36 37 38 39 40 41 42 43 44

    trait :source do
      sequence(:name) { |n| "source project#{n}" }
    end
    trait :target do
      sequence(:name) { |n| "target project#{n}" }
    end

    factory :source_project, traits: [:source]
    factory :target_project, traits: [:target]
45 46
  end

I
Izaak Alpert 已提交
47

48 49
  factory :redmine_project, parent: :project do
    issues_tracker { "redmine" }
A
Andrew8xx8 已提交
50
    issues_tracker_id { "project_name_in_redmine" }
51 52
  end

53 54
  factory :project_with_code, parent: :project do
    path { 'gitlabhq' }
55

I
Izaak Alpert 已提交
56 57 58 59 60 61 62 63 64 65 66
    trait :source_path do
      path { 'source_gitlabhq' }
    end

    trait :target_path do
      path { 'target_gitlabhq' }
    end

    factory :source_project_with_code, traits: [:source, :source_path]
    factory :target_project_with_code, traits: [:target, :target_path]

67
    after :create do |project|
I
Izaak Alpert 已提交
68 69
      TestEnv.clear_repo_dir(project.namespace, project.path)
      TestEnv.create_repo(project.namespace, project.path)
70
    end
71 72
  end

D
Dmitriy Zaporozhets 已提交
73
  factory :group do
74
    sequence(:name) { |n| "group#{n}" }
75
    path { name.downcase.gsub(/\s/, '_') }
D
Dmitriy Zaporozhets 已提交
76 77
    type 'Group'
  end
78

D
Dmitriy Zaporozhets 已提交
79
  factory :namespace do
80
    sequence(:name) { |n| "namespace#{n}" }
D
Dmitriy Zaporozhets 已提交
81 82
    path { name.downcase.gsub(/\s/, '_') }
    owner
83 84
  end

85 86 87
  factory :users_project do
    user
    project
88
    project_access { UsersProject::MASTER }
89 90 91 92 93 94 95 96
  end

  factory :issue do
    title
    author
    project

    trait :closed do
A
Andrew8xx8 已提交
97 98 99 100 101
      state :closed
    end

    trait :reopened do
      state :reopened
102 103 104
    end

    factory :closed_issue, traits: [:closed]
A
Andrew8xx8 已提交
105
    factory :reopened_issue, traits: [:reopened]
106 107 108 109 110
  end

  factory :merge_request do
    title
    author
I
Izaak Alpert 已提交
111 112
    source_project factory: :source_project_with_code
    target_project factory: :target_project_with_code
113 114
    source_branch "master"
    target_branch "stable"
115

116 117
    # pick 3 commits "at random" (from bcf03b5d~3 to bcf03b5d)
    trait :with_diffs do
R
Riyad Preukschas 已提交
118 119
      target_branch "master" # pretend bcf03b5d~3
      source_branch "stable" # pretend bcf03b5d
120
      st_commits do
D
Dmitriy Zaporozhets 已提交
121
        [
122 123 124
          source_project.repository.commit('bcf03b5d').to_hash,
          source_project.repository.commit('bcf03b5d~1').to_hash,
          source_project.repository.commit('bcf03b5d~2').to_hash
D
Dmitriy Zaporozhets 已提交
125
        ]
126 127
      end
      st_diffs do
I
Izaak Alpert 已提交
128
        source_project.repo.diff("bcf03b5d~3", "bcf03b5d")
129 130 131
      end
    end

A
Andrew8xx8 已提交
132 133 134 135 136 137 138 139
    trait :closed do
      state :closed
    end

    trait :reopened do
      state :reopened
    end

140
    factory :closed_merge_request, traits: [:closed]
A
Andrew8xx8 已提交
141
    factory :reopened_merge_request, traits: [:reopened]
142
    factory :merge_request_with_diffs, traits: [:with_diffs]
143 144 145 146 147
  end

  factory :note do
    project
    note "Note"
R
Riyad Preukschas 已提交
148 149 150
    author

    factory :note_on_commit, traits: [:on_commit]
R
Riyad Preukschas 已提交
151
    factory :note_on_commit_diff, traits: [:on_commit, :on_diff]
R
Riyad Preukschas 已提交
152 153
    factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note]
    factory :note_on_merge_request, traits: [:on_merge_request]
R
Riyad Preukschas 已提交
154
    factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff]
J
Jack Weeden 已提交
155
    factory :note_on_merge_request_with_attachment, traits: [:on_merge_request, :with_attachment]
R
Riyad Preukschas 已提交
156 157

    trait :on_commit do
158
      project factory: :project_with_code
I
Izaak Alpert 已提交
159
      commit_id "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a"
R
Riyad Preukschas 已提交
160 161 162
      noteable_type "Commit"
    end

R
Riyad Preukschas 已提交
163
    trait :on_diff do
R
Riyad Preukschas 已提交
164 165 166 167
      line_code "0_184_184"
    end

    trait :on_merge_request do
168
      project factory: :project_with_code
I
Izaak Alpert 已提交
169
      noteable_id 1
R
Riyad Preukschas 已提交
170 171 172 173
      noteable_type "MergeRequest"
    end

    trait :on_issue do
I
Izaak Alpert 已提交
174
      noteable_id 1
R
Riyad Preukschas 已提交
175 176
      noteable_type "Issue"
    end
J
Jack Weeden 已提交
177 178 179 180

    trait :with_attachment do
      attachment { fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "image/png") }
    end
181 182 183
  end

  factory :event do
R
randx 已提交
184 185
    factory :closed_issue_event do
      project
A
Andrew8xx8 已提交
186
      action { Event::CLOSED }
R
randx 已提交
187 188 189
      target factory: :closed_issue
      author factory: :user
    end
190 191 192 193
  end

  factory :key do
    title
R
Robert Speicher 已提交
194
    key do
195
      "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
R
Robert Speicher 已提交
196
    end
197

D
Dmitriy Zaporozhets 已提交
198
    factory :deploy_key, class: 'DeployKey' do
199 200 201 202 203
    end

    factory :personal_key do
      user
    end
204 205 206 207 208 209

    factory :key_with_a_space_in_the_middle do
      key do
        "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa ++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
      end
    end
210 211 212 213 214 215

    factory :invalid_key do
      key do
        "ssh-rsa this_is_invalid_key=="
      end
    end
216 217 218 219 220
  end

  factory :milestone do
    title
    project
A
Andrew8xx8 已提交
221 222 223 224 225 226

    trait :closed do
      state :closed
    end

    factory :closed_milestone, traits: [:closed]
227 228 229 230 231 232 233 234 235 236
  end

  factory :system_hook do
    url
  end

  factory :project_hook do
    url
  end

237
  factory :project_snippet do
238 239 240 241
    project
    author
    title
    content
242 243 244
    file_name
  end

A
Andrew8xx8 已提交
245 246 247 248 249 250 251
  factory :personal_snippet do
    author
    title
    content
    file_name
  end

252 253 254 255 256 257 258
  factory :snippet do
    author
    title
    content
    file_name
  end

259 260 261
  factory :protected_branch do
    name
    project
262
  end
D
Dmitriy Zaporozhets 已提交
263 264 265 266 267 268 269 270 271 272 273 274

  factory :service do
    type ""
    title "GitLab CI"
    token "x56olispAND34ng"
    project
  end

  factory :service_hook do
    url
    service
  end
D
Dmitriy Zaporozhets 已提交
275 276 277 278 279

  factory :deploy_keys_project do
    deploy_key
    project
  end
280
end