factories.rb 9.17 KB
Newer Older
Jack Weeden's avatar
Jack Weeden committed
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 "12345678"
19
    password_confirmation { password }
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
20 21
    confirmed_at { Time.now }
    confirmation_token { nil }
22 23 24 25 26 27 28 29

    trait :admin do
      admin true
    end

    factory :admin, traits: [:admin]
  end

30
  factory :empty_project, class: 'Project' do
31
    sequence(:name) { |n| "project#{n}" }
32
    path { name.downcase.gsub(/\s/, '_') }
33
    namespace
34
    creator
35 36 37 38 39 40 41 42 43 44 45 46

    trait :public do
      visibility_level Gitlab::VisibilityLevel::PUBLIC
    end

    trait :internal do
      visibility_level Gitlab::VisibilityLevel::INTERNAL
    end

    trait :private do
      visibility_level Gitlab::VisibilityLevel::PRIVATE
    end
47 48
  end

49 50 51 52 53 54 55 56 57 58
  # Generates a test repository from the repository stored under `spec/seed_project.tar.gz`.
  # Once you run `rake gitlab:setup`, you can see what the repository looks like under `tmp/repositories/gitlabhq`.
  # In order to modify files in the repository, you must untar the seed, modify and remake the tar.
  # Before recompressing, do not forget to `git checkout master`.
  # After recompressing, you need to run `RAILS_ENV=test bundle exec rake gitlab:setup` to regenerate the seeds under tmp.
  #
  # If you want to modify the repository only for an specific type of tests, e.g., markdown tests,
  # consider using a feature branch to reduce the chances of collision with other tests.
  # Create a new commit, and use the same commit message that you will use for the change in the main repo.
  # Changing the commig message and SHA of branch `master` may break tests.
59
  factory :project, parent: :empty_project do
60
    path { 'gitlabhq' }
61 62

    after :create do |project|
63
      TestEnv.clear_repo_dir(project.namespace, project.path)
64
      TestEnv.reset_satellite_dir
65
      TestEnv.create_repo(project.namespace, project.path)
66
    end
67 68
  end

69 70 71 72 73
  factory :redmine_project, parent: :project do
    issues_tracker { "redmine" }
    issues_tracker_id { "project_name_in_redmine" }
  end

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

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
80
  factory :namespace do
81
    sequence(:name) { |n| "namespace#{n}" }
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
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
Andrew8xx8's avatar
Andrew8xx8 committed
98 99 100 101 102
      state :closed
    end

    trait :reopened do
      state :reopened
103 104 105
    end

    factory :closed_issue, traits: [:closed]
Andrew8xx8's avatar
Andrew8xx8 committed
106
    factory :reopened_issue, traits: [:reopened]
107 108 109 110 111
  end

  factory :merge_request do
    title
    author
112 113
    source_project factory: :project
    target_project { source_project }
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

    # → git log stable..master --pretty=oneline
    # b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828 tree css fixes
    # 8716fc78f3c65bbf7bcf7b574febd583bc5d2812 Added loading animation  for notes
    # cd5c4bac5042c5469dcdf7e7b2f768d3c6fd7088 notes count for wall
    # 8470d70da67355c9c009e4401746b1d5410af2e3 notes controller refactored
    # 1e689bfba39525ead225eaf611948cfbe8ac34cf fixed notes logic
    # f0f14c8eaba69ebddd766498a9d0b0e79becd633 finished scss refactoring
    # 3a4b4fb4cde7809f033822a171b9feae19d41fff Moving ui styles to one scss file, Added ui class to body
    # 065c200c33f68c2bb781e35a43f9dc8138a893b5 removed unnecessary hr tags & titles
    # 1e8b111be85df0db6c8000ef9a710bc0221eae83 Merge branch 'master' of github.com:gitlabhq/gitlabhq
    # f403da73f5e62794a0447aca879360494b08f678 Fixed ajax loading image. Fixed wrong wording
    # e6ea73c77600d413d370249b8e392734f7d1dbee Merge pull request #468 from bencevans/patch-1
    # 4a3c05b69355deee25767a74d0512ec4b510d4ef Merge pull request #470 from bgondy/patch-1
    # 0347fe2412eb51d3efeccc35210e9268bc765ac5 Update app/views/projects/team.html.haml
    # 2b5c61bdece1f7eb2b901ceea7d364065cdf76ac Title for a link fixed
    # 460eeb13b7560b40104044973ff933b1a6dbbcaa Increased count of notes loaded when visit wall page
    # 21c141afb1c53a9180a99d2cca29ffa613eb7e3a Merge branch 'notes_refactoring'
    # 292a41cbe295f16f7148913b31eb0fb91f3251c3 Fixed comments for snippets. Tests fixed
    # d41d8ffb02fa74fd4571603548bd7e401ec99e0c Reply button, Comments for Merge Request diff
    # b1a36b552be2a7a6bc57fbed6c52dc6ed82111f8 Merge pull request #466 from skroutz/no-rbenv
    # db75dae913e8365453ca231f101b067314a7ea71 Merge pull request #465 from skroutz/branches_commit_link
    # 75f040fbfe4b5af23ff004ad3207c3976df097a8 Don't enforce rbenv version
    # e42fb4fda475370dcb0d8f8f1268bfdc7a0cc437 Fix broken commit link in branches page
    # 215a01f63ccdc085f75a48f6f7ab6f2b15b5852c move notes login to one controller
    # 81092c01984a481e312de10a28e3f1a6dda182a3 Status codes for errors, New error pages
    # 7d279f9302151e3c8f4c5df9c5200a72799409b9 better error handling for not found resource, gitolite error
    # 9e6d0710e927aa8ea834b8a9ae9f277be617ac7d Merge pull request #443 from CedricGatay/fix/incorrectLineNumberingInDiff
    # 6ea87c47f0f8a24ae031c3fff17bc913889ecd00 Incorrect line numbering in diff
    #
    # → git log master..stable --pretty=oneline
    # empty

147 148
    source_branch "master"
    target_branch "stable"
149

150 151 152
    trait :with_diffs do
    end

153 154 155 156 157 158 159 160
    trait :closed do
      state :closed
    end

    trait :reopened do
      state :reopened
    end

161 162 163 164 165
    trait :simple do
      source_branch "simple_merge_request"
      target_branch "master"
    end

166
    factory :closed_merge_request, traits: [:closed]
167
    factory :reopened_merge_request, traits: [:reopened]
168
    factory :merge_request_with_diffs, traits: [:with_diffs]
169 170 171 172 173
  end

  factory :note do
    project
    note "Note"
Riyad Preukschas's avatar
Riyad Preukschas committed
174 175 176
    author

    factory :note_on_commit, traits: [:on_commit]
Riyad Preukschas's avatar
Riyad Preukschas committed
177
    factory :note_on_commit_diff, traits: [:on_commit, :on_diff]
Riyad Preukschas's avatar
Riyad Preukschas committed
178 179
    factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note]
    factory :note_on_merge_request, traits: [:on_merge_request]
Riyad Preukschas's avatar
Riyad Preukschas committed
180
    factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff]
Riyad Preukschas's avatar
Riyad Preukschas committed
181 182

    trait :on_commit do
183
      project factory: :project
184
      commit_id "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a"
Riyad Preukschas's avatar
Riyad Preukschas committed
185 186 187
      noteable_type "Commit"
    end

Riyad Preukschas's avatar
Riyad Preukschas committed
188
    trait :on_diff do
Riyad Preukschas's avatar
Riyad Preukschas committed
189 190 191 192
      line_code "0_184_184"
    end

    trait :on_merge_request do
193
      project factory: :project
194
      noteable_id 1
Riyad Preukschas's avatar
Riyad Preukschas committed
195 196 197 198
      noteable_type "MergeRequest"
    end

    trait :on_issue do
199
      noteable_id 1
Riyad Preukschas's avatar
Riyad Preukschas committed
200 201
      noteable_type "Issue"
    end
Jack Weeden's avatar
Jack Weeden committed
202 203

    trait :with_attachment do
204
      attachment { fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "`/png") }
Jack Weeden's avatar
Jack Weeden committed
205
    end
206 207 208
  end

  factory :event do
randx's avatar
randx committed
209 210
    factory :closed_issue_event do
      project
211
      action { Event::CLOSED }
randx's avatar
randx committed
212 213 214
      target factory: :closed_issue
      author factory: :user
    end
215 216 217 218
  end

  factory :key do
    title
Robert Speicher's avatar
Robert Speicher committed
219
    key do
220
      "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
Robert Speicher's avatar
Robert Speicher committed
221
    end
222

223
    factory :deploy_key, class: 'DeployKey' do
224 225 226 227 228
    end

    factory :personal_key do
      user
    end
229 230 231 232 233 234

    factory :key_with_a_space_in_the_middle do
      key do
        "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa ++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
      end
    end
235

236 237 238 239 240 241
    factory :another_key do
      key do
        "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmTillFzNTrrGgwaCKaSj+QCz81E6jBc/s9av0+3b1Hwfxgkqjl4nAK/OD2NjgyrONDTDfR8cRN4eAAy6nY8GLkOyYBDyuc5nTMqs5z3yVuTwf3koGm/YQQCmo91psZ2BgDFTor8SVEE5Mm1D1k3JDMhDFxzzrOtRYFPci9lskTJaBjpqWZ4E9rDTD2q/QZntCqbC3wE9uSemRQB5f8kik7vD/AD8VQXuzKladrZKkzkONCPWsXDspUitjM8HkQdOf0PsYn1CMUC1xKYbCxkg5TkEosIwGv6CoEArUrdu/4+10LVslq494mAvEItywzrluCLCnwELfW+h/m8UHoVhZ"
      end
    end

242 243 244 245 246
    factory :invalid_key do
      key do
        "ssh-rsa this_is_invalid_key=="
      end
    end
247
  end
248 249 250 251 252 253 254 255 256 257 258 259 260
  
  factory :email do
    user
    email do
      Faker::Internet.email('alias')
    end

    factory :another_email do
      email do
        Faker::Internet.email('another.alias')
      end
    end
  end
261 262 263 264

  factory :milestone do
    title
    project
265 266 267 268 269 270

    trait :closed do
      state :closed
    end

    factory :closed_milestone, traits: [:closed]
271 272 273 274 275 276 277 278 279 280
  end

  factory :system_hook do
    url
  end

  factory :project_hook do
    url
  end

281
  factory :project_snippet do
282 283 284 285
    project
    author
    title
    content
286 287 288
    file_name
  end

289 290 291 292 293 294 295
  factory :personal_snippet do
    author
    title
    content
    file_name
  end

296 297 298 299 300 301 302
  factory :snippet do
    author
    title
    content
    file_name
  end

303 304 305
  factory :protected_branch do
    name
    project
306
  end
307 308 309 310 311 312 313 314 315 316 317 318

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

  factory :service_hook do
    url
    service
  end
319 320 321 322 323

  factory :deploy_keys_project do
    deploy_key
    project
  end
324
end