Commit f9fcd2b4 authored by Robert Speicher's avatar Robert Speicher

Merge branch 'dm-project-factory-import-state' into 'master'

Fix project factory `import_*` traits

Closes gitlab-ee#5904

See merge request gitlab-org/gitlab-ce!18780
parents b69ade5d cfa798da
......@@ -657,8 +657,8 @@ class Project < ActiveRecord::Base
}
end
def ensure_import_state
return if self[:import_status] == 'none' || self[:import_status].nil?
def ensure_import_state(force: false)
return if !force && (self[:import_status] == 'none' || self[:import_status].nil?)
return unless import_state.nil?
create_import_state(import_state_args)
......@@ -667,39 +667,39 @@ class Project < ActiveRecord::Base
end
def import_schedule
ensure_import_state
ensure_import_state(force: true)
import_state&.schedule
import_state.schedule
end
def force_import_start
ensure_import_state
ensure_import_state(force: true)
import_state&.force_start
import_state.force_start
end
def import_start
ensure_import_state
ensure_import_state(force: true)
import_state&.start
import_state.start
end
def import_fail
ensure_import_state
ensure_import_state(force: true)
import_state&.fail_op
import_state.fail_op
end
def import_finish
ensure_import_state
ensure_import_state(force: true)
import_state&.finish
import_state.finish
end
def import_jid=(new_jid)
ensure_import_state
ensure_import_state(force: true)
import_state&.jid = new_jid
import_state.jid = new_jid
end
def import_jid
......@@ -709,9 +709,9 @@ class Project < ActiveRecord::Base
end
def import_error=(new_error)
ensure_import_state
ensure_import_state(force: true)
import_state&.last_error = new_error
import_state.last_error = new_error
end
def import_error
......@@ -721,9 +721,9 @@ class Project < ActiveRecord::Base
end
def import_status=(new_status)
ensure_import_state
ensure_import_state(force: true)
import_state&.status = new_status
import_state.status = new_status
end
def import_status
......
......@@ -69,43 +69,19 @@ FactoryBot.define do
end
trait :import_scheduled do
transient do
status :scheduled
end
before(:create) do |project, evaluator|
project.create_import_state(status: evaluator.status)
end
import_status :scheduled
end
trait :import_started do
transient do
status :started
end
before(:create) do |project, evaluator|
project.create_import_state(status: evaluator.status)
end
import_status :started
end
trait :import_finished do
transient do
status :finished
end
before(:create) do |project, evaluator|
project.create_import_state(status: evaluator.status)
end
import_status :finished
end
trait :import_failed do
transient do
status :failed
end
before(:create) do |project, evaluator|
project.create_import_state(status: evaluator.status)
end
import_status :failed
end
trait :archived do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment