factories.rb 5.9 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 }
20 21 22 23 24 25 26 27 28 29

    trait :admin do
      admin true
    end

    factory :admin, traits: [:admin]
  end

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

    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]
42 43
  end

I
Izaak Alpert 已提交
44

45 46
  factory :redmine_project, parent: :project do
    issues_tracker { "redmine" }
A
Andrew8xx8 已提交
47
    issues_tracker_id { "project_name_in_redmine" }
48 49
  end

50 51
  factory :project_with_code, parent: :project do
    path { 'gitlabhq' }
52

I
Izaak Alpert 已提交
53 54 55 56 57 58 59 60 61 62 63
    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]

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

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

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

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

  factory :issue do
    title
    author
    project

    trait :closed do
A
Andrew8xx8 已提交
95 96 97 98 99
      state :closed
    end

    trait :reopened do
      state :reopened
100 101 102
    end

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

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

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

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

    trait :reopened do
      state :reopened
    end

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

  factory :note do
    project
    note "Note"
R
Riyad Preukschas 已提交
146 147 148
    author

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

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

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

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

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

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

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

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

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

    factory :personal_key do
      user
    end
202 203 204 205 206 207

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

    factory :invalid_key do
      key do
        "ssh-rsa this_is_invalid_key=="
      end
    end
214 215 216 217 218
  end

  factory :milestone do
    title
    project
A
Andrew8xx8 已提交
219 220 221 222 223 224

    trait :closed do
      state :closed
    end

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

  factory :system_hook do
    url
  end

  factory :project_hook do
    url
  end

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

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

250 251 252 253 254 255 256
  factory :snippet do
    author
    title
    content
    file_name
  end

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

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

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

  factory :deploy_keys_project do
    deploy_key
    project
  end
278
end