Ensured you can remove codec data
This commit is contained in:
parent
37db0f978e
commit
f428417830
2 changed files with 45 additions and 23 deletions
|
|
@ -13,7 +13,10 @@ defmodule Pinchflat.Settings.Setting do
|
|||
:apprise_version,
|
||||
:apprise_server,
|
||||
:video_codec_preference,
|
||||
:audio_codec_preference,
|
||||
:audio_codec_preference
|
||||
]
|
||||
|
||||
@virtual_fields [
|
||||
:video_codec_preference_string,
|
||||
:audio_codec_preference_string
|
||||
]
|
||||
|
|
@ -32,14 +35,15 @@ defmodule Pinchflat.Settings.Setting do
|
|||
|
||||
field :video_codec_preference, {:array, :string}, default: []
|
||||
field :audio_codec_preference, {:array, :string}, default: []
|
||||
field :video_codec_preference_string, :string, virtual: true
|
||||
field :audio_codec_preference_string, :string, virtual: true
|
||||
field :video_codec_preference_string, :string, default: nil, virtual: true
|
||||
field :audio_codec_preference_string, :string, default: nil, virtual: true
|
||||
end
|
||||
|
||||
@doc false
|
||||
def changeset(setting, attrs) do
|
||||
setting
|
||||
|> cast(attrs, @allowed_fields)
|
||||
|> cast(attrs, @virtual_fields, empty_values: [])
|
||||
|> convert_codec_preference_strings()
|
||||
|> validate_required(@required_fields)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -77,7 +77,9 @@ defmodule Pinchflat.SettingsTest do
|
|||
|
||||
assert %Ecto.Changeset{} = Settings.change_setting(setting, %{onboarding: true})
|
||||
end
|
||||
end
|
||||
|
||||
describe "change_setting/2 when testing codec preferences" do
|
||||
test "converts (video|audio)_codec_preference_string to an array" do
|
||||
setting = Settings.record()
|
||||
|
||||
|
|
@ -91,33 +93,49 @@ defmodule Pinchflat.SettingsTest do
|
|||
assert ["avc", "vp9"] = changeset.changes.video_codec_preference
|
||||
assert ["aac", "opus"] = changeset.changes.audio_codec_preference
|
||||
end
|
||||
end
|
||||
|
||||
test "removes whitespace from (video|audio)_codec_preference" do
|
||||
setting = Settings.record()
|
||||
test "removes whitespace from (video|audio)_codec_preference" do
|
||||
setting = Settings.record()
|
||||
|
||||
new_setting = %{
|
||||
video_codec_preference_string: " avc > > vp9 ",
|
||||
audio_codec_preference_string: "aac> opus "
|
||||
}
|
||||
new_setting = %{
|
||||
video_codec_preference_string: " avc > > vp9 ",
|
||||
audio_codec_preference_string: "aac> opus "
|
||||
}
|
||||
|
||||
changeset = Settings.change_setting(setting, new_setting)
|
||||
changeset = Settings.change_setting(setting, new_setting)
|
||||
|
||||
assert ["avc", "vp9"] = changeset.changes.video_codec_preference
|
||||
assert ["aac", "opus"] = changeset.changes.audio_codec_preference
|
||||
end
|
||||
assert ["avc", "vp9"] = changeset.changes.video_codec_preference
|
||||
assert ["aac", "opus"] = changeset.changes.audio_codec_preference
|
||||
end
|
||||
|
||||
test "downcases (video|audio)_codec_preference" do
|
||||
setting = Settings.record()
|
||||
test "downcases (video|audio)_codec_preference" do
|
||||
setting = Settings.record()
|
||||
|
||||
new_setting = %{
|
||||
video_codec_preference_string: "AVC>VP9",
|
||||
audio_codec_preference_string: "AAC>OPUS"
|
||||
}
|
||||
new_setting = %{
|
||||
video_codec_preference_string: "AVC>VP9",
|
||||
audio_codec_preference_string: "AAC>OPUS"
|
||||
}
|
||||
|
||||
changeset = Settings.change_setting(setting, new_setting)
|
||||
changeset = Settings.change_setting(setting, new_setting)
|
||||
|
||||
assert ["avc", "vp9"] = changeset.changes.video_codec_preference
|
||||
assert ["aac", "opus"] = changeset.changes.audio_codec_preference
|
||||
assert ["avc", "vp9"] = changeset.changes.video_codec_preference
|
||||
assert ["aac", "opus"] = changeset.changes.audio_codec_preference
|
||||
end
|
||||
|
||||
test "an empty value will remove the codec settings" do
|
||||
Settings.set(video_codec_preference: ["avc", "vp9"])
|
||||
Settings.set(audio_codec_preference: ["aac", "opus"])
|
||||
setting = Settings.record()
|
||||
|
||||
new_setting = %{
|
||||
video_codec_preference_string: "",
|
||||
audio_codec_preference_string: ""
|
||||
}
|
||||
|
||||
changeset = Settings.change_setting(setting, new_setting)
|
||||
|
||||
assert [] = changeset.changes.video_codec_preference
|
||||
assert [] = changeset.changes.audio_codec_preference
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue