diff options
| author | Alfredo Sumaran <alfredo@gitlab.com> | 2016-06-23 06:57:30 -0500 | 
|---|---|---|
| committer | Alfredo Sumaran <alfredo@gitlab.com> | 2016-06-23 16:13:42 -0500 | 
| commit | d18e407c409cf4b353797cb343a1c627e033e963 (patch) | |
| tree | 7c648caa1c237d08523ba665b3bd839551ffc2dc | |
| parent | 3d5172b5098afd8c1e8fa2eb970c5f6493ea9d0d (diff) | |
| download | gitlab-ce-d18e407c409cf4b353797cb343a1c627e033e963.tar.gz | |
Add tests to check fixes
| -rw-r--r-- | spec/features/issues/bulk_assignment_labels_spec.rb | 151 | 
1 files changed, 148 insertions, 3 deletions
| diff --git a/spec/features/issues/bulk_assignment_labels_spec.rb b/spec/features/issues/bulk_assignment_labels_spec.rb index 7143d0e40f3..afc093cc1f5 100644 --- a/spec/features/issues/bulk_assignment_labels_spec.rb +++ b/spec/features/issues/bulk_assignment_labels_spec.rb @@ -10,7 +10,7 @@ feature 'Issues > Labels bulk assignment', feature: true do    let!(:bug)      { create(:label, project: project, title: 'bug') }    let!(:feature)  { create(:label, project: project, title: 'feature') } -  context 'as a allowed user', js: true do +  context 'as an allowed user', js: true do      before do        project.team << [user, :master] @@ -164,6 +164,133 @@ feature 'Issues > Labels bulk assignment', feature: true do          end        end      end + +    context 'toggling a milestone' do +      let!(:milestone) { create(:milestone, project: project, title: 'First Release') } + +      context 'setting a milestone' do +        before do +          issue1.labels << bug +          issue2.labels << feature +          visit namespace_project_issues_path(project.namespace, project) +        end + +        it 'labels are kept' do +          expect(find("#issue_#{issue1.id}")).to have_content 'bug' +          expect(find("#issue_#{issue2.id}")).to have_content 'feature' + +          check 'check_all_issues' +          open_milestone_dropdown(['First Release']) +          update_issues + +          expect(find("#issue_#{issue1.id}")).to have_content 'bug' +          expect(find("#issue_#{issue1.id}")).to have_content 'First Release' +          expect(find("#issue_#{issue2.id}")).to have_content 'feature' +          expect(find("#issue_#{issue2.id}")).to have_content 'First Release' +        end +      end + +      context 'setting a milestone and adding another label' do +        before do +          issue1.labels << bug + +          visit namespace_project_issues_path(project.namespace, project) +        end + +        it 'existing label is kept and new label is present' do +          expect(find("#issue_#{issue1.id}")).to have_content 'bug' + +          check 'check_all_issues' +          open_milestone_dropdown ['First Release'] +          open_labels_dropdown ['feature'] +          update_issues + +          expect(find("#issue_#{issue1.id}")).to have_content 'bug' +          expect(find("#issue_#{issue1.id}")).to have_content 'feature' +          expect(find("#issue_#{issue1.id}")).to have_content 'First Release' +          expect(find("#issue_#{issue2.id}")).to have_content 'feature' +          expect(find("#issue_#{issue2.id}")).to have_content 'First Release' +        end +      end + +      context 'setting a milestone and removing existing label' do +        before do +          issue1.labels << bug +          issue1.labels << feature +          issue2.labels << feature + +          visit namespace_project_issues_path(project.namespace, project) +        end + +        it 'existing label is kept and new label is present' do +          expect(find("#issue_#{issue1.id}")).to have_content 'bug' +          expect(find("#issue_#{issue1.id}")).to have_content 'bug' +          expect(find("#issue_#{issue2.id}")).to have_content 'feature' + +          check 'check_all_issues' +          open_milestone_dropdown ['First Release'] +          unmark_labels_in_dropdown ['feature'] +          update_issues + +          expect(find("#issue_#{issue1.id}")).to have_content 'bug' +          expect(find("#issue_#{issue1.id}")).not_to have_content 'feature' +          expect(find("#issue_#{issue1.id}")).to have_content 'First Release' +          expect(find("#issue_#{issue2.id}")).not_to have_content 'feature' +          expect(find("#issue_#{issue2.id}")).to have_content 'First Release' +        end +      end + +      context 'unsetting a milestone' do +        before do +          issue1.milestone = milestone +          issue2.milestone = milestone +          issue1.save +          issue2.save +          issue1.labels << bug +          issue2.labels << feature + +          visit namespace_project_issues_path(project.namespace, project) +        end + +        it 'labels are kept' do +          expect(find("#issue_#{issue1.id}")).to have_content 'bug' +          expect(find("#issue_#{issue1.id}")).to have_content 'First Release' +          expect(find("#issue_#{issue2.id}")).to have_content 'feature' +          expect(find("#issue_#{issue2.id}")).to have_content 'First Release' + +          check 'check_all_issues' +          open_milestone_dropdown(['No Milestone']) +          update_issues + +          expect(find("#issue_#{issue1.id}")).to have_content 'bug' +          expect(find("#issue_#{issue1.id}")).not_to have_content 'First Release' +          expect(find("#issue_#{issue2.id}")).to have_content 'feature' +          expect(find("#issue_#{issue2.id}")).not_to have_content 'First Release' +        end +      end +    end + +    context 'toggling checked issues' do +      before do +        issue1.labels << bug + +        visit namespace_project_issues_path(project.namespace, project) +      end + +      it do +        expect(find("#issue_#{issue1.id}")).to have_content 'bug' + +        check_issue issue1 +        open_labels_dropdown ['feature'] +        uncheck_issue issue1 +        check_issue issue1 +        update_issues +        sleep 1 # needed + +        expect(find("#issue_#{issue1.id}")).to have_content 'bug' +        expect(find("#issue_#{issue1.id}")).not_to have_content 'feature' +      end +    end    end    context 'as a guest' do @@ -181,6 +308,16 @@ feature 'Issues > Labels bulk assignment', feature: true do      end    end +  def open_milestone_dropdown(items = []) +    page.within('.issues_bulk_update') do +      click_button 'Milestone' +      wait_for_ajax +      items.map do |item| +        click_link item +      end +    end +  end +    def open_labels_dropdown(items = [], unmark = false)      page.within('.issues_bulk_update') do        click_button 'Label' @@ -201,12 +338,20 @@ feature 'Issues > Labels bulk assignment', feature: true do      open_labels_dropdown(items, true)    end -  def check_issue(issue) +  def check_issue(issue, uncheck = false)      page.within('.issues-list') do -      check "selected_issue_#{issue.id}" +      if uncheck +        uncheck "selected_issue_#{issue.id}" +      else +        check "selected_issue_#{issue.id}" +      end      end    end +  def uncheck_issue(issue) +    check_issue(issue, true) +  end +    def update_issues      click_button 'Update issues'      wait_for_ajax | 
