Sha256: 2ffae07dda91b71a70e893b96d354087861258110f47d49d37c8473f5bab71da

Contents?: true

Size: 1.51 KB

Versions: 2

Compression:

Stored size: 1.51 KB

Contents

require 'spec_helper'

describe SchemaMonkey do

  it "doesn't register same client's middleware twice" do
    base = Module.new.tap { |e| e.module_eval(<<-END) }
      module Middleware
        module Group
          module Stack
            ENV = [:result]
          end
        end
      end
    END
    mod = Module.new.tap { |e| e.module_eval(<<-END) }
      module Middleware
        module Group
          module Stack
            def after(env)
              env.result += 1
            end
          end
        end
      end
    END

    SchemaMonkey.register(base)
    expect( SchemaMonkey::Middleware::Group::Stack.start(result: 0) {}.result ).to eq 0
    SchemaMonkey.register(mod)
    expect( SchemaMonkey::Middleware::Group::Stack.start(result: 0) {}.result ).to eq 1
    SchemaMonkey.register(mod)
    expect( SchemaMonkey::Middleware::Group::Stack.start(result: 0) {}.result ).to eq 1
  end

  it "doesn't register same client's ActiveRecord extensions twice" do
    mod = Module.new.tap{ |e| e.module_eval(<<-END) }
      module ActiveRecord
        module Base
          def monkey_test
            (super rescue 0) + 1
          end
        end
      end
    END
    ActiveRecord::Migration.suppress_messages do
      ActiveRecord::Migration.create_table "dummy", force: :cascade
    end
    record = Class.new(ActiveRecord::Base).tap{ |kls| kls.table_name = "dummy" }.new
    SchemaMonkey.register mod
    expect( record.monkey_test ).to eq 1
    SchemaMonkey.register mod
    expect( record.monkey_test ).to eq 1
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
schema_monkey-3.0.1 spec/schema_monkey_spec.rb
schema_monkey-3.0.0 spec/schema_monkey_spec.rb