@@ -73,13 +73,20 @@ defmodule Mobilizon.Admin.SettingMedia do
|
|||||||
|> unique_constraint(:group, name: :admin_settings_medias_group_name_index)
|
|> unique_constraint(:group, name: :admin_settings_medias_group_name_index)
|
||||||
end
|
end
|
||||||
|
|
||||||
# # In case the provided media is an existing one
|
# In case the provided media is an existing one (identified by id)
|
||||||
@spec put_media(Changeset.t(), map) :: Changeset.t()
|
@spec put_media(Changeset.t(), map) :: Changeset.t()
|
||||||
defp put_media(%Changeset{} = changeset, %{media: %{media_id: id}}) do
|
defp put_media(%Changeset{} = changeset, %{media: %{media_id: id}}) do
|
||||||
%Media{} = media = Medias.get_media!(id)
|
%Media{} = media = Medias.get_media!(id)
|
||||||
put_assoc(changeset, :media, media)
|
put_assoc(changeset, :media, media)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# In case the provided media is an existing one (identified by uuid)
|
||||||
|
@spec put_media(Changeset.t(), map) :: Changeset.t()
|
||||||
|
defp put_media(%Changeset{} = changeset, %{media: %{media_uuid: uuid}}) do
|
||||||
|
%Media{} = media = Medias.get_media_by_uuid!(uuid)
|
||||||
|
put_assoc(changeset, :media, media)
|
||||||
|
end
|
||||||
|
|
||||||
# In case it's a new media
|
# In case it's a new media
|
||||||
defp put_media(%Changeset{} = changeset, %{media: %{media: media}}) do
|
defp put_media(%Changeset{} = changeset, %{media: %{media: media}}) do
|
||||||
{:ok, media} = upload_media(media)
|
{:ok, media} = upload_media(media)
|
||||||
|
|||||||
@@ -35,6 +35,13 @@ defmodule Mobilizon.Medias do
|
|||||||
@spec get_media_by_uuid(String.t()) :: Media.t() | nil
|
@spec get_media_by_uuid(String.t()) :: Media.t() | nil
|
||||||
def get_media_by_uuid(uuid), do: Repo.get_by(Media, uuid: uuid)
|
def get_media_by_uuid(uuid), do: Repo.get_by(Media, uuid: uuid)
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Get a single media by uuid.
|
||||||
|
Raises `Ecto.NoResultsError` if the media does not exist.
|
||||||
|
"""
|
||||||
|
@spec get_media_by_uuid!(String.t()) :: Media.t() | nil
|
||||||
|
def get_media_by_uuid!(uuid), do: Repo.get_by!(Media, uuid: uuid)
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Get a media by its URL.
|
Get a media by its URL.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -24,6 +24,11 @@ defmodule Mobilizon.MediaTest do
|
|||||||
assert Medias.get_media!(media.id).id == media.id
|
assert Medias.get_media!(media.id).id == media.id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "get_media_by_uuid!/1 returns the media with given uuid" do
|
||||||
|
media = insert(:media)
|
||||||
|
assert Medias.get_media_by_uuid!(media.uuid).uuid == media.uuid
|
||||||
|
end
|
||||||
|
|
||||||
test "create_media/1 with valid data creates a media" do
|
test "create_media/1 with valid data creates a media" do
|
||||||
assert {:ok, %Media{} = media} =
|
assert {:ok, %Media{} = media} =
|
||||||
Medias.create_media(Map.put(@valid_attrs, :actor_id, insert(:actor).id))
|
Medias.create_media(Map.put(@valid_attrs, :actor_id, insert(:actor).id))
|
||||||
|
|||||||
Reference in New Issue
Block a user