defmodule Mv.SeedsTest do use Mv.DataCase, async: false describe "Seeds script" do test "runs successfully without errors" do # Run the seeds script - should not raise any errors assert Code.eval_file("priv/repo/seeds.exs") # Basic smoke test: ensure some data was created {:ok, users} = Ash.read(Mv.Accounts.User) {:ok, members} = Ash.read(Mv.Membership.Member) {:ok, custom_fields} = Ash.read(Mv.Membership.CustomField) assert length(users) > 0, "Seeds should create at least one user" assert length(members) > 0, "Seeds should create at least one member" assert length(custom_fields) > 0, "Seeds should create at least one custom field" end test "can be run multiple times (idempotent)" do # Run seeds first time assert Code.eval_file("priv/repo/seeds.exs") # Count records {:ok, users_count_1} = Ash.read(Mv.Accounts.User) {:ok, members_count_1} = Ash.read(Mv.Membership.Member) {:ok, custom_fields_count_1} = Ash.read(Mv.Membership.CustomField) # Run seeds second time - should not raise errors assert Code.eval_file("priv/repo/seeds.exs") # Count records again - should be the same (upsert, not duplicate) {:ok, users_count_2} = Ash.read(Mv.Accounts.User) {:ok, members_count_2} = Ash.read(Mv.Membership.Member) {:ok, custom_fields_count_2} = Ash.read(Mv.Membership.CustomField) assert length(users_count_1) == length(users_count_2), "Users count should remain same after re-running seeds" assert length(members_count_1) == length(members_count_2), "Members count should remain same after re-running seeds" assert length(custom_fields_count_1) == length(custom_fields_count_2), "CustomFields count should remain same after re-running seeds" end end end