add test for rels in atomic updates (#286)

This commit is contained in:
Barnabas Jovanovics 2024-05-15 15:50:36 +02:00 committed by GitHub
parent 555a737493
commit e597c39687
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 0 deletions

View file

@ -1,4 +1,5 @@
defmodule AshPostgres.AtomicsTest do
alias AshPostgres.Test.Author
use AshPostgres.RepoCase, async: false
alias AshPostgres.Test.Post
@ -101,4 +102,23 @@ defmodule AshPostgres.AtomicsTest do
assert Post.increment_score!(post, 2).score == 4
end
test "use rel in atomic update" do
author =
Author
|> Ash.Changeset.for_create(:create, %{first_name: "John", last_name: "Doe"})
|> Ash.create!()
post =
Post
|> Ash.Changeset.for_create(:create, %{price: 1, author_id: author.id})
|> Ash.create!()
post =
post
|> Ash.Changeset.for_update(:set_title_from_author, %{})
|> Ash.update!()
assert post.title == "John"
end
end

View file

@ -150,6 +150,10 @@ defmodule AshPostgres.Test.Post do
)
end
update :set_title_from_author do
change(atomic_update(:title, expr(author.first_name)))
end
update :increment_score do
argument(:amount, :integer, default: 1)
change(atomic_update(:score, expr((score || 0) + ^arg(:amount))))