Skip to content

Commit

Permalink
tests are now more readable
Browse files Browse the repository at this point in the history
  • Loading branch information
izelnakri committed Mar 13, 2017
1 parent 750a305 commit 263ebe9
Show file tree
Hide file tree
Showing 3 changed files with 129 additions and 183 deletions.
9 changes: 4 additions & 5 deletions test/paper_trail/version_queries_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@ defmodule PaperTrailTest.VersionQueries do
@repo.delete_all(Version)

Company.changeset(%Company{}, %{
name: "Acme LLC", is_active: true, city: "Greenwich", people: []
name: "Acme LLC", is_active: true, city: "Greenwich"
}) |> PaperTrail.insert

old_company = first(Company, :id) |> preload(:people) |> @repo.one
old_company = first(Company, :id) |> @repo.one

Company.changeset(old_company, %{
city: "Hong Kong",
website: "http://www.acme.com",
facebook: "acme.llc"
}) |> PaperTrail.update

first(Company, :id) |> preload(:people) |> @repo.one |> PaperTrail.delete
first(Company, :id) |> @repo.one |> PaperTrail.delete

Company.changeset(%Company{}, %{
name: "Acme LLC",
Expand Down Expand Up @@ -59,7 +59,7 @@ defmodule PaperTrailTest.VersionQueries do
visit_count: 10,
birthdate: ~D[1992-04-01],
company_id: another_company.id
}) |> PaperTrail.update(%{ originator: "user:1", linkname: "izelnakri" })
}) |> PaperTrail.update(%{originator: "user:1", linkname: "izelnakri"})

:ok
end
Expand Down Expand Up @@ -90,5 +90,4 @@ defmodule PaperTrailTest.VersionQueries do
assert PaperTrail.get_current(first_version) == person
end
# query meta data!!

end
168 changes: 70 additions & 98 deletions test/paper_trail_strict_mode_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ defmodule PaperTrailStrictModeTest do
company_count = Company.count()
version_count = Version.count()

company = result[:model] |> serialize() |> Map.drop([:inserted_at, :updated_at, :id])
version = result[:version] |> serialize() |> Map.drop([:inserted_at])
company = result[:model] |> serialize()
version = result[:version] |> serialize()

assert company_count == [1]
assert version_count == [1]
assert company == %{
assert Map.drop(company, [:id, :inserted_at, :updated_at]) == %{
name: "Acme LLC",
is_active: true,
city: "Greenwich",
Expand All @@ -51,32 +51,29 @@ defmodule PaperTrailStrictModeTest do
first_version_id: version.id,
current_version_id: version.id
}
assert Map.drop(version, [:id]) == %{
assert Map.drop(version, [:id, :inserted_at]) == %{
event: "insert",
item_type: "StrictCompany",
item_id: @repo.one(first(Company, :id)).id,
item_changes: serialize(result[:model]),
item_id: company.id,
item_changes: company,
sourced_by: nil,
meta: nil
}
end

test "updating a company creates a company version with correct item_changes" do
{:ok, insert_result} = create_company_with_version()

company = insert_result[:model]

{:ok, result} = update_company_with_version(company)
{:ok, insert_company_result} = create_company_with_version()
{:ok, result} = update_company_with_version(insert_company_result[:model])

company_count = Company.count()
version_count = Version.count()

company = result[:model] |> serialize |> Map.drop([:inserted_at, :updated_at, :id])
version = result[:version] |> serialize |> Map.drop([:inserted_at])
company = result[:model] |> serialize
version = result[:version] |> serialize

assert company_count == [1]
assert version_count == [2]
assert company == %{
assert Map.drop(company, [:id, :inserted_at, :updated_at]) == %{
name: "Acme LLC",
is_active: true,
city: "Hong Kong",
Expand All @@ -85,40 +82,34 @@ defmodule PaperTrailStrictModeTest do
facebook: "acme.llc",
twitter: nil,
founded_in: nil,
first_version_id: insert_result[:version].id,
first_version_id: insert_company_result[:version].id,
current_version_id: version.id
}
# IMPORTANT: current_version also changes?
assert Map.drop(version, [:id]) == %{
assert Map.drop(version, [:id, :inserted_at]) == %{
event: "update",
item_type: "StrictCompany",
item_id: @repo.one(first(Company, :id)).id,
item_id: company.id,
item_changes: %{city: "Hong Kong", website: "http://www.acme.com", facebook: "acme.llc"},
sourced_by: nil,
meta: nil
}
end

test "deleting a company creates a company version with correct attributes" do
{:ok, insert_result} = create_company_with_version()

new_company = insert_result[:model]

{:ok, update_result} = update_company_with_version(new_company)

company = update_result[:model]

{:ok, result} = PaperTrail.delete(company)
{:ok, insert_company_result} = create_company_with_version()
{:ok, update_company_result} = update_company_with_version(insert_company_result[:model])
{:ok, result} = PaperTrail.delete(update_company_result[:model])

company_count = Company.count()
version_count = Version.count()

company_ref = result[:model] |> serialize() |> Map.drop([:inserted_at, :updated_at, :id])
version = result[:version] |> serialize() |> Map.drop([:inserted_at])
old_company = result[:model] |> serialize()
version = result[:version] |> serialize()

assert company_count == [0]
assert version_count == [3]
assert company_ref == %{
assert Map.drop(old_company, [:id, :inserted_at, :updated_at]) == %{
name: "Acme LLC",
is_active: true,
city: "Hong Kong",
Expand All @@ -127,17 +118,17 @@ defmodule PaperTrailStrictModeTest do
facebook: "acme.llc",
twitter: nil,
founded_in: nil,
first_version_id: insert_result[:version].id,
current_version_id: update_result[:version].id
first_version_id: insert_company_result[:version].id,
current_version_id: update_company_result[:version].id
}
assert Map.drop(version, [:id]) == %{
assert Map.drop(version, [:id, :inserted_at]) == %{
event: "delete",
item_type: "StrictCompany",
item_id: company.id,
item_id: old_company.id,
item_changes: %{
id: company.id,
inserted_at: company.inserted_at,
updated_at: company.updated_at,
id: old_company.id,
inserted_at: old_company.inserted_at,
updated_at: old_company.updated_at,
name: "Acme LLC",
is_active: true,
website: "http://www.acme.com",
Expand All @@ -146,108 +137,95 @@ defmodule PaperTrailStrictModeTest do
facebook: "acme.llc",
twitter: nil,
founded_in: nil,
first_version_id: insert_result[:version].id,
current_version_id: update_result[:version].id
first_version_id: insert_company_result[:version].id,
current_version_id: update_company_result[:version].id
},
sourced_by: nil,
meta: nil
}
end

test "creating a person with meta tag creates a person version with correct attributes" do
Company.changeset(%Company{}, %{
name: "Acme LLC",
website: "http://www.acme.com"
}) |> PaperTrail.insert
Company.changeset(%Company{}, %{
create_company_with_version(%{name: "Acme LLC", website: "http://www.acme.com"})
{:ok, insert_company_result} = create_company_with_version(%{
name: "Another Company Corp.",
is_active: true,
address: "Sesame street 100/3, 101010"
}) |> PaperTrail.insert

company = first(Company, :id) |> @repo.one
new_person = Person.changeset(%Person{}, %{
})
{:ok, insert_person_result} = Person.changeset(%Person{}, %{
first_name: "Izel",
last_name: "Nakri",
gender: true,
company_id: company.id
})
{:ok, result} = PaperTrail.insert(new_person, sourced_by: "admin") # add link name later on
company_id: insert_company_result[:model].id
}) |> PaperTrail.insert(sourced_by: "admin")

person_count = Person.count()
version_count = Version.count()

person = result[:model] |> serialize |> Map.drop([:inserted_at, :updated_at, :id])
version = result[:version] |> serialize |> Map.drop([:inserted_at])
person = insert_person_result[:model] |> serialize
version = insert_person_result[:version] |> serialize

assert person_count == [1]
assert version_count == [3]
assert Map.drop(person, [:company]) == %{
assert Map.drop(person, [:id, :inserted_at, :updated_at]) == %{
first_name: "Izel",
last_name: "Nakri",
gender: true,
visit_count: nil,
birthdate: nil,
company_id: company.id,
first_version_id: result[:version].id,
current_version_id: result[:version].id
company_id: insert_company_result[:model].id,
first_version_id: insert_person_result[:version].id,
current_version_id: insert_person_result[:version].id
}
assert Map.drop(version, [:id]) == %{
assert Map.drop(version, [:id, :inserted_at]) == %{
event: "insert",
item_type: "StrictPerson",
item_id: @repo.one(first(Person, :id)).id,
item_changes: serialize(result[:model]),
item_id: person.id,
item_changes: person,
sourced_by: "admin",
meta: nil
}
end

test "updating a person creates a person version with correct attributes" do
create_company_with_version(%{name: "Acme LLC", website: "http://www.acme.com"})

{:ok, target_company_insertion} = create_company_with_version(%{
name: "Another Company Corp.", is_active: true, address: "Sesame street 100/3, 101010"
})

{:ok, insert_result} = Person.changeset(%Person{}, %{
{:ok, insert_person_result} = Person.changeset(%Person{}, %{
first_name: "Izel",
last_name: "Nakri",
gender: true,
company_id: target_company_insertion[:model].id
}) |> PaperTrail.insert(sourced_by: "admin") # add link name later on

old_person = insert_result[:model]
target_company = @repo.get_by(Company, name: "Another Company Corp.")

{:ok, result} = Person.changeset(old_person, %{
}) |> PaperTrail.insert(sourced_by: "admin")
{:ok, result} = Person.changeset(insert_person_result[:model], %{
first_name: "Isaac",
visit_count: 10,
birthdate: ~D[1992-04-01],
company_id: target_company.id
birthdate: ~D[1992-04-01]
}) |> PaperTrail.update(sourced_by: "scraper", meta: %{linkname: "izelnakri"})

person_count = Person.count()
version_count = Version.count()

person = result[:model] |> serialize |> Map.drop([:inserted_at, :updated_at, :id])
version = result[:version] |> serialize |> Map.drop([:inserted_at])
person = result[:model] |> serialize
version = result[:version] |> serialize

assert person_count == [1]
assert version_count == [4]
assert Map.drop(person, [:company]) == %{
company_id: target_company.id,
assert Map.drop(person, [:id, :inserted_at, :updated_at]) == %{
company_id: target_company_insertion[:model].id,
first_name: "Isaac",
visit_count: 10,
birthdate: elem(Ecto.Date.cast(~D[1992-04-01]), 1), # this is the only problem
last_name: "Nakri",
gender: true,
first_version_id: old_person.first_version_id,
first_version_id: insert_person_result[:version].id,
current_version_id: version.id
}
assert Map.drop(version, [:id]) == %{
assert Map.drop(version, [:id, :inserted_at]) == %{
event: "update",
item_type: "StrictPerson",
item_id: @repo.one(first(Person, :id)).id,
item_id: person.id,
item_changes: %{
first_name: "Isaac",
visit_count: 10,
Expand All @@ -262,52 +240,46 @@ defmodule PaperTrailStrictModeTest do

test "deleting a person creates a person version with correct attributes" do
create_company_with_version(%{name: "Acme LLC", website: "http://www.acme.com"})

{:ok, target_company_insertion} = create_company_with_version(%{
name: "Another Company Corp.", is_active: true, address: "Sesame street 100/3, 101010"
})

{:ok, insert_result} = Person.changeset(%Person{}, %{
{:ok, insert_person_result} = Person.changeset(%Person{}, %{
first_name: "Izel",
last_name: "Nakri",
gender: true,
company_id: target_company_insertion[:model].id
}) |> PaperTrail.insert(sourced_by: "admin") # add link name later on

old_person = insert_result[:model]
{:ok, update_result} = Person.changeset(old_person, %{
}) |> PaperTrail.insert(sourced_by: "admin")
{:ok, update_person_result} = Person.changeset(insert_person_result[:model], %{
first_name: "Isaac",
visit_count: 10,
birthdate: ~D[1992-04-01],
company_id: target_company_insertion[:model].id
birthdate: ~D[1992-04-01]
}) |> PaperTrail.update(sourced_by: "scraper", meta: %{linkname: "izelnakri"})

person = first(Person, :id) |> preload(:company) |> @repo.one
{:ok, result} = PaperTrail.delete(person)
{:ok, result} = PaperTrail.delete(update_person_result[:model])

person_count = Person.count()
version_count = Version.count()

version = result[:version] |> serialize |> Map.drop([:inserted_at])
old_person = result[:model] |> serialize
version = result[:version] |> serialize

assert person_count == [0]
assert version_count == [5]
assert Map.drop(version, [:id]) == %{
assert Map.drop(version, [:id, :inserted_at]) == %{
event: "delete",
item_type: "StrictPerson",
item_id: person.id,
item_id: old_person.id,
item_changes: %{
id: person.id,
inserted_at: person.inserted_at,
updated_at: person.updated_at,
id: old_person.id,
inserted_at: old_person.inserted_at,
updated_at: old_person.updated_at,
first_name: "Isaac",
last_name: "Nakri",
gender: true,
visit_count: 10,
birthdate: elem(Ecto.Date.cast(~D[1992-04-01]), 1),
company_id: person.company.id,
first_version_id: insert_result[:version].id,
current_version_id: update_result[:version].id
company_id: target_company_insertion[:model].id,
first_version_id: insert_person_result[:version].id,
current_version_id: update_person_result[:version].id
},
sourced_by: nil,
meta: nil
Expand Down
Loading

0 comments on commit 263ebe9

Please sign in to comment.