mirror of
https://github.com/wanderer-industries/wanderer
synced 2026-01-31 11:06:01 +00:00
100 lines
2.6 KiB
Elixir
100 lines
2.6 KiB
Elixir
defmodule WandererApp.DatabaseTest do
|
|
use WandererApp.DataCase, async: false
|
|
|
|
import Mox
|
|
|
|
setup :verify_on_exit!
|
|
|
|
@moduletag :skip
|
|
|
|
describe "database connectivity" do
|
|
test "can connect to test database" do
|
|
# Simple connectivity test
|
|
result = Repo.query!("SELECT 1 as test_value")
|
|
assert %{rows: [[1]]} = result
|
|
end
|
|
|
|
test "can create and query test data using Ecto" do
|
|
# This tests that our basic Ecto setup works
|
|
test_data = %{
|
|
id: 1,
|
|
name: "Test Connection",
|
|
created_at: NaiveDateTime.utc_now()
|
|
}
|
|
|
|
# We'll use a raw query since we don't have schemas set up yet
|
|
Repo.query!("""
|
|
CREATE TEMP TABLE test_connection (
|
|
id INTEGER,
|
|
name VARCHAR(255),
|
|
created_at TIMESTAMP
|
|
)
|
|
""")
|
|
|
|
Repo.query!(
|
|
"""
|
|
INSERT INTO test_connection (id, name, created_at)
|
|
VALUES ($1, $2, $3)
|
|
""",
|
|
[test_data.id, test_data.name, test_data.created_at]
|
|
)
|
|
|
|
result = Repo.query!("SELECT * FROM test_connection")
|
|
assert length(result.rows) == 1
|
|
end
|
|
|
|
test "database sandbox isolation works" do
|
|
# This test verifies that our sandbox setup works
|
|
# Data created in this test should not be visible in other tests
|
|
|
|
Repo.query!("CREATE TEMP TABLE isolation_test (id INTEGER)")
|
|
Repo.query!("INSERT INTO isolation_test (id) VALUES (42)")
|
|
|
|
result = Repo.query!("SELECT COUNT(*) FROM isolation_test")
|
|
assert %{rows: [[1]]} = result
|
|
end
|
|
end
|
|
|
|
describe "test helpers" do
|
|
test "assert_ash_success helper works" do
|
|
success_result = {:ok, "test data"}
|
|
assert assert_ash_success(success_result) == "test data"
|
|
end
|
|
|
|
test "assert_ash_error helper works" do
|
|
error_result = {:error, "test error"}
|
|
assert assert_ash_error(error_result) == error_result
|
|
end
|
|
|
|
test "assert_maps_equal helper works" do
|
|
actual = %{a: 1, b: 2, c: 3}
|
|
expected = %{a: 1, b: 2}
|
|
|
|
# Should pass - expected is subset of actual
|
|
assert_maps_equal(actual, expected)
|
|
end
|
|
|
|
test "eventually helper works for async operations" do
|
|
# Start a process that will set a value after a delay
|
|
test_pid = self()
|
|
|
|
spawn(fn ->
|
|
:timer.sleep(100)
|
|
send(test_pid, :done)
|
|
end)
|
|
|
|
# Use eventually to wait for the message
|
|
eventually(
|
|
fn ->
|
|
receive do
|
|
:done -> :ok
|
|
after
|
|
100 -> flunk("Message not received")
|
|
end
|
|
end,
|
|
timeout: 1000
|
|
)
|
|
end
|
|
end
|
|
end
|