View Source Uploadex.TestStorage (Uploadex v3.1.0)
Storage to be used for testing. It holds the files in memory (using a Agent).
Configuring
To configure your app to use the Uploadex.TestStorage, just add this storage to your Uploadex module,
depending on the current environment:
defmodule MyApp.Uploader do
use Uploadex
@impl true
def get_fields(%User{}), do: :files
@impl true
def default_opts(Uploadex.FileStorage), do: [...]
def default_opts(Uploadex.TestStorage), do: []
@impl true
def storage(%User{}, _field) do
if test_environment?() do
{Uploadex.TestStorage, []}
else
{Uploadex.FileStorage, [...]}
end
end
@impl true
def accepted_extensions(%User{}, _field), do: ~w(.jpg .png)
defp test_environment?() do
# This env must be set in your config files depending on the environment.
Application.fetch_env!(:my_app, :environment) == :test
end
endUsing
In your ExUnit tests, add a setup block starting the storage:
setup do
Uploadex.TestStorage.start_link()
:ok
endThen, in the tests, you can use the get_stored/1, get_deleted/1 and get_opts:
test "some test with files" do
assert ["document-1.pdf", "document-2.pdf"] == Uploadex.TestStorage.get_stored()
assert ["deleted-document.pdf"] == Uploadex.TestStorage.get_deleted()
assert [] == Uploadex.TestStorage.get_opts()
endThis module is just the base for testing, check Uploadex.Testing for a more convenient way to test uploads.
Summary
Functions
Returns a specification to start this module under a supervisor.