* Added tabbed view; improved relationships for media profile * Adds new maybe_limit method for queries * Improves UI for media items, associated tasks
55 lines
1.4 KiB
Elixir
55 lines
1.4 KiB
Elixir
defmodule Pinchflat.RepoTest do
|
|
use Pinchflat.DataCase
|
|
import Pinchflat.ProfilesFixtures
|
|
|
|
alias Pinchflat.Repo
|
|
alias Pinchflat.Profiles.MediaProfile
|
|
alias Pinchflat.JobFixtures.TestJobWorker
|
|
|
|
describe "insert_unique_job/1" do
|
|
test "returns {:ok, job} if there is no conflict" do
|
|
job = TestJobWorker.new(%{})
|
|
|
|
assert {:ok, %Oban.Job{}} = Pinchflat.Repo.insert_unique_job(job)
|
|
end
|
|
|
|
test "returns {:duplicate, original_job} if there is a conflict" do
|
|
job = TestJobWorker.new(%{foo: "bar"}, unique: [period: :infinity])
|
|
|
|
{:ok, saved_job_1} = Pinchflat.Repo.insert_unique_job(job)
|
|
|
|
assert {:duplicate, saved_job_2} = Pinchflat.Repo.insert_unique_job(job)
|
|
assert saved_job_1.id == saved_job_2.id
|
|
end
|
|
|
|
test "returns the error if there is an error" do
|
|
assert {:error, _} = Pinchflat.Repo.insert_unique_job(%Ecto.Changeset{})
|
|
end
|
|
end
|
|
|
|
describe "maybe_limit/2" do
|
|
test "applies a limit if provided" do
|
|
media_profile_fixture()
|
|
media_profile_fixture()
|
|
|
|
result =
|
|
MediaProfile
|
|
|> Repo.maybe_limit(1)
|
|
|> Repo.aggregate(:count, :id)
|
|
|
|
assert result == 1
|
|
end
|
|
|
|
test "does not apply a limit if not provided" do
|
|
media_profile_fixture()
|
|
media_profile_fixture()
|
|
|
|
result =
|
|
MediaProfile
|
|
|> Repo.maybe_limit(nil)
|
|
|> Repo.aggregate(:count, :id)
|
|
|
|
assert result == 2
|
|
end
|
|
end
|
|
end
|