summaryrefslogtreecommitdiff
path: root/test/support/fixtures/locations_fixtures.ex
blob: 3b7307461aed31be1224999e4bfe98485d9f697c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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