defmodule Silmataivas.LocationsFixtures do @moduledoc """ This module defines test helpers for creating entities via the `Silmataivas.Locations` context. """ import Silmataivas.UsersFixtures @doc """ Generate a location. """ def location_fixture(attrs \\ %{}) do # Create a user first if user_id is not provided user = if Map.has_key?(attrs, :user_id) or Map.has_key?(attrs, "user_id"), do: nil, else: user_fixture() {:ok, location} = attrs |> Enum.into(%{ latitude: 120.5, longitude: 120.5, user_id: (user && user.id) || attrs[:user_id] || attrs["user_id"] }) |> Silmataivas.Locations.create_location() location end @doc """ Generate a location with a specific user. """ def location_fixture_with_user(user, attrs \\ %{}) do {:ok, location} = attrs |> Enum.into(%{ latitude: 120.5, longitude: 120.5, user_id: user.id }) |> Silmataivas.Locations.create_location() location end @doc """ Generate location attributes with invalid values. """ def invalid_location_attrs do %{ latitude: nil, longitude: nil, user_id: nil } end @doc """ Generate location attributes with extreme values. """ def extreme_location_attrs do %{ # Extreme value outside normal range latitude: 1000.0, # Extreme value outside normal range longitude: 1000.0 } end end