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
      TestEnv.clear_repo_dir(project.namespace, project.path)
69
      TestEnv.reset_satellite_dir
I
Izaak Alpert 已提交
70
      TestEnv.create_repo(project.namespace, project.path)
71
    end
72 73
  end

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

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

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

  factory :issue do
    title
    author
    project

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

    trait :reopened do
      state :reopened
103 104 105
    end

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

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

117 118
    # pick 3 commits "at random" (from bcf03b5d~3 to bcf03b5d)
    trait :with_diffs do
R
Riyad Preukschas 已提交
119 120
      target_branch "master" # pretend bcf03b5d~3
      source_branch "stable" # pretend bcf03b5d
121
      st_commits do
D
Dmitriy Zaporozhets 已提交
122
        [
123 124 125
          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 已提交
126
        ]
127 128
      end
      st_diffs do
I
Izaak Alpert 已提交
129
        source_project.repo.diff("bcf03b5d~3", "bcf03b5d")
130 131 132
      end
    end

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

    trait :reopened do
      state :reopened
    end

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    trait :closed do
      state :closed
    end

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

  factory :system_hook do
    url
  end

  factory :project_hook do
    url
  end

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

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

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

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

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

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

  factory :deploy_keys_project do
    deploy_key
    project
  end
281
end