From 6b5ccb7b23c2bb68c8eed8a5f34fa279b490f8c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Wo=CC=88ginger?= Date: Tue, 21 May 2024 20:05:06 +0200 Subject: [PATCH] add persist_event tests plus cleanup, restructure --- test/radiator/event_store_test.exs | 60 +++++++++++++++---- test/support/fixtures/event_store_fixtures.ex | 54 +++++++++++++++++ 2 files changed, 104 insertions(+), 10 deletions(-) diff --git a/test/radiator/event_store_test.exs b/test/radiator/event_store_test.exs index bfc28f64..d3dddb48 100644 --- a/test/radiator/event_store_test.exs +++ b/test/radiator/event_store_test.exs @@ -2,26 +2,65 @@ defmodule Radiator.EventStoreTest do use Radiator.DataCase alias Radiator.EventStore + alias Radiator.EventStore.EventData - describe "event_data" do - alias Radiator.EventStore.EventData + alias Radiator.AccountsFixtures + import Radiator.EventStoreFixtures - alias Radiator.AccountsFixtures - import Radiator.EventStoreFixtures + describe "persist_event/1" do + test "persists node_inserted_event" do + user = AccountsFixtures.user_fixture() + event = node_inserted_event_fixture(user_id: user.id) - @invalid_attrs %{data: nil, uuid: nil, event_type: nil} + num_events = EventStore.list_event_data() |> length() + EventStore.persist_event(event) + assert EventStore.list_event_data() |> length() == num_events + 1 + end - test "list_event_data/0 returns all event_data" do + test "persists node_content_changed_event" do + user = AccountsFixtures.user_fixture() + event = node_content_changed_event_fixture(user_id: user.id) + + num_events = EventStore.list_event_data() |> length() + EventStore.persist_event(event) + assert EventStore.list_event_data() |> length() == num_events + 1 + end + + test "persists node_deleted_event" do + user = AccountsFixtures.user_fixture() + event = node_deleted_event_fixture(user_id: user.id) + + num_events = EventStore.list_event_data() |> length() + EventStore.persist_event(event) + assert EventStore.list_event_data() |> length() == num_events + 1 + end + + test "persists node_moved_event" do + user = AccountsFixtures.user_fixture() + event = node_moved_event_fixture(user_id: user.id) + + num_events = EventStore.list_event_data() |> length() + EventStore.persist_event(event) + assert EventStore.list_event_data() |> length() == num_events + 1 + end + end + + describe "list_event_data/0" do + test "returns all event_data" do event = event_data_fixture() assert EventStore.list_event_data() == [event] end + end - test "get_event!/1 returns the event_data with given id" do + describe "get_event_data!/1" do + test "returns the event_data with given id" do event = event_data_fixture() assert EventStore.get_event_data!(event.uuid) == event end + end - test "create_event/1 with valid data creates a event" do + describe "create_event_data/1" do + test " with valid data creates a event" do user = AccountsFixtures.user_fixture() valid_attrs = %{ @@ -38,8 +77,9 @@ defmodule Radiator.EventStoreTest do assert event.user_id == valid_attrs.user_id end - test "create_event/1 with invalid data returns error changeset" do - assert {:error, %Ecto.Changeset{}} = EventStore.create_event_data(@invalid_attrs) + test "with invalid data returns error changeset" do + invalid_attrs = %{data: nil, uuid: nil, event_type: nil} + assert {:error, %Ecto.Changeset{}} = EventStore.create_event_data(invalid_attrs) end end end diff --git a/test/support/fixtures/event_store_fixtures.ex b/test/support/fixtures/event_store_fixtures.ex index eac8d4d9..22abf557 100644 --- a/test/support/fixtures/event_store_fixtures.ex +++ b/test/support/fixtures/event_store_fixtures.ex @@ -5,6 +5,15 @@ defmodule Radiator.EventStoreFixtures do """ alias Radiator.AccountsFixtures + alias Radiator.Outline.Event.{ + NodeContentChangedEvent, + NodeDeletedEvent, + NodeInsertedEvent, + NodeMovedEvent + } + + alias Radiator.OutlineFixtures + @doc """ Generate a event data. """ @@ -23,4 +32,49 @@ defmodule Radiator.EventStoreFixtures do event end + + def node_inserted_event_fixture(user_id: user_id) do + node = OutlineFixtures.node_fixture() + + %NodeInsertedEvent{ + node: node, + user_id: user_id, + event_id: Ecto.UUID.generate() + } + end + + def node_content_changed_event_fixture(user_id: user_id) do + node = OutlineFixtures.node_fixture() + + %NodeContentChangedEvent{ + node_id: node.uuid, + content: node.content, + user_id: user_id, + event_id: Ecto.UUID.generate() + } + end + + def node_deleted_event_fixture(user_id: user_id) do + node = OutlineFixtures.node_fixture() + + %NodeDeletedEvent{ + node_id: node.uuid, + user_id: user_id, + event_id: Ecto.UUID.generate() + } + end + + def node_moved_event_fixture(user_id: user_id) do + node = OutlineFixtures.node_fixture() + parent = OutlineFixtures.node_fixture(episode_id: node.episode_id) + prev = OutlineFixtures.node_fixture(episode_id: node.episode_id) + + %NodeMovedEvent{ + node_id: node.uuid, + user_id: user_id, + parent_id: parent.uuid, + prev_id: prev.uuid, + event_id: Ecto.UUID.generate() + } + end end