def test_sort_level_price_dict():
    myoffer = offer.Offer()
    assert myoffer.level_price_dict is None
    myoffer.level_price_dict = TEST_DICT
    keys = list(myoffer.level_price_dict.keys())
    assert myoffer._is_level_price_dict_sorted()
    assert myoffer.level_price_dict[keys[
        0]] == "101", "Level Price Dict values should not be assigned to wrong key"
def test_init_args_out_of_order_fails():
    with raises(TypeError):
        offer.Offer(TEST_DICT, 1)
def test_init_no_args():
    myoffer = offer.Offer()
    assert myoffer.id == 0
    assert myoffer.level_price_dict is None
def test_init_named_args_out_of_order():
    myoffer = offer.Offer(level_price_dict=TEST_DICT, id=1)
    assert myoffer.id == 1
    assert myoffer.level_price_dict == TEST_DICT
def test_init_level_price_dict_missing():
    myoffer = offer.Offer(1)
    assert myoffer.level_price_dict is None
def test_init_string_id():
    myoffer = offer.Offer("1")
    assert myoffer.id == 1
def test_init_int_id():
    myoffer = offer.Offer(1)
    assert myoffer.id == 1
def test_level_price_dict_tuple_fails():
    myoffer = offer.Offer(1, {(1, 2), (3, 4)})
    assert myoffer.level_price_dict is None
import urmarketscraper.offer as offer
from pytest import raises

TEST_DICT = {2: "456", 3: "789", 1: "123", 4: "101"}
FULL_OFFER = offer.Offer(1, TEST_DICT)


# Happy Path - No Args Init
def test_init_no_args():
    myoffer = offer.Offer()
    assert myoffer.id == 0
    assert myoffer.level_price_dict is None


# Happy Path - Init Int Id
def test_init_int_id():
    myoffer = offer.Offer(1)
    assert myoffer.id == 1


# Happy Path - Init String Id
def test_init_string_id():
    myoffer = offer.Offer("1")
    assert myoffer.id == 1


# Happy Path - Level Price Dict Sorted on Init
def test_init_level_price_dict_sorted():
    keys = list(FULL_OFFER.level_price_dict.keys())
    print(keys)
    assert FULL_OFFER._is_level_price_dict_sorted(