module FreckleIO::Validator::Project

Public Class Methods

validation(params, valid_keys) click to toggle source

rubocop:disable Metrics/MethodLength, rubocop:disable Metrics/AbcSize, rubocop:disable Lint/NestedMethodDefinition

# File lib/freckle_io/validator/project.rb, line 7
def self.validation(params, valid_keys)
  Dry::Validation.Schema do
    configure do
      config.messages_file = File.join(
        __dir__, "validation.yml"
      )
      config.namespace = :project

      predicates(RestrictedHash)

      option :allowed_keys

      def valid_increment
        %w(1 5 6 10 15)
      end

      def valid_increment?(_options, values)
        values.split(",").all? do |value|
          valid_increment.include?(value)
        end
      end
    end

    restricted_hash?(allowed_keys) do
      optional(:name).filled :str?
      optional(:project_group_ids).filled :str?
      optional(:billing_increment).filled :str?
      optional(:billing_increment).filled(valid_increment?: {})
      optional(:enabled).filled :bool?
      optional(:billable).filled :bool?
      optional(:per_page).filled :int?
    end
  end.with(allowed_keys: valid_keys).call(params)
end

Public Instance Methods

valid_increment() click to toggle source
# File lib/freckle_io/validator/project.rb, line 19
def valid_increment
  %w(1 5 6 10 15)
end
valid_increment?(_options, values) click to toggle source
# File lib/freckle_io/validator/project.rb, line 23
def valid_increment?(_options, values)
  values.split(",").all? do |value|
    valid_increment.include?(value)
  end
end