Beispiel #1
0
def test_expense_search_raises_error_when_path_is_dir(tmpdir):
    path = os.path.join(tmpdir, 'test.csv')
    os.mkdir(path)

    ed = ExpenseCSVData(path)
    with pytest.raises(UnableToOpenDataFileException):
        ed.search('prd1')
Beispiel #2
0
def test_expense_search_for_product_with_multiple_results(tmpdir):
    path = os.path.join(tmpdir, 'test.csv')
    with open(path, 'w') as f:
        f.write(TEST_CASE_2_CONTENT)

    ed = ExpenseCSVData(path)
    result = ed.search('prd1')

    assert len(result) == 2
Beispiel #3
0
def test_expense_save_raises_error_when_path_is_dir(tmpdir):
    path = os.path.join(tmpdir, 'test.csv')
    os.mkdir(path)

    ed = ExpenseCSVData(path)
    # This check if within with statement exception is raise.
    # Test fails if there is no exception of given type in a given block.
    with pytest.raises(UnableToOpenDataFileException):
        ed.save({'name': 'a', 'price': 1})
Beispiel #4
0
def test_expense_save():
    tmp_dir = tempfile.TemporaryDirectory()

    with tmp_dir as d:
        path = os.path.join(d, 'test.csv')
        ed = ExpenseCSVData(path)
        ed.save({'name': 'a', 'price': 1})

        with open(path, 'r') as f:
            l = f.readlines()

    assert len(l) == 2
Beispiel #5
0
def get_expenses(search=None):
    reader = ExpenseCSVData('expense.csv')
    result = []
    with reader:
        if search:
            data = reader.search(search)
        else:
            data = reader.load()

        for item in data:
            r = "{name} - {price}".format(**item)
            result.append(r)
    return result
Beispiel #6
0
def test_expense_search_for_product(prd, price, tmpdir):
    path = os.path.join(tmpdir, 'test.csv')
    with open(path, 'w') as f:
        f.write(TEST_CASE_2_CONTENT)

    ed = ExpenseCSVData(path)
    result = ed.search(prd)

    assert len(result) == 1

    first_row = result[0]
    data = OrderedDict([('name', prd),
                        ('price', price)])

    assert data == first_row
Beispiel #7
0
def test_expense_load_better(tmpdir, tmp_file_content):
    path = os.path.join(tmpdir, 'test.csv')

    with open(path, 'w') as f:
        f.write(tmp_file_content)

    ed = ExpenseCSVData(path)
    result = ed.load()

    assert len(result) == 1

    first_row = result[0]
    data = OrderedDict([('name', 'prd'),
                        ('price', 123)])

    assert data == first_row
Beispiel #8
0
def test_expense_load(tmp_file_content):
    tmp_dir = tempfile.TemporaryDirectory()

    with tmp_dir as d:
        path = os.path.join(d, 'test.csv')

        with open(path, 'w') as f:
            f.write(tmp_file_content)

        ed = ExpenseCSVData(path)
        result = ed.load()

    assert len(result) == 1

    first_row = result[0]
    assert first_row['name'] == 'prd'
    assert first_row['price'] == 123
Beispiel #9
0
 def add_product_cmd(self, new_product):
     writer = ExpenseCSVData('expense.csv')
     with writer:
         writer.save(new_product)
     data = get_expenses()
     self.listbox_variable.set(data)