defmodule MungeTest do use ExUnit.Case use FlowAssertions doctest Munge describe "&good/1" do test "sends along the response in an {:ok, response}" do {:ok, 3} |> Munge.good |> assert_equal 3 end test "raises an error in an {:err, response}" do assert_raise Munge.ResponseError, fn -> 3 = {:err, "nope"} |> Munge.good end end test "succeeds for other response atoms, as passed" do {:commit, ~w[a b c]} |> Munge.good(:commit) |> assert_equal ~w[a b c] end test "succeeds for a range of atoms, as passed" do {:commit, ~w[a b c]} |> Munge.good([:ok, :commit]) |> assert_equal ~w[a b c] end test "fails for other response atoms, as passed" do assert_raise Munge.ResponseError, fn -> ~w[a b c] = {:err, ~w[a b c]} |> Munge.good(:commit) end end end describe "&group_by/2" do test "rearranges based on a key" do [br4, br6, ploy4, ploy6] = networks = Sample.networks assert (networks |> Munge.group_by("hostname")) == %{ "incusbr0.gw" => [ br6, br4 ], "ploy" => [ploy6, ploy4], } end # test "rearranges based on a closure" do # [br4, br6, ploy4, ploy6] = networks = Sample.networks # assert (networks |> Munge.group_by("hostname")) == %{ # "incusbr0.gw" => [ br4, br6 ], # "ploy" => [ploy6, ploy4], # } # end end end