BigW Consortium Gitlab

merge_requests.rb 2.77 KB
Newer Older
1 2
FactoryGirl.define do
  factory :merge_request do
Rémy Coutable committed
3
    title { generate(:title) }
4
    author
5
    association :source_project, :repository, factory: :project
6 7
    target_project { source_project }

8
    # $ git log --pretty=oneline feature..master
9 10 11 12 13
    # 5937ac0a7beb003549fc5fd26fc247adbce4a52e Add submodule from gitlab.com
    # 570e7b2abdd848b95f2f578043fc23bd6f6fd24d Change some files
    # 6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9 More submodules
    # d14d6c0abdd253381df51a723d58691b2ee1ab08 Remove ds_store files
    # c1acaa58bbcbc3eafe538cb8274ba387047b69f8 Ignore DS files
14 15 16
    #
    # See also RepoHelpers.sample_compare
    #
17 18 19
    source_branch "master"
    target_branch "feature"

20
    merge_status "can_be_merged"
21 22 23 24

    trait :with_diffs do
    end

25 26 27 28 29
    trait :with_image_diffs do
      source_branch "add_images_and_changes"
      target_branch "master"
    end

30 31 32 33 34
    trait :without_diffs do
      source_branch "improve/awesome"
      target_branch "master"
    end

35 36 37 38 39
    trait :conflict do
      source_branch "feature_conflict"
      target_branch "feature"
    end

40 41 42 43
    trait :merged do
      state :merged
    end

44 45 46 47
    trait :closed do
      state :closed
    end

48 49 50 51
    trait :opened do
      state :opened
    end

52 53 54 55
    trait :locked do
      state :locked
    end

56 57 58 59 60
    trait :simple do
      source_branch "feature"
      target_branch "master"
    end

61 62 63 64 65 66 67 68 69 70
    trait :rebased do
      source_branch "markdown"
      target_branch "improve/awesome"
    end

    trait :diverged do
      source_branch "feature"
      target_branch "master"
    end

71 72
    trait :merge_when_pipeline_succeeds do
      merge_when_pipeline_succeeds true
73 74 75
      merge_user author
    end

micael.bergeron committed
76 77 78 79 80 81
    trait :remove_source_branch do
      merge_params do
        { 'force_remove_source_branch' => '1' }
      end
    end

82 83
    after(:build) do |merge_request|
      target_project = merge_request.target_project
84
      source_project = merge_request.source_project
85

86
      # Fake `write_ref` if we don't have repository
87
      # We have too many existing tests replying on this behaviour
88
      unless [target_project, source_project].all?(&:repository_exists?)
89
        allow(merge_request).to receive(:write_ref)
90 91 92
      end
    end

93
    factory :merged_merge_request, traits: [:merged]
94
    factory :closed_merge_request, traits: [:closed]
95
    factory :reopened_merge_request, traits: [:opened]
96
    factory :merge_request_with_diffs, traits: [:with_diffs]
97 98 99 100 101
    factory :merge_request_with_diff_notes do
      after(:create) do |mr|
        create(:diff_note_on_merge_request, noteable: mr, project: mr.source_project)
      end
    end
102 103 104 105 106 107 108 109 110 111

    factory :labeled_merge_request do
      transient do
        labels []
      end

      after(:create) do |merge_request, evaluator|
        merge_request.update_attributes(labels: evaluator.labels)
      end
    end
112 113
  end
end