Packages

Process a set of IP clicks based on constraint

Current section

Files

Jump to
click test click_test.exs
Raw

test/click_test.exs

defmodule ClickTest do
use ExUnit.Case
doctest Click
test "most expensive click in the period for an ip" do
test_data = [
%{ip: "22.22.22.22", timestamp: "3/11/2020 02:02:58", amount: 7.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 02:02:45", amount: 11.00}
]
response = Click.process(test_data)
assert Enum.at(response, 0).amount == 11.00
end
test "If empty request body" do
test_data = []
response = Click.process(test_data)
assert Enum.count(response) == 0
end
test "most recent expensive click in the period for an ip" do
test_data = [
%{ip: "22.22.22.22", timestamp: "3/11/2020 02:02:58", amount: 7.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 02:32:45", amount: 11.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 02:20:45", amount: 11.00}
]
response = Click.process(test_data)
timestamp = Enum.at(response, 0).timestamp
assert timestamp.minute == 20
end
test "most expensive click in different period for an ip" do
test_data = [
%{ip: "22.22.22.22", timestamp: "3/11/2020 02:02:58", amount: 7.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 02:32:45", amount: 8.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:20:45", amount: 12.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:28:45", amount: 11.00}
]
response = Click.process(test_data)
assert Enum.count(response) == 2
assert Enum.at(response, 0).amount == 8.00
assert Enum.at(response, 1).amount == 12.00
end
test "Reject click if more than 10 entries in the request body" do
test_data = [
%{ip: "22.22.22.22", timestamp: "3/11/2020 02:02:58", amount: 7.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 02:32:45", amount: 8.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:20:45", amount: 12.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:28:45", amount: 11.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:28:45", amount: 19.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:28:45", amount: 21.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:28:45", amount: 2.50},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:28:45", amount: 11.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:28:45", amount: 3.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 03:28:45", amount: 61.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 04:28:45", amount: 10.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 06:28:45", amount: 9.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 09:28:45", amount: 2.00},
%{ip: "22.22.22.22", timestamp: "3/11/2020 13:28:45", amount: 1.00}
]
response = Click.process(test_data)
assert Enum.count(response) == 0
end
end