Current section
Files
Jump to
Current section
Files
test/mocks/vector_store.ex
defmodule OpenAi.Mocks.VectorStore do
@moduledoc """
Mocks for vector store related responses.
"""
def vector_store(data) do
%{
id: "vs_abc123",
object: "vector_store",
created_at: 1_699_061_776,
name: "Support FAQ",
bytes: 139_920,
file_counts: %{
"in_progress" => 0,
"completed" => 3,
"failed" => 0,
"cancelled" => 0,
"total" => 3
}
}
|> Map.merge(data)
end
def create(data \\ %{}) do
%HTTPoison.Response{
status_code: 200,
body:
data
|> vector_store()
|> Poison.encode!()
}
end
def list(data \\ [], count \\ 2) do
data =
Enum.map(1..count, fn index ->
vector_store(data |> Enum.at(index - 1, %{}))
end)
%HTTPoison.Response{
status_code: 200,
body:
%{
object: "list",
data: data,
first_id: data |> List.first() |> Map.get(:id),
last_id: data |> List.last() |> Map.get(:id),
has_more: false
}
|> Poison.encode!()
}
end
def get(data \\ %{}) do
%HTTPoison.Response{
status_code: 200,
body:
data
|> vector_store()
|> Poison.encode!()
}
end
def update(data \\ %{}) do
%HTTPoison.Response{
status_code: 200,
body:
data
|> vector_store()
|> Poison.encode!()
}
end
def delete(data \\ %{}) do
vs = data |> vector_store()
%HTTPoison.Response{
status_code: 200,
body:
%{
id: vs.id,
object: "vector_store.deleted",
deleted: true
}
|> Poison.encode!()
}
end
end