Sha256: 32d8f2b4538fc33796e48c2e97c75fa3db7cdd87c23f0317bcbc80eab5e8ee9e

Contents?: true

Size: 1.63 KB

Versions: 2

Compression:

Stored size: 1.63 KB

Contents

#
#  Copyright (c) 2011, SoundCloud Ltd., Rany Keddo, Tobias Bielohlawek, Tobias
#  Schmidt
#

require File.expand_path(File.dirname(__FILE__)) + '/integration_helper'

require 'lhm/table'
require 'lhm/migration'
require 'lhm/entangler'

describe Lhm::Entangler do
  include IntegrationHelper

  before(:each) { connect! }

  describe "entanglement" do
    before(:each) do
      @origin = table_create("origin")
      @destination = table_create("destination")
      @migration = Lhm::Migration.new(@origin, @destination)
      @entangler = Lhm::Entangler.new(@migration, connection)
    end

    it "should replay inserts from origin into destination" do
      @entangler.run do |entangler|
        execute("insert into origin (common) values ('inserted')")
      end

      count(:destination, "common", "inserted").must_equal(1)
    end

    it "should replay deletes from origin into destination" do
      execute("insert into origin (common) values ('inserted')")

      @entangler.run do |entangler|
        execute("delete from origin where common = 'inserted'")
      end

      count(:destination, "common", "inserted").must_equal(0)
    end

    it "should replay updates from origin into destination" do
      @entangler.run do |entangler|
        execute("insert into origin (common) values ('inserted')")
        execute("update origin set common = 'updated'")
      end

      count(:destination, "common", "updated").must_equal(1)
    end

    it "should remove entanglement" do
      @entangler.run {}

      execute("insert into origin (common) values ('inserted')")
      count(:destination, "common", "inserted").must_equal(0)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lhm-1.0.0.rc2 spec/integration/entangler_spec.rb
lhm-1.0.0.rc.1 spec/integration/entangler_spec.rb