Convert test/unit/serializer_test to rspec
This commit is contained in:
parent
e172c808da
commit
8dae6f66b2
|
@ -1,5 +1,5 @@
|
|||
require "rails_helper"
|
||||
require Rails.root.join("..", "custom_json_serializer")
|
||||
require "support/custom_json_serializer"
|
||||
|
||||
RSpec.describe Boolit, type: :model, versioning: true do
|
||||
subject { Boolit.create! }
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
require "rails_helper"
|
||||
require "support/custom_json_serializer"
|
||||
|
||||
RSpec.describe(PaperTrail, versioning: true) do
|
||||
context "YAML serializer" do
|
||||
it "saves the expected YAML in the object column" do
|
||||
customer = Customer.create(name: "Some text.")
|
||||
original_attributes = customer.paper_trail.attributes_before_change
|
||||
customer.update(name: "Some more text.")
|
||||
expect(customer.versions.length).to(eq(2))
|
||||
expect(customer.versions[0].reify).to(be_nil)
|
||||
expect(customer.versions[1].reify.name).to(eq("Some text."))
|
||||
expect(YAML.load(customer.versions[1].object)).to(eq(original_attributes))
|
||||
expect(customer.versions[1].object).to(eq(YAML.dump(original_attributes)))
|
||||
end
|
||||
end
|
||||
|
||||
context "JSON Serializer" do
|
||||
before do
|
||||
PaperTrail.configure do |config|
|
||||
config.serializer = PaperTrail::Serializers::JSON
|
||||
end
|
||||
end
|
||||
|
||||
after do
|
||||
PaperTrail.config.serializer = PaperTrail::Serializers::YAML
|
||||
end
|
||||
|
||||
it "reify with JSON serializer" do
|
||||
customer = Customer.create(name: "Some text.")
|
||||
original_attributes = customer.paper_trail.attributes_before_change
|
||||
customer.update(name: "Some more text.")
|
||||
expect(customer.versions.length).to(eq(2))
|
||||
expect(customer.versions[0].reify).to(be_nil)
|
||||
expect(customer.versions[1].reify.name).to(eq("Some text."))
|
||||
expect(ActiveSupport::JSON.decode(customer.versions[1].object)).to(eq(original_attributes))
|
||||
expect(customer.versions[1].object).to(eq(ActiveSupport::JSON.encode(original_attributes)))
|
||||
end
|
||||
|
||||
describe "#changeset" do
|
||||
it "returns the expected hash" do
|
||||
customer = Customer.create(name: "Some text.")
|
||||
customer.update(name: "Some more text.")
|
||||
initial_changeset = { "name" => [nil, "Some text."], "id" => [nil, customer.id] }
|
||||
second_changeset = { "name" => ["Some text.", "Some more text."] }
|
||||
expect(customer.versions[0].changeset).to(eq(initial_changeset))
|
||||
expect(customer.versions[1].changeset).to(eq(second_changeset))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "Custom Serializer" do
|
||||
before do
|
||||
PaperTrail.configure { |config| config.serializer = CustomJsonSerializer }
|
||||
end
|
||||
|
||||
after do
|
||||
PaperTrail.config.serializer = PaperTrail::Serializers::YAML
|
||||
end
|
||||
|
||||
it "reify with custom serializer" do
|
||||
customer = Customer.create
|
||||
original_attributes = customer.paper_trail.attributes_before_change.reject { |_k, v| v.nil? }
|
||||
customer.update(name: "Some more text.")
|
||||
expect(customer.versions.length).to(eq(2))
|
||||
expect(customer.versions[0].reify).to(be_nil)
|
||||
expect(customer.versions[1].reify.name).to(be_nil)
|
||||
expect(
|
||||
ActiveSupport::JSON.decode(customer.versions[1].object)
|
||||
).to eq(original_attributes)
|
||||
expect(
|
||||
customer.versions[1].object
|
||||
).to eq(ActiveSupport::JSON.encode(original_attributes))
|
||||
end
|
||||
|
||||
describe "#changeset" do
|
||||
it "store object_changes" do
|
||||
customer = Customer.create
|
||||
customer.update(name: "banana")
|
||||
expect(customer.versions[0].changeset).to eq("id" => [nil, customer.id])
|
||||
expect(customer.versions[1].changeset).to eq("name" => [nil, "banana"])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,107 +0,0 @@
|
|||
require "test_helper"
|
||||
require "custom_json_serializer"
|
||||
|
||||
class SerializerTest < ActiveSupport::TestCase
|
||||
context "YAML Serializer" do
|
||||
setup do
|
||||
@customer = Customer.create name: "Some text."
|
||||
|
||||
# this is exactly what PaperTrail serializes
|
||||
@original_attributes = @customer.paper_trail.attributes_before_change
|
||||
|
||||
@customer.update_attributes name: "Some more text."
|
||||
end
|
||||
|
||||
should "work with the default `YAML` serializer" do
|
||||
# Normal behaviour
|
||||
assert_equal 2, @customer.versions.length
|
||||
assert_nil @customer.versions[0].reify
|
||||
assert_equal "Some text.", @customer.versions[1].reify.name
|
||||
|
||||
# Check values are stored as `YAML`.
|
||||
assert_equal @original_attributes, YAML.load(@customer.versions[1].object)
|
||||
assert_equal YAML.dump(@original_attributes), @customer.versions[1].object
|
||||
end
|
||||
end
|
||||
|
||||
context "JSON Serializer" do
|
||||
setup do
|
||||
PaperTrail.configure do |config|
|
||||
config.serializer = PaperTrail::Serializers::JSON
|
||||
end
|
||||
|
||||
@customer = Customer.create name: "Some text."
|
||||
|
||||
# this is exactly what PaperTrail serializes
|
||||
@original_attributes = @customer.paper_trail.attributes_before_change
|
||||
|
||||
@customer.update_attributes name: "Some more text."
|
||||
end
|
||||
|
||||
teardown do
|
||||
PaperTrail.config.serializer = PaperTrail::Serializers::YAML
|
||||
end
|
||||
|
||||
should "reify with JSON serializer" do
|
||||
# Normal behaviour
|
||||
assert_equal 2, @customer.versions.length
|
||||
assert_nil @customer.versions[0].reify
|
||||
assert_equal "Some text.", @customer.versions[1].reify.name
|
||||
|
||||
# Check values are stored as JSON.
|
||||
assert_equal @original_attributes,
|
||||
ActiveSupport::JSON.decode(@customer.versions[1].object)
|
||||
assert_equal ActiveSupport::JSON.encode(@original_attributes),
|
||||
@customer.versions[1].object
|
||||
end
|
||||
|
||||
should "store object_changes" do
|
||||
initial_changeset = { "name" => [nil, "Some text."], "id" => [nil, @customer.id] }
|
||||
second_changeset = { "name" => ["Some text.", "Some more text."] }
|
||||
assert_equal initial_changeset, @customer.versions[0].changeset
|
||||
assert_equal second_changeset, @customer.versions[1].changeset
|
||||
end
|
||||
end
|
||||
|
||||
context "Custom Serializer" do
|
||||
setup do
|
||||
PaperTrail.configure do |config|
|
||||
config.serializer = CustomJsonSerializer
|
||||
end
|
||||
|
||||
@customer = Customer.create
|
||||
|
||||
# this is exactly what PaperTrail serializes
|
||||
@original_attributes = @customer.
|
||||
paper_trail.
|
||||
attributes_before_change.
|
||||
reject { |_k, v| v.nil? }
|
||||
|
||||
@customer.update_attributes name: "Some more text."
|
||||
end
|
||||
|
||||
teardown do
|
||||
PaperTrail.config.serializer = PaperTrail::Serializers::YAML
|
||||
end
|
||||
|
||||
should "reify with custom serializer" do
|
||||
# Normal behaviour
|
||||
assert_equal 2, @customer.versions.length
|
||||
assert_nil @customer.versions[0].reify
|
||||
assert_nil @customer.versions[1].reify.name
|
||||
|
||||
# Check values are stored as JSON.
|
||||
assert_equal @original_attributes,
|
||||
ActiveSupport::JSON.decode(@customer.versions[1].object)
|
||||
assert_equal ActiveSupport::JSON.encode(@original_attributes),
|
||||
@customer.versions[1].object
|
||||
end
|
||||
|
||||
should "store object_changes" do
|
||||
initial_changeset = { "id" => [nil, @customer.id] }
|
||||
second_changeset = { "name" => [nil, "Some more text."] }
|
||||
assert_equal initial_changeset, @customer.versions[0].changeset
|
||||
assert_equal second_changeset, @customer.versions[1].changeset
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,5 +1,5 @@
|
|||
require "test_helper"
|
||||
require "custom_json_serializer"
|
||||
require_relative "../../../spec/support/custom_json_serializer"
|
||||
|
||||
class MixinJsonTest < ActiveSupport::TestCase
|
||||
setup do
|
||||
|
|
Loading…
Reference in New Issue