49 lines
1.3 KiB
Elixir
49 lines
1.3 KiB
Elixir
defmodule Diffuser.Generator.PromptRequestTest do
|
|
use Diffuser.DataCase
|
|
import Diffuser.GeneratorFixtures
|
|
alias Diffuser.Generator
|
|
alias Diffuser.Generator.PromptRequest
|
|
alias DiffuserWeb.Endpoint
|
|
|
|
import Phoenix.ChannelTest
|
|
|
|
# The default endpoint for testing
|
|
# @endpoint DiffuserWeb.Endpoint
|
|
|
|
# TODO: Write mock that calls python script that only sleeps for 300 milliseconds
|
|
test "starts a new prompt and can query status while it's running" do
|
|
prompt_request = prompt_request_fixture()
|
|
|
|
assert {:ok, _pid} =
|
|
Diffuser.Generator.PromptRequestGenserver.new(%{prompt_request: prompt_request})
|
|
|
|
:timer.sleep(1000)
|
|
|
|
assert %{status: "in_progress"} = Generator.get_prompt_request!(prompt_request.id)
|
|
|
|
:timer.sleep(3000)
|
|
|
|
assert %{status: "finished"} = Diffuser.Generator.get_prompt_request!(prompt_request.id)
|
|
end
|
|
|
|
test "properly updates when prompt is finished via websocket" do
|
|
%{id: id} = prompt_request = prompt_request_fixture()
|
|
|
|
Endpoint.subscribe("request:#{id}")
|
|
|
|
Diffuser.Generator.PromptRequestGenserver.new(%{prompt_request: prompt_request})
|
|
|
|
:timer.sleep(1000)
|
|
|
|
assert_broadcast("request", %{
|
|
prompt_request: %PromptRequest{id: ^id}
|
|
})
|
|
|
|
:timer.sleep(3000)
|
|
|
|
assert_broadcast("request", %{
|
|
prompt_request: %PromptRequest{id: ^id}
|
|
})
|
|
end
|
|
end
|