Skip to content
Snippets Groups Projects
Commit b80f5dd8 authored by Alexandru Croitor's avatar Alexandru Croitor
Browse files

Rename started iteraton state name to current

Change iteration state name to be consistent with our iteration
naming for current iteration.
parent da34b9fc
No related branches found
No related tags found
No related merge requests found
Showing
with 133 additions and 78 deletions
Loading
Loading
@@ -14410,8 +14410,9 @@ State of a GitLab iteration.
| ----- | ----------- |
| <a id="iterationstateall"></a>`all` | |
| <a id="iterationstateclosed"></a>`closed` | |
| <a id="iterationstatecurrent"></a>`current` | |
| <a id="iterationstateopened"></a>`opened` | |
| <a id="iterationstatestarted"></a>`started` | |
| <a id="iterationstatestarted"></a>`started` **{warning-solid}** | **Deprecated** in 14.1. Use current instead. |
| <a id="iterationstateupcoming"></a>`upcoming` | |
 
### `IterationWildcardId`
Loading
Loading
Loading
Loading
@@ -26,7 +26,7 @@ GET /groups/:id/iterations?search=version
 
| Attribute | Type | Required | Description |
| ------------------- | ------- | -------- | ----------- |
| `state` | string | no | Return only `opened`, `upcoming`, `started`, `closed`, or `all` iterations. Defaults to `all`. |
| `state` | string | no | 'Return `opened`, `upcoming`, `current(previously started)`, `closed`, or `all` iterations. Filtering by `started` state is deprecated starting with 14.1, please use `current` instead.' |
| `search` | string | no | Return only iterations with a title matching the provided string. |
| `include_ancestors` | boolean | no | Include iterations from parent group and its ancestors. Defaults to `true`. |
 
Loading
Loading
Loading
Loading
@@ -28,7 +28,7 @@ GET /projects/:id/iterations?search=version
 
| Attribute | Type | Required | Description |
| ------------------- | ------- | -------- | ----------- |
| `state` | string | no | Return only `opened`, `upcoming`, `started`, `closed`, or `all` iterations. Defaults to `all`. |
| `state` | string | no | 'Return `opened`, `upcoming`, `current(previously started)`, `closed`, or `all` iterations. Filtering by `started` state is deprecated starting with 14.1, please use `current` instead.' |
| `search` | string | no | Return only iterations with a title matching the provided string. |
| `include_ancestors` | boolean | no | Include iterations from parent group and its ancestors. Defaults to `true`. |
 
Loading
Loading
Loading
Loading
@@ -67,6 +67,10 @@ def by_search_title(items)
def by_state(items)
return items unless params[:state].present?
 
# we've deprecated `started` status name for iteration, so we are translating it here to current
# this is to be removed when deprecation is removed in 14.6: https://gitlab.com/gitlab-org/gitlab/-/issues/334018
params[:state] = 'current' if params[:state] == 'started'
Iteration.filter_by_state(items, params[:state])
end
 
Loading
Loading
Loading
Loading
@@ -6,7 +6,11 @@ class IterationStateEnum < BaseEnum
description 'State of a GitLab iteration'
 
value 'upcoming'
value 'started'
value 'started', deprecated: {
reason: "Use current instead",
milestone: '14.1'
}
value 'current'
value 'opened'
value 'closed'
value 'all'
Loading
Loading
Loading
Loading
@@ -6,7 +6,7 @@ module Iteration
 
STATE_ENUM_MAP = {
upcoming: 1,
started: 2,
current: 2,
closed: 3
}.with_indifferent_access.freeze
 
Loading
Loading
@@ -55,8 +55,9 @@ class Predefined
scope :due_date_order_asc, -> { order(:due_date) }
scope :due_date_order_desc, -> { order(due_date: :desc) }
scope :upcoming, -> { with_state(:upcoming) }
scope :started, -> { with_state(:started) }
scope :current, -> { with_state(:current) }
scope :closed, -> { with_state(:closed) }
scope :opened, -> { with_states(:current, :upcoming) }
scope :by_iteration_cadence_ids, ->(cadence_ids) { where(iterations_cadence_id: cadence_ids) }
scope :with_start_date_after, ->(date) { where('start_date > :date', date: date) }
 
Loading
Loading
@@ -70,11 +71,11 @@ class Predefined
 
state_machine :state_enum, initial: :upcoming do
event :start do
transition upcoming: :started
transition upcoming: :current
end
 
event :close do
transition [:upcoming, :started] => :closed
transition [:upcoming, :current] => :closed
end
 
after_transition any => [:closed] do |iteration|
Loading
Loading
@@ -84,13 +85,25 @@ class Predefined
end
 
state :upcoming, value: Iteration::STATE_ENUM_MAP[:upcoming]
state :started, value: Iteration::STATE_ENUM_MAP[:started]
state :current, value: Iteration::STATE_ENUM_MAP[:current]
state :closed, value: Iteration::STATE_ENUM_MAP[:closed]
end
 
class << self
alias_method :with_state, :with_state_enum
alias_method :with_states, :with_state_enums
def compute_state(start_date, due_date)
today = Date.today
if start_date > today
:upcoming
elsif due_date < today
:closed
else
:current
end
end
end
end
 
Loading
Loading
@@ -121,9 +134,9 @@ def link_reference_pattern
def filter_by_state(iterations, state)
case state
when 'closed' then iterations.closed
when 'started' then iterations.started
when 'current' then iterations.current
when 'upcoming' then iterations.upcoming
when 'opened' then iterations.started.or(iterations.upcoming)
when 'opened' then iterations.opened
when 'all' then iterations
else raise ArgumentError, "Unknown state filter: #{state}"
end
Loading
Loading
@@ -219,19 +232,7 @@ def no_project
end
 
def set_iteration_state
self.state = compute_state
end
def compute_state
today = Date.today
if start_date > today
:upcoming
elsif due_date < today
:closed
else
:started
end
self.state = self.class.compute_state(start_date, due_date)
end
 
# TODO: this method should be removed as part of https://gitlab.com/gitlab-org/gitlab/-/issues/296099
Loading
Loading
Loading
Loading
@@ -12,20 +12,20 @@ class IterationsUpdateStatusWorker
feature_category :issue_tracking
 
def perform
set_started_iterations
set_current_iterations
set_closed_iterations
end
 
private
 
def set_started_iterations
def set_current_iterations
Iteration.upcoming.start_date_passed.each_batch(of: BATCH_SIZE) do |iterations|
iterations.update_all(state_enum: ::Iteration::STATE_ENUM_MAP[:started], updated_at: Time.current)
iterations.update_all(state_enum: ::Iteration::STATE_ENUM_MAP[:current], updated_at: Time.current)
end
end
 
def set_closed_iterations
Iteration.upcoming.or(Iteration.started).due_date_passed.each_batch(of: BATCH_SIZE) do |iterations|
Iteration.opened.due_date_passed.each_batch(of: BATCH_SIZE) do |iterations|
closed_iteration_ids = iterations.pluck_primary_key
iterations.update_all(state_enum: ::Iteration::STATE_ENUM_MAP[:closed], updated_at: Time.current)
 
Loading
Loading
Loading
Loading
@@ -8,8 +8,8 @@ class Iterations < ::API::Base
 
helpers do
params :list_params do
optional :state, type: String, values: %w[opened upcoming started closed all], default: 'all',
desc: 'Return "opened", "upcoming", "started", "closed", or "all" milestones'
optional :state, type: String, values: %w[opened upcoming started current closed all], default: 'all',
desc: 'Return "opened", "upcoming", "current(previously started)", "closed", or "all" iterations. Filtering by `started` state is deprecated in 14.1, please use `current` instead.'
optional :search, type: String, desc: 'The search criteria for the title of the iteration'
optional :include_ancestors, type: Grape::API::Boolean, default: true,
desc: 'Include iterations from parent and its ancestors'
Loading
Loading
Loading
Loading
@@ -22,8 +22,8 @@
state_enum { Iteration::STATE_ENUM_MAP[:upcoming] }
end
 
trait :started do
state_enum { Iteration::STATE_ENUM_MAP[:started] }
trait :current do
state_enum { Iteration::STATE_ENUM_MAP[:current] }
end
 
trait :closed do
Loading
Loading
@@ -60,7 +60,7 @@
end
 
factory :upcoming_iteration, traits: [:upcoming]
factory :started_iteration, traits: [:started]
factory :current_iteration, traits: [:current]
factory :closed_iteration, traits: [:closed]
end
end
Loading
Loading
@@ -7,7 +7,7 @@
let_it_be(:group) { create(:group) }
let_it_be(:subgroup) { create(:group, parent: group) }
let_it_be(:user) { create(:user) }
let_it_be(:started_iteration) { create(:iteration, :skip_future_date_validation, group: group, start_date: now - 1.day, due_date: now, title: 'Started iteration') }
let_it_be(:current_iteration) { create(:iteration, :skip_future_date_validation, group: group, start_date: now - 1.day, due_date: now, title: 'Started iteration') }
let_it_be(:upcoming_iteration) { create(:iteration, group: group, start_date: now + 1.day, due_date: now + 2.days) }
let_it_be(:closed_iteration) { create(:closed_iteration, :skip_future_date_validation, group: group, start_date: now - 3.days, due_date: now - 2.days) }
let_it_be(:subgroup_iteration) { create(:iteration, :skip_future_date_validation, group: subgroup, start_date: now - 3.days, due_date: now + 4.days) }
Loading
Loading
@@ -25,7 +25,7 @@
 
it 'shows iterations on each tab' do
aggregate_failures do
expect(page).to have_link(started_iteration.title)
expect(page).to have_link(current_iteration.title)
expect(page).to have_link(upcoming_iteration.title)
expect(page).not_to have_link(closed_iteration.title)
expect(page).not_to have_link(subgroup_iteration.title)
Loading
Loading
@@ -36,7 +36,7 @@
 
aggregate_failures do
expect(page).to have_link(closed_iteration.title)
expect(page).not_to have_link(started_iteration.title)
expect(page).not_to have_link(current_iteration.title)
expect(page).not_to have_link(upcoming_iteration.title)
expect(page).not_to have_link(subgroup_iteration.title)
expect(page).not_to have_link(subgroup_closed_iteration.title)
Loading
Loading
@@ -45,7 +45,7 @@
click_link('All')
 
aggregate_failures do
expect(page).to have_link(started_iteration.title)
expect(page).to have_link(current_iteration.title)
expect(page).to have_link(upcoming_iteration.title)
expect(page).to have_link(closed_iteration.title)
expect(page).not_to have_link(subgroup_iteration.title)
Loading
Loading
@@ -59,7 +59,7 @@
 
wait_for_requests
 
expect(page).to have_current_path(group_iteration_path(group, started_iteration.id))
expect(page).to have_current_path(group_iteration_path(group, current_iteration.id))
end
end
end
Loading
Loading
@@ -71,7 +71,7 @@
 
it 'shows iterations on each tab including ancestor iterations' do
aggregate_failures do
expect(page).to have_link(started_iteration.title)
expect(page).to have_link(current_iteration.title)
expect(page).to have_link(upcoming_iteration.title)
expect(page).not_to have_link(closed_iteration.title)
expect(page).to have_link(subgroup_iteration.title)
Loading
Loading
@@ -83,7 +83,7 @@
aggregate_failures do
expect(page).to have_link(closed_iteration.title)
expect(page).to have_link(subgroup_closed_iteration.title)
expect(page).not_to have_link(started_iteration.title)
expect(page).not_to have_link(current_iteration.title)
expect(page).not_to have_link(upcoming_iteration.title)
expect(page).not_to have_link(subgroup_iteration.title)
end
Loading
Loading
@@ -91,7 +91,7 @@
click_link('All')
 
aggregate_failures do
expect(page).to have_link(started_iteration.title)
expect(page).to have_link(current_iteration.title)
expect(page).to have_link(upcoming_iteration.title)
expect(page).to have_link(closed_iteration.title)
expect(page).to have_link(subgroup_iteration.title)
Loading
Loading
Loading
Loading
@@ -8,7 +8,7 @@
let_it_be(:project) { create(:project, :public, group: group) }
let_it_be(:user) { create(:user) }
 
let!(:started_iteration) { create(:iteration, :skip_future_date_validation, group: group, start_date: now - 1.day, due_date: now, title: 'Started iteration') }
let!(:current_iteration) { create(:iteration, :skip_future_date_validation, group: group, start_date: now - 1.day, due_date: now, title: 'Started iteration') }
let!(:upcoming_iteration) { create(:iteration, group: group, start_date: now + 1.day, due_date: now + 2.days) }
let!(:closed_iteration) { create(:closed_iteration, :skip_future_date_validation, group: group, start_date: now - 3.days, due_date: now - 2.days) }
 
Loading
Loading
@@ -18,19 +18,19 @@
end
 
it 'shows iterations on each tab', :aggregate_failures do
expect(page).to have_link(started_iteration.title, href: project_iteration_path(project, started_iteration.id))
expect(page).to have_link(current_iteration.title, href: project_iteration_path(project, current_iteration.id))
expect(page).to have_link(upcoming_iteration.title, href: project_iteration_path(project, upcoming_iteration.id))
expect(page).not_to have_link(closed_iteration.title)
 
click_link('Closed')
 
expect(page).to have_link(closed_iteration.title, href: project_iteration_path(project, closed_iteration.id))
expect(page).not_to have_link(started_iteration.title)
expect(page).not_to have_link(current_iteration.title)
expect(page).not_to have_link(upcoming_iteration.title)
 
click_link('All')
 
expect(page).to have_link(started_iteration.title, href: project_iteration_path(project, started_iteration.id))
expect(page).to have_link(current_iteration.title, href: project_iteration_path(project, current_iteration.id))
expect(page).to have_link(upcoming_iteration.title, href: project_iteration_path(project, upcoming_iteration.id))
expect(page).to have_link(closed_iteration.title, href: project_iteration_path(project, closed_iteration.id))
end
Loading
Loading
Loading
Loading
@@ -174,7 +174,7 @@
end
 
context 'when current iteration exists' do
let(:current_iteration) { create(:iteration, :started, group: group, start_date: Date.today, due_date: 1.day.from_now) }
let(:current_iteration) { create(:iteration, :current, group: group, start_date: Date.yesterday, due_date: 1.day.from_now) }
 
it 'returns filtered issues' do
expect(issues).to contain_exactly(current_iteration_issue)
Loading
Loading
Loading
Loading
@@ -11,9 +11,9 @@
let_it_be(:iteration_cadence2) { create(:iterations_cadence, group: group, active: true, duration_in_weeks: 2, title: 'two week iterations') }
let_it_be(:iteration_cadence3) { create(:iterations_cadence, group: root, active: true, duration_in_weeks: 3, title: 'three week iterations') }
let_it_be(:closed_iteration) { create(:closed_iteration, :skip_future_date_validation, iterations_cadence: iteration_cadence2, group: iteration_cadence2.group, start_date: 7.days.ago, due_date: 2.days.ago) }
let_it_be(:started_group_iteration) { create(:started_iteration, :skip_future_date_validation, iterations_cadence: iteration_cadence2, group: iteration_cadence2.group, title: 'one test', start_date: 1.day.ago, due_date: Date.today) }
let_it_be(:started_group_iteration) { create(:current_iteration, :skip_future_date_validation, iterations_cadence: iteration_cadence2, group: iteration_cadence2.group, title: 'one test', start_date: 1.day.ago, due_date: Date.today) }
let_it_be(:upcoming_group_iteration) { create(:iteration, iterations_cadence: iteration_cadence1, group: iteration_cadence1.group, start_date: 1.day.from_now, due_date: 3.days.from_now) }
let_it_be(:root_group_iteration) { create(:started_iteration, iterations_cadence: iteration_cadence3, group: iteration_cadence3.group, start_date: 1.day.ago, due_date: 2.days.from_now) }
let_it_be(:root_group_iteration) { create(:current_iteration, iterations_cadence: iteration_cadence3, group: iteration_cadence3.group, start_date: 1.day.ago, due_date: 2.days.from_now) }
let_it_be(:root_closed_iteration) { create(:closed_iteration, iterations_cadence: iteration_cadence3, group: iteration_cadence3.group, start_date: 1.week.ago, due_date: 2.days.ago) }
 
let(:parent) { project_1 }
Loading
Loading
@@ -79,7 +79,7 @@
end
 
it 'filters by started state' do
params[:state] = 'started'
params[:state] = 'current'
 
expect(subject).to contain_exactly(root_group_iteration, started_group_iteration)
end
Loading
Loading
Loading
Loading
@@ -14,7 +14,7 @@
 
let_it_be(:epic) { create(:epic, group: group) }
let_it_be(:iteration) { create(:iteration, group: group, start_date: 1.week.ago, due_date: 2.days.ago) }
let_it_be(:current_iteration) { create(:iteration, :started, group: group, start_date: Date.today, due_date: 1.day.from_now) }
let_it_be(:current_iteration) { create(:iteration, group: group, start_date: Date.yesterday, due_date: 1.day.from_now) }
 
let_it_be(:issue1) { create(:issue, project: project, labels: [label], weight: 3) }
let_it_be(:issue2) { create(:issue, project: project, labels: [label], iteration: iteration) }
Loading
Loading
Loading
Loading
@@ -15,7 +15,7 @@
let_it_be(:epic2) { create :epic, group: group }
 
let_it_be(:iteration1) { create(:iteration, group: group, start_date: 2.weeks.ago, due_date: 1.week.ago) }
let_it_be(:current_iteration) { create(:iteration, :started, group: group, start_date: Date.today, due_date: 1.day.from_now) }
let_it_be(:current_iteration) { create(:iteration, group: group, start_date: Date.yesterday, due_date: 1.day.from_now) }
 
let_it_be(:issue1) { create :issue, project: project, epic: epic1, iteration: iteration1 }
let_it_be(:issue2) { create :issue, project: project, epic: epic2, weight: 1 }
Loading
Loading
Loading
Loading
@@ -93,7 +93,7 @@
 
describe '.filter_by_state' do
let_it_be(:closed_iteration) { create(:iteration, :closed, :skip_future_date_validation, group: group, start_date: 8.days.ago, due_date: 2.days.ago) }
let_it_be(:started_iteration) { create(:iteration, :started, :skip_future_date_validation, group: group, start_date: 1.day.ago, due_date: 6.days.from_now) }
let_it_be(:current_iteration) { create(:iteration, :current, :skip_future_date_validation, group: group, start_date: 1.day.ago, due_date: 6.days.from_now) }
let_it_be(:upcoming_iteration) { create(:iteration, :upcoming, group: group, start_date: 1.week.from_now, due_date: 2.weeks.from_now) }
 
shared_examples_for 'filter_by_state' do
Loading
Loading
@@ -111,15 +111,15 @@
 
context 'filtering by started iterations' do
it_behaves_like 'filter_by_state' do
let(:state) { 'started' }
let(:expected_iterations) { [started_iteration] }
let(:state) { 'current' }
let(:expected_iterations) { [current_iteration] }
end
end
 
context 'filtering by opened iterations' do
it_behaves_like 'filter_by_state' do
let(:state) { 'opened' }
let(:expected_iterations) { [started_iteration, upcoming_iteration] }
let(:expected_iterations) { [current_iteration, upcoming_iteration] }
end
end
 
Loading
Loading
@@ -133,7 +133,7 @@
context 'filtering by "all"' do
it_behaves_like 'filter_by_state' do
let(:state) { 'all' }
let(:expected_iterations) { [closed_iteration, started_iteration, upcoming_iteration] }
let(:expected_iterations) { [closed_iteration, current_iteration, upcoming_iteration] }
end
end
 
Loading
Loading
@@ -438,7 +438,7 @@
let_it_be(:iterations_cadence1) { create(:iterations_cadence, group: group, start_date: 10.days.ago) }
let_it_be(:iterations_cadence2) { create(:iterations_cadence, group: group, start_date: 10.days.ago) }
let_it_be(:closed_iteration) { create(:iteration, :closed, :skip_future_date_validation, iterations_cadence: iterations_cadence1, group: group, start_date: 8.days.ago, due_date: 2.days.ago) }
let_it_be(:started_iteration) { create(:iteration, :started, :skip_future_date_validation, iterations_cadence: iterations_cadence2, group: group, start_date: 1.day.ago, due_date: 6.days.from_now) }
let_it_be(:current_iteration) { create(:iteration, :current, :skip_future_date_validation, iterations_cadence: iterations_cadence2, group: group, start_date: 1.day.ago, due_date: 6.days.from_now) }
let_it_be(:upcoming_iteration) { create(:iteration, :upcoming, iterations_cadence: iterations_cadence2, group: group, start_date: 1.week.from_now, due_date: 2.weeks.from_now) }
 
it 'returns iterations by cadence' do
Loading
Loading
@@ -450,7 +450,7 @@
it 'returns iterations by multiple cadences' do
iterations = described_class.by_iteration_cadence_ids([iterations_cadence1, iterations_cadence2])
 
expect(iterations).to match_array([closed_iteration, started_iteration, upcoming_iteration])
expect(iterations).to match_array([closed_iteration, current_iteration, upcoming_iteration])
end
end
 
Loading
Loading
@@ -479,7 +479,7 @@
it 'sets state to started' do
iteration.save!
 
expect(iteration.state).to eq('started')
expect(iteration.state).to eq('current')
end
end
 
Loading
Loading
@@ -489,7 +489,7 @@
it 'sets state to started' do
iteration.save!
 
expect(iteration.state).to eq('started')
expect(iteration.state).to eq('current')
end
end
 
Loading
Loading
@@ -539,7 +539,7 @@
iteration.due_date += 2.weeks
iteration.save!
 
expect(iteration.state).to eq('started')
expect(iteration.state).to eq('current')
end
end
end
Loading
Loading
Loading
Loading
@@ -11,9 +11,9 @@
let_it_be(:iteration_cadence1) { create(:iterations_cadence, group: group, active: true, duration_in_weeks: 1, title: 'one week iterations') }
let_it_be(:iteration_cadence2) { create(:iterations_cadence, group: group, active: true, duration_in_weeks: 2, title: 'two week iterations') }
 
let_it_be(:started_group_iteration) { create(:started_iteration, :skip_future_date_validation, iterations_cadence: iteration_cadence1, group: iteration_cadence1.group, title: 'one test', start_date: now - 1.day, due_date: now) }
let_it_be(:current_group_iteration) { create(:iteration, :skip_future_date_validation, iterations_cadence: iteration_cadence1, group: iteration_cadence1.group, title: 'one test', start_date: 1.day.ago, due_date: 1.week.from_now) }
let_it_be(:upcoming_group_iteration) { create(:iteration, iterations_cadence: iteration_cadence2, group: iteration_cadence2.group, start_date: 1.day.from_now, due_date: 2.days.from_now) }
let_it_be(:closed_group_iteration) { create(:closed_iteration, :skip_project_validation, iterations_cadence: iteration_cadence1, group: iteration_cadence1.group, start_date: 3.days.from_now, due_date: 4.days.from_now) }
let_it_be(:closed_group_iteration) { create(:iteration, :skip_project_validation, iterations_cadence: iteration_cadence1, group: iteration_cadence1.group, start_date: 3.weeks.ago, due_date: 1.week.ago) }
 
before do
group.add_maintainer(user)
Loading
Loading
@@ -50,7 +50,33 @@
it 'returns iterations' do
post_graphql(iteration_cadence_query(group, [iteration_cadence1.to_global_id, iteration_cadence2.to_global_id]), current_user: user)
 
expect_iterations_response(started_group_iteration, closed_group_iteration, upcoming_group_iteration)
expect_iterations_response(current_group_iteration, closed_group_iteration, upcoming_group_iteration)
end
end
end
describe 'query for iterations by state' do
context 'with DEPRECATED `started` state' do
it 'returns `current` iteration' do
post_graphql(iterations_query(group, "state: started"), current_user: user)
expect_iterations_response(current_group_iteration)
end
end
context 'with `current` state' do
it 'returns `current` iteration' do
post_graphql(iterations_query(group, "state: current"), current_user: user)
expect_iterations_response(current_group_iteration)
end
end
context 'with `closed` state' do
it 'returns `closed` iteration' do
post_graphql(iterations_query(group, "state: closed"), current_user: user)
expect_iterations_response(closed_group_iteration)
end
end
end
Loading
Loading
Loading
Loading
@@ -7,8 +7,8 @@
let_it_be(:parent_group) { create(:group, :private) }
let_it_be(:group) { create(:group, :private, parent: parent_group) }
 
let_it_be(:iteration) { create(:iteration, group: group, title: 'search_title') }
let_it_be(:closed_iteration) { create(:iteration, :closed, group: group, start_date: 2.weeks.ago, due_date: 1.week.ago) }
let_it_be(:current_iteration) { create(:iteration, group: group, title: 'search_title', start_date: 5.days.ago, due_date: 1.week.from_now) }
let_it_be(:closed_iteration) { create(:iteration, group: group, start_date: 2.weeks.ago, due_date: 1.week.ago) }
let_it_be(:ancestor_iteration) { create(:iteration, group: parent_group) }
 
before_all do
Loading
Loading
@@ -30,15 +30,34 @@
 
expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(3)
expect(json_response.map { |i| i['id'] }).to contain_exactly(iteration.id, closed_iteration.id, ancestor_iteration.id)
expect(json_response.map { |i| i['id'] }).to contain_exactly(current_iteration.id, closed_iteration.id, ancestor_iteration.id)
end
 
it 'returns iterations filtered by state' do
get api(api_path, user), params: { state: 'closed' }
context 'filter by iteration state' do
it 'returns `closed` state iterations' do
get api(api_path, user), params: { state: 'closed' }
 
expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(1)
expect(json_response.first['id']).to eq(closed_iteration.id)
expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(1)
expect(json_response.first['id']).to eq(closed_iteration.id)
end
# to be removed when `started` state DEPRECATION is removed, planned for milestone 14.6
it 'returns `current` state iterations' do
get api(api_path, user), params: { state: 'started' }
expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(1)
expect(json_response.first['id']).to eq(current_iteration.id)
end
it 'returns `current` state iterations' do
get api(api_path, user), params: { state: 'current' }
expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(1)
expect(json_response.first['id']).to eq(current_iteration.id)
end
end
 
it 'returns iterations filtered by title' do
Loading
Loading
@@ -46,7 +65,7 @@
 
expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(1)
expect(json_response.first['id']).to eq(iteration.id)
expect(json_response.first['id']).to eq(current_iteration.id)
end
 
it 'returns 400 when param is invalid' do
Loading
Loading
@@ -67,7 +86,7 @@
 
expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(2)
expect(json_response.map { |i| i['id'] }).to contain_exactly(iteration.id, closed_iteration.id)
expect(json_response.map { |i| i['id'] }).to contain_exactly(current_iteration.id, closed_iteration.id)
end
end
 
Loading
Loading
@@ -82,7 +101,7 @@
get api(api_path, user), params: { include_ancestors: false }
 
expect(response).to have_gitlab_http_status(:ok)
expect(json_response.map { |i| i['id'] }).to contain_exactly(iteration.id, closed_iteration.id)
expect(json_response.map { |i| i['id'] }).to contain_exactly(current_iteration.id, closed_iteration.id)
end
end
end
Loading
Loading
@@ -9,7 +9,7 @@
let_it_be(:project) { create(:project, :repository, group: group) }
let_it_be(:user) { create(:user) }
let_it_be(:iteration_cadence, refind: true) { create(:iterations_cadence, group: group, start_date: Date.today, duration_in_weeks: 1, iterations_in_advance: 2) }
let_it_be(:iteration) { create(:started_iteration, group: group, start_date: 2.days.ago, due_date: 5.days.from_now) }
let_it_be(:iteration) { create(:current_iteration, group: group, start_date: 2.days.ago, due_date: 5.days.from_now) }
let_it_be(:iteration_list, refind: true) { create(:iteration_list, iteration: iteration) }
let_it_be(:iteration_event, refind: true) { create(:resource_iteration_event, iteration: iteration) }
let_it_be(:board) { create(:board, iteration: iteration, group: group) }
Loading
Loading
Loading
Loading
@@ -17,7 +17,7 @@
let_it_be(:past_issue, refind: true) { create(:issue, namespace: group, iteration: past_iteration) }
let_it_be(:past_merge_request, refind: true) { create(:merge_request, source_project: project, iteration: past_iteration) }
 
let_it_be(:current_iteration, refind: true) { create(:started_iteration, iterations_cadence: iteration_cadence1, group: group, start_date: start_date + 14.days, due_date: start_date + 27.days) }
let_it_be(:current_iteration, refind: true) { create(:current_iteration, iterations_cadence: iteration_cadence1, group: group, start_date: start_date + 14.days, due_date: start_date + 27.days) }
 
let_it_be(:future_iteration, refind: true) { create(:upcoming_iteration, iterations_cadence: iteration_cadence1, group: group, start_date: start_date + 28.days, due_date: start_date + 41.days) }
 
Loading
Loading
@@ -26,7 +26,7 @@
let_it_be(:last_future_issue, refind: true) { create(:issue, namespace: group, iteration: last_future_iteration) }
let_it_be(:last_future_merge_request, refind: true) { create(:merge_request, source_branch: 'another-feature', source_project: project, iteration: last_future_iteration) }
 
let_it_be(:other_cadence_iteration, refind: true) { create(:started_iteration, iterations_cadence: iteration_cadence2, group: group, start_date: start_date + 14.days, due_date: start_date + 27.days) }
let_it_be(:other_cadence_iteration, refind: true) { create(:current_iteration, iterations_cadence: iteration_cadence2, group: group, start_date: start_date + 14.days, due_date: start_date + 27.days) }
let_it_be(:other_cadence_board, refind: true) { create(:board, iteration: other_cadence_iteration, group: group) }
let_it_be(:other_cadence_issue, refind: true) { create(:issue, namespace: group, iteration: other_cadence_iteration) }
let_it_be(:other_cadence_merge_request, refind: true) { create(:merge_request, source_branch: 'another-feature2', source_project: project, iteration: other_cadence_iteration) }
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment