def test_best_by_edge_with_duplicates():
    item_a = Clothing(edge=2.0)
    item_b = Clothing(edge=2.0)
    item_c = Clothing(edge=4.0)
    mary = Vendor(inventory=[item_a, item_b, item_c])

    newest_item = mary.get_best_by_edge("Clothing")

    assert newest_item.category == "Clothing"
    assert newest_item.edge == pytest.approx(2.0)
def test_best_by_edge_no_matches_is_none():
    item_a = Electronics(edge=1.0)
    item_b = Decor(edge=2.0)
    item_c = Electronics(edge=4.0)
    item_d = Decor(edge=5.0)
    item_e = Electronics(edge=3.0)
    mary = Vendor(inventory=[item_a, item_b, item_c, item_d, item_e])

    newest_item = mary.get_best_by_edge("Clothing")

    assert newest_item is None
def test_best_by_edge():
    item_a = Electronics(edge=1.0)
    item_b = Decor(edge=2.0)
    item_c = Electronics(edge=4.0)
    item_d = Decor(edge=5.0)
    item_e = Electronics(edge=3.0)
    mary = Vendor(inventory=[item_a, item_b, item_c, item_d, item_e])

    newest_item = mary.get_best_by_edge("Electronics")

    assert newest_item.category == "Electronics"
    assert newest_item.edge == pytest.approx(1.0)