|
| 1 | +defmodule GF.Test do |
| 2 | + use ExUnit.Case |
| 3 | + |
| 4 | + test "basic" do |
| 5 | + group = |
| 6 | + GF.Group |
| 7 | + |> Ash.Changeset.for_create(:create, %{abbreviation: "TG", name: "Test Group"}) |
| 8 | + |> Ash.create!(authorize?: false) |
| 9 | + |
| 10 | + Ash.DataLayer.Simple.set_data(GF.Group, [group]) |
| 11 | + |
| 12 | + event = |
| 13 | + GF.Event |
| 14 | + |> Ash.Changeset.for_create(:create, %{title: "Test Event"}, tenant: group.id) |
| 15 | + |> Ash.create!(authorize?: false) |
| 16 | + |
| 17 | + assert event.id |
| 18 | + |
| 19 | + Ash.DataLayer.Simple.set_data(GF.Event, [event]) |
| 20 | + |
| 21 | + assert Ash.get!(GF.Event, event.id, authorize?: false) |
| 22 | + |
| 23 | + member = |
| 24 | + GF.Member |
| 25 | + |> Ash.Changeset.for_create( |
| 26 | + :create, |
| 27 | + %{email: "test@example.com", name: "Test Member", status: :active}, |
| 28 | + tenant: group.id |
| 29 | + ) |
| 30 | + |> Ash.create!(authorize?: false) |
| 31 | + |
| 32 | + actor = |
| 33 | + GF.Member |
| 34 | + |> Ash.Changeset.for_create( |
| 35 | + :create, |
| 36 | + %{email: "actor@example.com", name: "Actor Member", status: :inactive}, |
| 37 | + tenant: group.id |
| 38 | + ) |
| 39 | + |> Ash.create!(authorize?: false) |
| 40 | + |
| 41 | + Ash.DataLayer.Simple.set_data(GF.Member, [member, actor]) |
| 42 | + |
| 43 | + attendee = |
| 44 | + GF.Attendee |
| 45 | + |> Ash.Changeset.for_create(:create, %{event_id: event.id, member_id: member.id}) |
| 46 | + |> Ash.create!(authorize?: false) |
| 47 | + |
| 48 | + Ash.DataLayer.Simple.set_data(GF.Attendee, [attendee]) |
| 49 | + |
| 50 | + assert attendee.id |
| 51 | + |
| 52 | + {:ok, %{data: data}} = |
| 53 | + """ |
| 54 | + query GetEvent($id: ID!) { |
| 55 | + getEvent(id: $id) { |
| 56 | + id |
| 57 | + title |
| 58 | + attendees(filter: {member: {status: {eq: ACTIVE}}}) { |
| 59 | + id |
| 60 | + member { |
| 61 | + id |
| 62 | + name |
| 63 | + } |
| 64 | + } |
| 65 | + } |
| 66 | + } |
| 67 | + """ |
| 68 | + |> Absinthe.run(GF.AshGraphqlSchema, |
| 69 | + variables: %{"id" => event.id}, |
| 70 | + context: %{actor: actor} |
| 71 | + ) |
| 72 | + |
| 73 | + assert data["getEvent"] |
| 74 | + end |
| 75 | +end |
0 commit comments