class Viperaptor::ModuleValidator

Provides methods for validating module

Constants

TARGET_TYPE_PROJECT
TARGET_TYPE_TEST

Public Instance Methods

validate(code_module) click to toggle source

Method validates module @param code_module [CodeModule] The instance of CodeModule

@return [Void]

# File lib/viperaptor/helpers/module_validator.rb, line 12
def validate(code_module)
  mandatory_fields = [COMPANY_KEY,
                      PROJECT_NAME_KEY,
                      XCODEPROJ_PATH_KEY]

  mandatory_fields.each do |field|
    unless code_module.instance_variable_get("@#{field}")
      puts "Module is broken! *#{field}* field cannot be empty, because it is mandatory.".red
      exit
    end
  end

  project_failure_fields = all_project_failure_fields(code_module)
  test_failure_fields = all_test_failure_fields(code_module)
  failure_fields = project_failure_fields + test_failure_fields

  if failure_fields.count > 0
    puts "Module is broken! *#{failure_fields}* field cannot be empty, because it is mandatory.".red
    exit
  end
end

Private Instance Methods

all_nil_mandatory_fields_for_target_type(target_type, code_module) click to toggle source

Method which return all failure fields for target_type @param target_type [String] “project” or “test” @param code_module [CodeModule] The instance of CodeModule

@return [Array]

# File lib/viperaptor/helpers/module_validator.rb, line 61
def all_nil_mandatory_fields_for_target_type(target_type, code_module)
  fields = []

  variable_name = "#{target_type}_targets"

  unless code_module.instance_variable_get("@#{variable_name}")
    target_const_value = Viperaptor.const_get(target_type.upcase + '_TARGET_KEY')
    targets_const_value = Viperaptor.const_get(target_type.upcase + '_TARGETS_KEY')
    fields.push(target_const_value)
    fields.push(targets_const_value)
  end

  variable_name = "#{target_type}_file_path"
  file_path_const_value = Viperaptor.const_get(target_type.upcase + '_FILE_PATH_KEY')
  fields.push(file_path_const_value) unless code_module.instance_variable_get("@#{variable_name}")

  variable_name = "#{target_type}_group_path"
  group_path_const_value = Viperaptor.const_get(target_type.upcase + '_GROUP_PATH_KEY')
  fields.push(group_path_const_value) unless code_module.instance_variable_get("@#{variable_name}")

  fields
end
all_project_failure_fields(code_module) click to toggle source

Method which return all project failure fields @param code_module [CodeModule] The instance of CodeModule

@return [Array]

# File lib/viperaptor/helpers/module_validator.rb, line 40
def all_project_failure_fields(code_module)
  return [] if !code_module.project_targets && !code_module.project_file_path && !code_module.project_group_path

  all_nil_mandatory_fields_for_target_type(TARGET_TYPE_PROJECT, code_module)
end
all_test_failure_fields(code_module) click to toggle source

Method which return all test failure fields @param code_module [CodeModule] The instance of CodeModule

@return [Array]

# File lib/viperaptor/helpers/module_validator.rb, line 50
def all_test_failure_fields(code_module)
  return [] if !code_module.test_targets && !code_module.test_file_path && !code_module.test_group_path

  all_nil_mandatory_fields_for_target_type(TARGET_TYPE_TEST, code_module)
end