exercism/elixir/basketball-website/test/basketball_website_test.exs

336 lines
8.4 KiB
Elixir

defmodule BasketballWebsiteTest do
use ExUnit.Case
describe "extract_from_path retrieves from" do
@tag task_id: 1
test "first layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.extract_from_path(team_data, "team_name") == "Hoop Masters"
end
@tag task_id: 1
test "second layer" do
team_data = %{
"coach" => %{
"first_name" => "Jane",
"last_name" => "Brown"
},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.extract_from_path(team_data, "coach.first_name") == "Jane"
end
@tag task_id: 1
test "third layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{
"99" => %{
"first_name" => "Amalee",
"last_name" => "Tynemouth",
"email" => "atynemouth0@yellowpages.com",
"statistics" => %{}
},
"98" => %{
"first_name" => "Tiffie",
"last_name" => "Derle",
"email" => "tderle1@vimeo.com",
"statistics" => %{}
}
}
}
assert BasketballWebsite.extract_from_path(team_data, "players.99.first_name") == "Amalee"
end
@tag task_id: 1
test "fourth layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{
"42" => %{
"first_name" => "Conchita",
"last_name" => "Elham",
"email" => "celham4@wikia.com",
"statistics" => %{
"average_points_per_game" => 4.6,
"free_throws_made" => 7,
"free_throws_attempted" => 10
}
},
"61" => %{
"first_name" => "Noel",
"last_name" => "Fawlkes",
"email" => "nfawlkes5@yahoo.co.jp",
"statistics" => %{
"average_points_per_game" => 5.0,
"free_throws_made" => 5,
"free_throws_attempted" => 5
}
}
}
}
assert BasketballWebsite.extract_from_path(
team_data,
"players.61.statistics.average_points_per_game"
) === 5.0
end
end
describe "extract_from_path returns nil from nonexistent last key in" do
@tag task_id: 1
test "first layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.extract_from_path(team_data, "team_song") == nil
end
@tag task_id: 1
test "second layer" do
team_data = %{
"coach" => %{
"first_name" => "Jane",
"last_name" => "Brown"
},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.extract_from_path(team_data, "coach.age") == nil
end
@tag task_id: 1
test "third layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{
"32" => %{
"first_name" => "Deni",
"last_name" => "Lidster",
"email" => nil,
"statistics" => %{}
}
}
}
assert BasketballWebsite.extract_from_path(team_data, "players.32.height") == nil
end
@tag task_id: 1
test "fourth layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{
"12" => %{
"first_name" => "Andy",
"last_name" => "Napoli",
"email" => "anapoli7@goodreads.com",
"statistics" => %{
"average_points_per_game" => 7
}
}
}
}
assert BasketballWebsite.extract_from_path(
team_data,
"players.12.statistics.personal_fouls"
) == nil
end
end
@tag task_id: 1
test "extract_from_path returns nil from nonexistent path" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.extract_from_path(
team_data,
"support_personnel.physiotherapy.first_name"
) == nil
end
describe "get_in_path retrieves from" do
@tag task_id: 2
test "first layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.get_in_path(team_data, "team_name") == "Hoop Masters"
end
@tag task_id: 2
test "second layer" do
team_data = %{
"coach" => %{
"first_name" => "Jane",
"last_name" => "Brown"
},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.get_in_path(team_data, "coach.first_name") == "Jane"
end
@tag task_id: 2
test "third layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{
"99" => %{
"first_name" => "Amalee",
"last_name" => "Tynemouth",
"email" => "atynemouth0@yellowpages.com",
"statistics" => %{}
},
"98" => %{
"first_name" => "Tiffie",
"last_name" => "Derle",
"email" => "tderle1@vimeo.com",
"statistics" => %{}
}
}
}
assert BasketballWebsite.get_in_path(team_data, "players.99.first_name") == "Amalee"
end
@tag task_id: 2
test "fourth layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{
"42" => %{
"first_name" => "Conchita",
"last_name" => "Elham",
"email" => "celham4@wikia.com",
"statistics" => %{
"average_points_per_game" => 4.6,
"free_throws_made" => 7,
"free_throws_attempted" => 10
}
},
"61" => %{
"first_name" => "Noel",
"last_name" => "Fawlkes",
"email" => "nfawlkes5@yahoo.co.jp",
"statistics" => %{
"average_points_per_game" => 5.0,
"free_throws_made" => 5,
"free_throws_attempted" => 5
}
}
}
}
assert BasketballWebsite.get_in_path(
team_data,
"players.61.statistics.average_points_per_game"
) === 5.0
end
end
describe "get_in_path returns nil from nonexistent last key in" do
@tag task_id: 2
test "first layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.get_in_path(team_data, "team_song") == nil
end
@tag task_id: 2
test "second layer" do
team_data = %{
"coach" => %{
"first_name" => "Jane",
"last_name" => "Brown"
},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.get_in_path(team_data, "coach.age") == nil
end
@tag task_id: 2
test "third layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{
"32" => %{
"first_name" => "Deni",
"last_name" => "Lidster",
"email" => nil,
"statistics" => %{}
}
}
}
assert BasketballWebsite.get_in_path(team_data, "players.32.height") == nil
end
@tag task_id: 2
test "fourth layer" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{
"12" => %{
"first_name" => "Andy",
"last_name" => "Napoli",
"email" => "anapoli7@goodreads.com",
"statistics" => %{
"average_points_per_game" => 7
}
}
}
}
assert BasketballWebsite.get_in_path(team_data, "players.12.statistics.personal_fouls") ==
nil
end
end
@tag task_id: 2
test "get_in_path returns nil from nonexistent path" do
team_data = %{
"coach" => %{},
"team_name" => "Hoop Masters",
"players" => %{}
}
assert BasketballWebsite.get_in_path(team_data, "support_personnel.physiotherapy.first_name") ==
nil
end
end