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)
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
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
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")
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)
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 == {}
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}
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
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}
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
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
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}
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
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
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
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])
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()
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
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()
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
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"
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)
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)
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")
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)
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)
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)
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)
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
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"