Skip to content

Commit

Permalink
Add final refactor to example app test files
Browse files Browse the repository at this point in the history
Removes all the aux functions in order to make all the variables more
explicit and easier to understand. Removes some typos in person_test 
description.
  • Loading branch information
dreamingechoes committed Aug 6, 2017
1 parent 0604631 commit ead9cc6
Show file tree
Hide file tree
Showing 4 changed files with 187 additions and 156 deletions.
55 changes: 34 additions & 21 deletions example/test/company_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,20 @@ defmodule CompanyTest do

test "creating a company creates a company version with correct attributes" do
{:ok, result} =
%{name: "Acme LLC", is_active: true, city: "Greenwich", people: []}
|> new_company()
%Company{}
|> Company.changeset(%{name: "Acme LLC", is_active: true, city: "Greenwich", people: []})
|> PaperTrail.insert(origin: "test")

company_count = company_count() |> Repo.all()
version_count = version_count() |> Repo.all()
first_company = first_company() |> Repo.one()
company_count =
from(company in Company, select: count(company.id))
|> Repo.all()
version_count =
from(version in PaperTrail.Version, select: count(version.id))
|> Repo.all()
first_company =
first(Company, :id)
|> preload(:people)
|> Repo.one()

company = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])
Expand Down Expand Up @@ -51,17 +58,25 @@ defmodule CompanyTest do
end

test "updating a company creates a company version with correct item_changes" do
first_company = first_company() |> Repo.one()
first_company =
first(Company, :id)
|> preload(:people)
|> Repo.one()

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

company_count = company_count() |> Repo.all()
version_count = version_count() |> Repo.all()
company_count =
from(company in Company, select: count(company.id))
|> Repo.all()
version_count =
from(version in PaperTrail.Version, select: count(version.id))
|> Repo.all()

company = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])
Expand Down Expand Up @@ -93,14 +108,21 @@ defmodule CompanyTest do
end

test "deleting a company creates a company version with correct attributes" do
company = first_company() |> Repo.one()
company =
first(Company, :id)
|> preload(:people)
|> Repo.one()

{:ok, result} =
company
|> PaperTrail.delete()

company_count = company_count() |> Repo.all()
version_count = version_count() |> Repo.all()
company_count =
from(company in Company, select: count(company.id))
|> Repo.all()
version_count =
from(version in PaperTrail.Version, select: count(version.id))
|> Repo.all()

company_ref = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])
Expand Down Expand Up @@ -142,13 +164,4 @@ defmodule CompanyTest do
meta: nil
}
end

# Company related functions
def company_count(), do: (from company in Company, select: count(company.id))
def first_company(), do: (first(Company, :id) |> preload(:people))
def new_company(attrs), do: Company.changeset(%Company{}, attrs)
def update_company(company, attrs), do: Company.changeset(company, attrs)

# Version related functions
def version_count(), do: (from version in PaperTrail.Version, select: count(version.id))
end
87 changes: 48 additions & 39 deletions example/test/multi_tenant_company_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,24 @@ defmodule MultiTenantCompanyTest do

test "[multi tenant] creating a company creates a company version with correct attributes" do
{:ok, result} =
%{name: "Acme LLC", is_active: true, city: "Greenwich", people: []}
|> new_company()
%Company{}
|> Company.changeset(%{name: "Acme LLC", is_active: true, city: "Greenwich", people: []})
|> MultiTenantHelper.add_prefix_to_changeset()
|> PaperTrail.insert(origin: "test", prefix: MultiTenantHelper.tenant())

company_count = company_count() |> Repo.all()
version_count = version_count() |> Repo.all()
first_company = first_company() |> Repo.one()
company_count =
from(company in Company, select: count(company.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()
version_count =
from(version in PaperTrail.Version, select: count(version.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()
first_company =
first(Company, :id)
|> preload(:people)
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.one()

company = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])
Expand Down Expand Up @@ -47,17 +58,30 @@ defmodule MultiTenantCompanyTest do
end

test "[multi tenant] updating a company creates a company version with correct item_changes" do
first_company = first_company() |> Repo.one()
first_company =
first(Company, :id)
|> preload(:people)
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.one()

{:ok, result} =
update_company(first_company, %{
first_company
|> Company.changeset(%{
city: "Hong Kong",
website: "http://www.acme.com",
facebook: "acme.llc"
}) |> PaperTrail.update(prefix: MultiTenantHelper.tenant())

company_count = company_count() |> Repo.all()
version_count = version_count() |> Repo.all()
})
|> MultiTenantHelper.add_prefix_to_changeset()
|> PaperTrail.update(prefix: MultiTenantHelper.tenant())

company_count =
from(company in Company, select: count(company.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()
version_count =
from(version in PaperTrail.Version, select: count(version.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()

company = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])
Expand Down Expand Up @@ -89,14 +113,24 @@ defmodule MultiTenantCompanyTest do
end

test "[multi tenant] deleting a company creates a company version with correct attributes" do
company = first_company() |> Repo.one()
company =
first(Company, :id)
|> preload(:people)
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.one()

{:ok, result} =
company
|> PaperTrail.delete(prefix: MultiTenantHelper.tenant())

company_count = company_count() |> Repo.all()
version_count = version_count() |> Repo.all()
company_count =
from(company in Company, select: count(company.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()
version_count =
from(version in PaperTrail.Version, select: count(version.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()

company_ref = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])
Expand Down Expand Up @@ -138,29 +172,4 @@ defmodule MultiTenantCompanyTest do
meta: nil
}
end

# Company related functions
def company_count() do
(from company in Company, select: count(company.id))
|> MultiTenantHelper.add_prefix_to_query()
end
def first_company() do
(first(Company, :id)
|> preload(:people))
|> MultiTenantHelper.add_prefix_to_query()
end
def new_company(attrs) do
Company.changeset(%Company{}, attrs)
|> MultiTenantHelper.add_prefix_to_changeset()
end
def update_company(company, attrs) do
Company.changeset(company, attrs)
|> MultiTenantHelper.add_prefix_to_changeset()
end

# Version related functions
def version_count() do
(from version in PaperTrail.Version, select: count(version.id))
|> MultiTenantHelper.add_prefix_to_query()
end
end
116 changes: 58 additions & 58 deletions example/test/multi_tenant_person_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,49 @@ defmodule MultiTenantPersonTest do
setup_all do
MultiTenantHelper.setup_tenant(Repo)

%{name: "Acme LLC", website: "http://www.acme.com"}
|> new_company()
%Company{}
|> Company.changeset(%{name: "Acme LLC", website: "http://www.acme.com"})
|> MultiTenantHelper.add_prefix_to_changeset()
|> Repo.insert()

%{name: "Another Company Corp.", is_active: true, address: "Sesame street 100/3, 101010"}
|> new_company()
%Company{}
|> Company.changeset(%{name: "Another Company Corp.", is_active: true, address: "Sesame street 100/3, 101010"})
|> MultiTenantHelper.add_prefix_to_changeset()
|> Repo.insert()

:ok
end

test "[multi tenant] creating a person with meta tag creates a person version with correct attributes" do
company = first_company() |> Repo.one()
company =
first(Company, :id)
|> preload(:people)
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.one()

{:ok, result} =
%{first_name: "Izel", last_name: "Nakri", gender: true, company_id: company.id}
|> new_person()
%Person{}
|> Person.changeset(%{first_name: "Izel", last_name: "Nakri", gender: true, company_id: company.id})
|> MultiTenantHelper.add_prefix_to_changeset()
|> PaperTrail.insert(origin: "admin", meta: %{}, prefix: MultiTenantHelper.tenant())

person_count = person_count() |> Repo.all()
version_count = version_count() |> Repo.all()
person_count =
from(person in Person, select: count(person.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()
version_count =
from(version in PaperTrail.Version, select: count(version.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()

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

first_person = first_person() |> Repo.one()
first_person =
first(Person, :id)
|> preload(:company)
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.one()

assert person_count == [1]
assert version_count == [1]
Expand All @@ -56,25 +73,37 @@ defmodule MultiTenantPersonTest do
end

test "[multi tenant] updating a person creates a person version with correct attributes" do
first_person = first_person() |> Repo.one()
first_person =
first(Person, :id)
|> preload(:company)
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.one()

target_company =
[name: "Another Company Corp.", limit: 1]
|> filter_company()
from(c in Company, where: c.name == "Another Company Corp.", limit: 1)
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.one()

{:ok, result} =
update_person(first_person, %{
first_person
|> Person.changeset(%{
first_name: "Isaac",
visit_count: 10,
birthdate: ~D[1992-04-01],
company_id: target_company.id
})
|> MultiTenantHelper.add_prefix_to_changeset()
|> PaperTrail.update([origin: "user:1", meta: %{linkname: "izelnakri"},
prefix: MultiTenantHelper.tenant()])

person_count = person_count() |> Repo.all()
version_count = version_count() |> Repo.all()
person_count =
from(person in Person, select: count(person.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()
version_count =
from(version in PaperTrail.Version, select: count(version.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()

person = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])
Expand Down Expand Up @@ -110,14 +139,24 @@ defmodule MultiTenantPersonTest do
end

test "[multi tenant] deleting a person creates a person version with correct attributes" do
person = first_person() |> Repo.one()
person =
first(Person, :id)
|> preload(:company)
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.one()

{:ok, result} =
person
|> PaperTrail.delete(prefix: MultiTenantHelper.tenant())

person_count = person_count() |> Repo.all()
version_count = version_count() |> Repo.all()
person_count =
from(person in Person, select: count(person.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()
version_count =
from(version in PaperTrail.Version, select: count(version.id))
|> MultiTenantHelper.add_prefix_to_query()
|> Repo.all()

version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])

Expand All @@ -144,43 +183,4 @@ defmodule MultiTenantPersonTest do
meta: nil
}
end

# Person related functions
def person_count() do
(from person in Person, select: count(person.id))
|> MultiTenantHelper.add_prefix_to_query()
end
def first_person() do
(first(Person, :id) |> preload(:company))
|> MultiTenantHelper.add_prefix_to_query()
end
def new_person(attrs) do
Person.changeset(%Person{}, attrs)
|> MultiTenantHelper.add_prefix_to_changeset()
end
def update_person(person, attrs) do
Person.changeset(person, attrs)
|> MultiTenantHelper.add_prefix_to_changeset()
end

# Company related functions
def first_company() do
(first(Company, :id)
|> preload(:people))
|> MultiTenantHelper.add_prefix_to_query()
end
def new_company(attrs) do
Company.changeset(%Company{}, attrs)
|> MultiTenantHelper.add_prefix_to_changeset()
end
def filter_company(opts) do
(from c in Company, where: c.name == ^opts[:name], limit: ^opts[:limit])
|> MultiTenantHelper.add_prefix_to_query()
end

# Version related functions
def version_count() do
(from version in PaperTrail.Version, select: count(version.id))
|> MultiTenantHelper.add_prefix_to_query()
end
end
Loading

0 comments on commit ead9cc6

Please sign in to comment.