Skip to content

Commit 0f29d0e

Browse files
preload urls of nodes for the frontend
1 parent d290ed8 commit 0f29d0e

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

lib/radiator/outline/node_repository.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ defmodule Radiator.Outline.NodeRepository do
6969
def list_nodes_by_node_container(outline_node_container_id) do
7070
Node
7171
|> where([p], p.outline_node_container_id == ^outline_node_container_id)
72+
|> preload(:urls)
7273
|> Repo.all()
7374
|> Enum.group_by(& &1.parent_id)
7475
|> Enum.map(fn {_parent_id, children} -> Radiator.Outline.order_sibling_nodes(children) end)

test/radiator/outline/node_repository_test.exs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ defmodule Radiator.Outline.NodeRepositoryTest do
44
alias Radiator.Outline.Node
55
alias Radiator.Outline.NodeRepository
66
alias Radiator.PodcastFixtures
7+
alias Radiator.ResourcesFixtures
78

89
import Radiator.OutlineFixtures
910
import Ecto.Query, warn: false
@@ -78,6 +79,28 @@ defmodule Radiator.Outline.NodeRepositoryTest do
7879
node2
7980
]
8081
end
82+
83+
describe "list_nodes_by_episode/1" do
84+
test "returns only nodes of this episode" do
85+
node1 = node_fixture()
86+
node2 = node_fixture()
87+
88+
assert NodeRepository.list_nodes_by_episode(node1.episode_id) |> Enum.map(& &1.uuid) == [
89+
node1.uuid
90+
]
91+
92+
assert NodeRepository.list_nodes_by_episode(node2.episode_id) |> Enum.map(& &1.uuid) == [
93+
node2.uuid
94+
]
95+
end
96+
97+
test "preloads optional associated URLs" do
98+
node = node_fixture()
99+
url = ResourcesFixtures.url_fixture(node_id: node.uuid)
100+
[loaded_node] = NodeRepository.list_nodes_by_episode(node.episode_id)
101+
assert loaded_node.uuid == node.uuid
102+
assert loaded_node.urls == [url]
103+
end
81104
end
82105

83106
describe "delete_node/1" do

0 commit comments

Comments
 (0)