defmodule Mobilizon.Service.AddressTest do @moduledoc """ Test representing addresses """ use Mobilizon.DataCase alias Mobilizon.Addresses.Address alias Mobilizon.Service.Address, as: AddressRenderer import Mobilizon.Factory describe "render an address" do test "basic" do %Address{} = address = insert(:address) assert AddressRenderer.render_address(address) == "#{address.description}, #{address.postal_code}, #{address.locality}, #{address.country}" end test "a house" do assert AddressRenderer.render_address(%Address{ description: "somewhere", type: "house", postal_code: "35000", locality: "Rennes" }) == "somewhere, 35000, Rennes" end test "a city" do assert AddressRenderer.render_address(%Address{ description: "Rennes", type: "city", postal_code: "35000", locality: "Rennes" }) == "Rennes (35000)" end test "a region" do assert AddressRenderer.render_address(%Address{ description: "Ille et Vilaine", type: "administrative", postal_code: "", locality: "" }) == "Ille et Vilaine" end test "only with description" do assert AddressRenderer.render_address(%Address{description: "somewhere"}) == "somewhere" end test "with no data" do assert AddressRenderer.render_address(%Address{}) == nil assert_raise ArgumentError, "Invalid address", fn -> AddressRenderer.render_address!(%Address{}) end end end end