Sha256: 5e197cf0b122ce4eab611267dcebd950d9caac60e568cbf137321138a0eabfab

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

module ActiveRecordMigrationUi
  class EnsureMigrationVersionIsIncludedInPendingScripts
    include Interactor

    def call
      sanity_checks!

      return if version_is_included_in_pending_scripts?

      context.fail!(errors: {
        version: 'was not found in pending migration script list'
      })
    end

    private

    def sanity_checks!
      unless context.version
        context.fail!(errors: { version: 'is missing' })
      end

      unless context.version =~ /\d+/
        context.fail!(errors: {
          version: 'is invalid (Expected numbers like 20180323142544).'
        })
      end

      unless context.scripts
        context.fail!(errors: { scripts: 'is missing' })
      end

      unless context.scripts.is_a?(Array)
        context.fail!(errors: {
          scripts: "must be an Array but it #{context.scripts.class.name}"
        })
      end

      return unless context.scripts.size.zero?

      context.fail!(errors: {
        scripts: 'must contain migration scripts, but is empty'
      })
    end

    def version_is_included_in_pending_scripts?
      context.scripts.detect { |script| script[:version] == context.version }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
active_record_migration_ui-0.1.2 app/interactors/active_record_migration_ui/ensure_migration_version_is_included_in_pending_scripts.rb
active_record_migration_ui-0.1.1 app/interactors/active_record_migration_ui/ensure_migration_version_is_included_in_pending_scripts.rb
active_record_migration_ui-0.1.0 app/interactors/active_record_migration_ui/ensure_migration_version_is_included_in_pending_scripts.rb