Esempio n. 1
0
def test_register_find_by_barcode():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    item = register._find_in_menu("001")
    assert item == Item("Chocolate bar", 1.0, "001", category="Candy",
                        shortcut=None)
Esempio n. 2
0
def test_register_reads_register_count():
    with io.open('tmp/register_count.bin', 'wb') as f:
        data = struct.pack('d', 11.57)
        f.write(data)
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    assert register.register_count == 11.57
Esempio n. 3
0
def test_register_get_order_total_empty_order():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    order = dict()
    register.order = order
    assert register.get_order_total() == 0.0
Esempio n. 4
0
def test_register_find_by_shortcut():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    item = register._find_in_menu("hc")
    assert item == Item("Hot chocolate", 0.5, "003", category="Beverage",
                        shortcut="hc")
Esempio n. 5
0
def test_register_remove_raises_exception_if_item_not_in_order():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    item = Item("Gum", 0.75, "002", category="Candy", shortcut=None)
    order = {}
    register.order = order

    register._remove_from_order(item)
Esempio n. 6
0
def test_register_remove_unique_item_from_order():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    item = Item("Gum", 0.75, "002", category="Candy", shortcut=None)
    order = {item: 1}
    register.order = order

    register._remove_from_order(item)
    assert register.order == {}
Esempio n. 7
0
def test_register_add():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    register.add("001")

    correct_added_item = Item("Chocolate bar", 1.0, "001", category="Candy",
                              shortcut=None)
    correct_quantity = 1
    assert register.order == {correct_added_item: correct_quantity}
Esempio n. 8
0
def test_register_adjust():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    register.register_count = 2.5
    register.adjust(2.5)
    assert register.register_count == 5.0
    with io.open('tmp/register_count.bin', 'rb') as f:
        (register_count, ) = struct.unpack('d', f.read(8))
    assert register_count == 5.0
Esempio n. 9
0
def test_register_add_custom():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    register.add_custom("gum", 0.47)

    correct_added_item = Item("gum", 0.47, "custom_gum", category="Custom",
                              shortcut=None)
    correct_quantity = 1
    assert register.order == {correct_added_item: correct_quantity}
Esempio n. 10
0
def test_register_get_order_total_non_empty_order():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    items = [
        Item("Chocolate bar", 1.0, "001", category="Candy", shortcut=None),
        Item("gum", 0.47, "custom_gum", category="Custom", shortcut=None)
    ]
    order = {items[0]: 1, items[1]: 1}
    register.order = order
    assert register.get_order_total() == 1.47
Esempio n. 11
0
def test_register_update_register_count():
    with io.open('tmp/register_count.bin', 'wb') as f:
        data = struct.pack('d', 11.57)
        f.write(data)
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")

    register.register_count = 2.0
    register._update_register_count()
    with io.open('tmp/register_count.bin', 'rb') as f:
        (register_count, ) = struct.unpack('d', f.read(8))
    assert register_count == 2.0
Esempio n. 12
0
def test_register_add_new_item_to_order():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    items = [
        Item("Chocolate bar", 1.0, "001", category="Candy", shortcut=None),
        Item("Gum", 0.75, "002", category="Candy", shortcut=None)
    ]
    order = {items[0]: 1}
    register.order = order

    register._add_to_order(items[1])
    assert register.order == {items[0]: 1, items[1]: 1}
Esempio n. 13
0
def test_register_checkout_empty_order():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")

    order = dict()

    register.register_count = 1.5
    register.order = order
    register.checkout_order()
    assert register.register_count == 1.5
    assert register.order == {}
    with io.open('tmp/register_count.bin', 'rb') as f:
        (register_count, ) = struct.unpack('d', f.read(8))
    assert register_count == 1.5
Esempio n. 14
0
def test_register_clear_order():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")

    items = [
        Item("Chocolate bar", 1.0, "001", category="Candy", shortcut=None),
        Item("Gum", 0.75, "002", category="Candy", shortcut=None)
    ]
    initial_order = {items[0]: 1, items[1]: 1}
    final_order = {}

    register.order = initial_order
    register.clear_order()
    assert register.order == final_order
Esempio n. 15
0
def test_register_remove_custom():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")

    items = [
        Item("Chocolate bar", 1.0, "001", category="Candy", shortcut=None),
        Item("gum", 0.47, "custom_gum", category="Custom", shortcut=None)
    ]
    initial_order = {items[0]: 1, items[1]: 1}
    final_order = {items[0]: 1}

    register.order = initial_order
    register.remove("custom_gum")
    assert register.order == final_order
Esempio n. 16
0
def test_register_order_to_string():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")

    items = [
        Item("Chocolate bar", 1.0, "001", category="Candy", shortcut=None),
        Item("Gum", 0.75, "002", category="Candy", shortcut=None)
    ]
    order = {items[0]: 1, items[1]: 1}
    register.order = order

    representation = register.order_to_string().split('\n')
    correct_representation = ['Chocolate bar x 1', 'Gum x 1']
    assert all([line in correct_representation for line in representation])
    assert all([line in representation for line in correct_representation])
Esempio n. 17
0
def test_register_reads_employees_list():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    employees = register.employees
    correct_employees = [
        Employee("Admin", "2222", "admin", 2),
        Employee("Employee", "1111", "employee", 1),
        Employee("Guest", "0000", "guest", 0)
    ]

    assert all([employee in employees for employee in correct_employees])
    assert all([employee in correct_employees for employee in employees])

    for employee in correct_employees:
        corresponding_employee = employees[employees.index(employee)]
        assert employee.get_name() == corresponding_employee.get_name()
        assert employee.get_barcode() == corresponding_employee.get_barcode()
        assert employee.get_code() == corresponding_employee.get_code()
        assert employee.get_level() == corresponding_employee.get_level()
Esempio n. 18
0
def test_register_checkout_order():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")

    items = [
        Item("Chocolate bar", 1.0, "001", category="Candy", shortcut=None),
        Item("Gum", 0.75, "002", category="Candy", shortcut=None)
    ]
    order = {items[0]: 1, items[1]: 1}

    register.register_count = 1.5
    register.order = order
    register.checkout_order()
    assert register.register_count == 3.25
    assert register.order == {}
    with io.open('tmp/register_count.bin', 'rb') as f:
        (register_count, ) = struct.unpack('d', f.read(8))
    assert register_count == 3.25
Esempio n. 19
0
def test_register_reads_menu():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    menu = register.menu
    correct_menu = [
        Item("Chocolate bar", 1.0, "001", category="Candy", shortcut=None),
        Item("Gum", 0.75, "002", category="Candy", shortcut=None),
        Item("Hot chocolate", 0.5, "003", category="Beverage", shortcut="hc")
    ]

    assert all([item in menu for item in correct_menu])
    assert all([item in correct_menu for item in menu])

    for item in correct_menu:
        corresponding_item = menu[menu.index(item)]
        assert item.get_name() == corresponding_item.get_name()
        assert item.get_price() == corresponding_item.get_price()
        assert item.get_barcode() == corresponding_item.get_barcode()
        assert item.get_category() == corresponding_item.get_category()
        assert item.get_shortcut() == corresponding_item.get_shortcut()
Esempio n. 20
0
def test_register_get_register_count():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    register.register_count = 11.57
    assert register.get_register_count() == 11.57
Esempio n. 21
0
def test_register_get_employee_name_returns_employee_name():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    assert register.get_employee_name() == "Admin"
Esempio n. 22
0
def test_register_count_register_rejects_negative_counts():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    register.count_register(-1)
Esempio n. 23
0
def test_register_substract_raises_exception_if_amount_too_large():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    register.register_count = 1
    register._substract_from_register_count(2)
Esempio n. 24
0
def test_register_find_raises_exception_on_nonexistent_item():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    item = register._find_in_menu("nothing")
Esempio n. 25
0
def test_register_verify_credential_allows_right_employee():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register._verify_credentials(Employee("E", "1111", "employee", 1), 0)
    register._verify_credentials(Employee("E", "1111", "employee", 1), 1)
Esempio n. 26
0
def test_register_verify_credential_can_allow_none():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register._verify_credentials(None, None)
Esempio n. 27
0
def test_register_verify_credential_raises_exception_on_none():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register._verify_credentials(None, 1)
Esempio n. 28
0
def test_register_verify_credential_raises_exception_on_wrong_employee():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register._verify_credentials(Employee("E", "1111", "employee", 1), 2)
Esempio n. 29
0
def test_register_logout_employee():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    register.login_employee("admin")
    register.logout_employee()
    assert register.employee is None
Esempio n. 30
0
def test_register_get_employee_name_returns_none():
    register = Register('tmp/menu.txt', 'tmp/employees.txt',
                        'tmp/register_count.bin', 'tmp/')
    assert register.get_employee_name() == "None"