From f5aced5827aca22de4cc62bbae862c9138961ac9 Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Wed, 26 Nov 2014 19:46:04 +0400 Subject: [PATCH] refactore validators --- .../db/mongo/models/deploy_env_base.rb | 23 +++++++++++++++---- .../db/mongo/models/deploy_env_static.rb | 8 +++---- devops-service/devops-service.rb | 2 +- .../10_create/40_deploy_env.feature.erb | 2 +- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/devops-service/db/mongo/models/deploy_env_base.rb b/devops-service/db/mongo/models/deploy_env_base.rb index d72e5f9..2e9c35f 100644 --- a/devops-service/db/mongo/models/deploy_env_base.rb +++ b/devops-service/db/mongo/models/deploy_env_base.rb @@ -20,10 +20,9 @@ class DeployEnvBase < MongoModel def validate! super - Validators::DeployEnv::RunList.new(self).validate! - Validators::DeployEnv::Expiration.new(self).validate! - - check_users!(self.users) + self.class.validators.each do |validator| + validator.new(self).validate! + end end def to_hash @@ -36,4 +35,20 @@ class DeployEnvBase < MongoModel } end + + # class methods + class << self + + def validators + @validators + end + + private + + def set_validators(*validators) + @validators = validators + end + + end + end diff --git a/devops-service/db/mongo/models/deploy_env_static.rb b/devops-service/db/mongo/models/deploy_env_static.rb index b3cddb8..c6fc843 100644 --- a/devops-service/db/mongo/models/deploy_env_static.rb +++ b/devops-service/db/mongo/models/deploy_env_static.rb @@ -8,6 +8,10 @@ class DeployEnvStatic < DeployEnvBase :run_list => {:type => Array, :empty => true}, :users => {:type => Array, :empty => true} + set_validators ::Validators::DeployEnv::RunList, + ::Validators::DeployEnv::Expiration, + ::Validators::DeployEnv::Users + def initialize d={} super(d) =begin @@ -21,10 +25,6 @@ class DeployEnvStatic < DeployEnvBase =end end - def validate! - super - end - def to_hash super =begin diff --git a/devops-service/devops-service.rb b/devops-service/devops-service.rb index d985f13..251450c 100644 --- a/devops-service/devops-service.rb +++ b/devops-service/devops-service.rb @@ -8,8 +8,8 @@ require "fileutils" $:.push File.dirname(__FILE__) require "db/exceptions/invalid_record" require "db/exceptions/record_not_found" -require "db/mongo/mongo_connector" require "db/validators/all" +require "db/mongo/mongo_connector" require "providers/provider_factory" require "routes/v2.0" diff --git a/devops-service/tests/templates/api_v2/10_create/40_deploy_env.feature.erb b/devops-service/tests/templates/api_v2/10_create/40_deploy_env.feature.erb index 4fafb62..728b6a4 100644 --- a/devops-service/tests/templates/api_v2/10_create/40_deploy_env.feature.erb +++ b/devops-service/tests/templates/api_v2/10_create/40_deploy_env.feature.erb @@ -101,7 +101,7 @@ Feature: Create deploy env Then response should be '400' @static - Scenario: Send deploy env with invalid user (not present in mongo) for project <%= project_name %> + Scenario: Send deploy env with invalid user (missing in mongo) for project <%= project_name %> When I send PUT '/v2.0/project/<%= project_name %>' query with JSON body """ {