Sha256: 26a8396db520e4be0e4d0f01b46e7a2245d37e212f0ed1f223becfec3776252c

Contents?: true

Size: 1.05 KB

Versions: 3

Compression:

Stored size: 1.05 KB

Contents

module MinceMigrator
  module Migrations
    require_relative '../migration'
    require_relative 'runner_validator'
    require 'mince/config'

    class RunnerValidator
      attr_reader :migration, :errors

      def initialize(migration)
        @migration = migration
      end

      def call
        @errors = []
        run_validations
        errors.empty?
      end

      def run_validations
        validate_mince_interface
        validate_migration_exists
        validate_migration_not_ran
      end

      def validate_migration_not_ran
        @errors << "Migration has already ran" if interface_is_set? && migration_exists? && migration.ran?
      end

      def validate_migration_exists
        @errors << "Migration does not exist" if interface_is_set? && !migration_exists?
      end

      def migration_exists?
        !!migration
      end

      def validate_mince_interface
        @errors << "Mince interface is not set" unless interface_is_set?
      end

      def interface_is_set?
        !!Mince::Config.interface
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mince_migrator-1.0.2 lib/mince_migrator/migrations/runner_validator.rb
mince_migrator-1.0.1 lib/mince_migrator/migrations/runner_validator.rb
mince_migrator-1.0.0 lib/mince_migrator/migrations/runner_validator.rb