summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-06-17 12:06:48 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-06-17 12:06:48 +0200
commitd9ca84015c04d8836c09c3ebb70a8240262b60e8 (patch)
tree2a67fb3dec879e29ecb8592c14acf7674e238227
parenta9bd16bd0a44332133d0f9fd859d9ffaba9e262f (diff)
downloadgitlab-ce-d9ca84015c04d8836c09c3ebb70a8240262b60e8.tar.gz
Add first custom validator for new ci config
This follows a standard `ActiveModel` pattern of creating a custom validators. We use `ActiveModel::EachValidator` here that reuses methods provided by `LegacyValidationHelpers`. We will remove `LegacyValidationHelpers` on some point in the future, at the later stages of CI configuration refactoring. It may be possible to rewrite custom validators to use format like: `validates :config, array_of: String`
-rw-r--r--lib/gitlab/ci/config/node/script.rb10
-rw-r--r--lib/gitlab/ci/config/node/validator.rb1
-rw-r--r--lib/gitlab/ci/config/node/validators.rb19
-rw-r--r--spec/lib/gitlab/ci/config/node/validators/array_of_strings_validator_spec.rb0
4 files changed, 21 insertions, 9 deletions
diff --git a/lib/gitlab/ci/config/node/script.rb b/lib/gitlab/ci/config/node/script.rb
index 44490096f28..c044f5c5e71 100644
--- a/lib/gitlab/ci/config/node/script.rb
+++ b/lib/gitlab/ci/config/node/script.rb
@@ -14,15 +14,7 @@ module Gitlab
include Validatable
validations do
- include LegacyValidationHelpers
-
- validate :array_of_strings
-
- def array_of_strings
- unless validate_array_of_strings(self.config)
- errors.add(:config, 'should be an array of strings')
- end
- end
+ validates :config, array_of_strings: true
end
def value
diff --git a/lib/gitlab/ci/config/node/validator.rb b/lib/gitlab/ci/config/node/validator.rb
index 2454cc6d957..02edc9219c3 100644
--- a/lib/gitlab/ci/config/node/validator.rb
+++ b/lib/gitlab/ci/config/node/validator.rb
@@ -4,6 +4,7 @@ module Gitlab
module Node
class Validator < SimpleDelegator
include ActiveModel::Validations
+ include Node::Validators
def initialize(node)
super(node)
diff --git a/lib/gitlab/ci/config/node/validators.rb b/lib/gitlab/ci/config/node/validators.rb
new file mode 100644
index 00000000000..36d48394a8c
--- /dev/null
+++ b/lib/gitlab/ci/config/node/validators.rb
@@ -0,0 +1,19 @@
+module Gitlab
+ module Ci
+ class Config
+ module Node
+ module Validators
+ class ArrayOfStringsValidator < ActiveModel::EachValidator
+ include LegacyValidationHelpers
+
+ def validate_each(record, attribute, value)
+ unless validate_array_of_strings(value)
+ record.errors.add(attribute, 'should be an array of strings')
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/config/node/validators/array_of_strings_validator_spec.rb b/spec/lib/gitlab/ci/config/node/validators/array_of_strings_validator_spec.rb
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/spec/lib/gitlab/ci/config/node/validators/array_of_strings_validator_spec.rb