mirror of
https://github.com/wanderer-industries/wanderer
synced 2026-04-30 22:40:30 +00:00
114 lines
3.6 KiB
Elixir
114 lines
3.6 KiB
Elixir
defmodule WandererApp.Test.Mocks do
|
|
@moduledoc """
|
|
Mock definitions for testing.
|
|
These mocks are defined early in the test boot process to be available
|
|
when the application starts.
|
|
"""
|
|
|
|
@doc """
|
|
Sets up the basic mocks needed for application startup.
|
|
This function can be called during application startup in test environment.
|
|
"""
|
|
def setup_mocks do
|
|
# Ensure Mox is started
|
|
Application.ensure_all_started(:mox)
|
|
|
|
# Mocks are already defined in mock_definitions.ex
|
|
# Here we just set up stubs for them
|
|
|
|
# Set global mode for the mocks to avoid ownership issues during application startup
|
|
Mox.set_mox_global()
|
|
|
|
# Set up default stubs for logger mock (these methods are called during application startup)
|
|
Test.LoggerMock
|
|
|> Mox.stub(:info, fn _message -> :ok end)
|
|
|> Mox.stub(:warning, fn _message -> :ok end)
|
|
|> Mox.stub(:error, fn _message -> :ok end)
|
|
|> Mox.stub(:debug, fn _message -> :ok end)
|
|
|
|
# Make mocks available to any spawned process
|
|
:persistent_term.put({Test.LoggerMock, :global_mode}, true)
|
|
:persistent_term.put({Test.PubSubMock, :global_mode}, true)
|
|
:persistent_term.put({Test.DDRTMock, :global_mode}, true)
|
|
|
|
# Set up default stubs for PubSub mock
|
|
Test.PubSubMock
|
|
|> Mox.stub(:broadcast, fn _server, _topic, _message -> :ok end)
|
|
|> Mox.stub(:broadcast!, fn _server, _topic, _message -> :ok end)
|
|
|> Mox.stub(:subscribe, fn _topic -> :ok end)
|
|
|> Mox.stub(:subscribe, fn _module, _topic -> :ok end)
|
|
|> Mox.stub(:unsubscribe, fn _topic -> :ok end)
|
|
|
|
# Set up default stubs for DDRT mock
|
|
Test.DDRTMock
|
|
|> Mox.stub(:insert, fn _data, _tree_name -> :ok end)
|
|
|> Mox.stub(:update, fn _id, _data, _tree_name -> :ok end)
|
|
|> Mox.stub(:delete, fn _ids, _tree_name -> :ok end)
|
|
|
|
# Set up default stubs for CachedInfo mock
|
|
WandererApp.CachedInfo.Mock
|
|
|> Mox.stub(:get_system_static_info, fn
|
|
30_000_142 ->
|
|
{:ok,
|
|
%{
|
|
solar_system_id: 30_000_142,
|
|
region_id: 10_000_002,
|
|
constellation_id: 20_000_020,
|
|
solar_system_name: "Jita",
|
|
solar_system_name_lc: "jita",
|
|
constellation_name: "Kimotoro",
|
|
region_name: "The Forge",
|
|
system_class: 0,
|
|
security: "0.9",
|
|
type_description: "High Security",
|
|
class_title: "High Sec",
|
|
is_shattered: false,
|
|
effect_name: nil,
|
|
effect_power: nil,
|
|
statics: [],
|
|
wandering: [],
|
|
triglavian_invasion_status: nil,
|
|
sun_type_id: 45041
|
|
}}
|
|
|
|
30_000_144 ->
|
|
{:ok,
|
|
%{
|
|
solar_system_id: 30_000_144,
|
|
region_id: 10_000_043,
|
|
constellation_id: 20_000_304,
|
|
solar_system_name: "Amarr",
|
|
solar_system_name_lc: "amarr",
|
|
constellation_name: "Throne Worlds",
|
|
region_name: "Domain",
|
|
system_class: 0,
|
|
security: "0.9",
|
|
type_description: "High Security",
|
|
class_title: "High Sec",
|
|
is_shattered: false,
|
|
effect_name: nil,
|
|
effect_power: nil,
|
|
statics: [],
|
|
wandering: [],
|
|
triglavian_invasion_status: nil,
|
|
sun_type_id: 45041
|
|
}}
|
|
|
|
_ ->
|
|
{:error, :not_found}
|
|
end)
|
|
|
|
:ok
|
|
end
|
|
|
|
@doc """
|
|
Sets up additional mock expectations for specific tests.
|
|
Call this in your test setup if you need to override the default stubs.
|
|
"""
|
|
def setup_additional_expectations do
|
|
# Reset to global mode in case tests changed it
|
|
Mox.set_mox_global()
|
|
:ok
|
|
end
|
|
end
|