Skip to content

Commit 55f559b

Browse files
preload urls of nodes for the frontend
1 parent d290ed8 commit 55f559b

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-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: 24 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
@@ -80,6 +81,29 @@ defmodule Radiator.Outline.NodeRepositoryTest do
8081
end
8182
end
8283

84+
describe "list_nodes_by_episode/1" do
85+
test "returns only nodes of this episode" do
86+
node1 = node_fixture()
87+
node2 = node_fixture()
88+
89+
assert NodeRepository.list_nodes_by_episode(node1.episode_id) |> Enum.map(& &1.uuid) == [
90+
node1.uuid
91+
]
92+
93+
assert NodeRepository.list_nodes_by_episode(node2.episode_id) |> Enum.map(& &1.uuid) == [
94+
node2.uuid
95+
]
96+
end
97+
98+
test "preloads optional associated URLs" do
99+
node = node_fixture()
100+
url = ResourcesFixtures.url_fixture(node_id: node.uuid)
101+
[loaded_node] = NodeRepository.list_nodes_by_episode(node.episode_id)
102+
assert loaded_node.uuid == node.uuid
103+
assert loaded_node.urls == [url]
104+
end
105+
end
106+
83107
describe "delete_node/1" do
84108
test "deletes the node" do
85109
node = node_fixture()

0 commit comments

Comments
 (0)