summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/status/factory.rb
diff options
context:
space:
mode:
authorValery Sizov <valery@gitlab.com>2016-12-14 12:36:27 +0200
committerValery Sizov <valery@gitlab.com>2016-12-14 12:36:27 +0200
commit468d575fc73881900f4a4cb1fa71c187d77429a7 (patch)
tree05b00d7f00e04202c34de41e6feb566426e19e3f /lib/gitlab/ci/status/factory.rb
parent8f0cef0b6e5e950efdf3ebfe8f9f846095fff9d9 (diff)
parent78f89f7ad900ec2f2993a70caa2eb5dbf9e2496f (diff)
downloadgitlab-ce-468d575fc73881900f4a4cb1fa71c187d77429a7.tar.gz
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce into bitbucket-oauth2
Diffstat (limited to 'lib/gitlab/ci/status/factory.rb')
-rw-r--r--lib/gitlab/ci/status/factory.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/gitlab/ci/status/factory.rb b/lib/gitlab/ci/status/factory.rb
new file mode 100644
index 00000000000..b2f896f2211
--- /dev/null
+++ b/lib/gitlab/ci/status/factory.rb
@@ -0,0 +1,43 @@
+module Gitlab
+ module Ci
+ module Status
+ class Factory
+ attr_reader :subject
+
+ def initialize(subject)
+ @subject = subject
+ end
+
+ def fabricate!
+ if extended_status
+ extended_status.new(core_status)
+ else
+ core_status
+ end
+ end
+
+ private
+
+ def subject_status
+ @subject_status ||= subject.status
+ end
+
+ def core_status
+ Gitlab::Ci::Status
+ .const_get(subject_status.capitalize)
+ .new(subject)
+ end
+
+ def extended_status
+ @extended ||= extended_statuses.find do |status|
+ status.matches?(subject)
+ end
+ end
+
+ def extended_statuses
+ []
+ end
+ end
+ end
+ end
+end