X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Frepo_test.exs;h=155791be22fd1fb2905ca0c82d97d9d1f14d4f01;hb=f3a1f9c3bbb7321876a09b3846b5e10ecf4af94f;hp=5526b03272b321c6c592b77a7f09528d8e652009;hpb=c814f22030c1341ec337bdd1c446536597e683e2;p=akkoma diff --git a/test/repo_test.exs b/test/repo_test.exs index 5526b0327..155791be2 100644 --- a/test/repo_test.exs +++ b/test/repo_test.exs @@ -1,12 +1,10 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors +# Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.RepoTest do use Pleroma.DataCase - import ExUnit.CaptureLog import Pleroma.Factory - import Mock alias Pleroma.User @@ -39,7 +37,9 @@ defmodule Pleroma.RepoTest do test "get one-to-many assoc from repo" do user = insert(:user) - notification = refresh_record(insert(:notification, user: user)) + + notification = + refresh_record(insert(:notification, user: user, activity: insert(:note_activity))) assert Repo.get_assoc(user, :notifications) == {:ok, [notification]} end @@ -50,43 +50,31 @@ defmodule Pleroma.RepoTest do end end - describe "check_migrations_applied!" do - setup_with_mocks([ - {Ecto.Migrator, [], - [ - with_repo: fn repo, fun -> passthrough([repo, fun]) end, - migrations: fn Pleroma.Repo -> - [ - {:up, 20_191_128_153_944, "fix_missing_following_count"}, - {:up, 20_191_203_043_610, "create_report_notes"}, - {:down, 20_191_220_174_645, "add_scopes_to_pleroma_feo_auth_records"} - ] - end - ]} - ]) do - :ok - end + describe "chunk_stream/3" do + test "fetch records one-by-one" do + users = insert_list(50, :user) - test "raises if it detects unapplied migrations" do - assert_raise Pleroma.Repo.UnappliedMigrationsError, fn -> - capture_log(&Repo.check_migrations_applied!/0) - end - end + {fetch_users, 50} = + from(t in User) + |> Repo.chunk_stream(5) + |> Enum.reduce({[], 0}, fn %User{} = user, {acc, count} -> + {acc ++ [user], count + 1} + end) - test "doesn't do anything if disabled" do - disable_migration_check = - Pleroma.Config.get([:i_am_aware_this_may_cause_data_loss, :disable_migration_check]) + assert users == fetch_users + end - Pleroma.Config.put([:i_am_aware_this_may_cause_data_loss, :disable_migration_check], true) + test "fetch records in bulk" do + users = insert_list(50, :user) - on_exit(fn -> - Pleroma.Config.put( - [:i_am_aware_this_may_cause_data_loss, :disable_migration_check], - disable_migration_check - ) - end) + {fetch_users, 10} = + from(t in User) + |> Repo.chunk_stream(5, :batches) + |> Enum.reduce({[], 0}, fn users, {acc, count} -> + {acc ++ users, count + 1} + end) - assert :ok == Repo.check_migrations_applied!() + assert users == fetch_users end end end