Sha256: e5f1360874994695d4c67ce95c710ed8abf9388336ebd3835000480aac6f6c3c

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

require "spec_helper"
require "json"

describe "Sequel::Plugins::Bitemporal", :skip_jdbc_sqlite do
  before :all do
    db_setup
    @version_class.instance_eval do
      plugin :serialization
      serialize_attributes :json, :name
    end
  end
  subject{ @master_class.new.update_attributes name: {test: 1}, price: 18 }
  it "serializes as expected" do
    expect(subject.name).to eq({"test" => 1})
  end
  it "doesn't create a new version when value hasn't changed" do
    name = subject.name.dup
    name["test"] = 1
    subject.attributes = {name: name}
    expect{ subject.save }.not_to change(@version_class, :count)
  end
  it "doesn't create a new version when value is the same" do
    subject.attributes = {name: {"test" => 1}}
    expect{ subject.save }.not_to change(@version_class, :count)
  end
  it "does create a new version when value has changed" do
    name = subject.name.dup
    name["test"] = 0
    subject.attributes = {name: name}
    expect{ subject.save }.to change(@version_class, :count).by 1
  end
  it "does create a new version when value is not the same" do
    subject.attributes = {name: {"test" => 0}}
    expect{ subject.save }.to change(@version_class, :count).by 1
  end
  it "does allow to restore" do
    subject.current_version.destroy
    subject.reload
    expect{ subject.restore }.to change(@version_class, :count).by 1
    expect(subject.name).to eq({"test" => 1})
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sequel_bitemporal-0.8.4 spec/bitemporal_serialization_spec.rb
sequel_bitemporal-0.8.3 spec/bitemporal_serialization_spec.rb
sequel_bitemporal-0.8.2 spec/bitemporal_serialization_spec.rb