42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import pytest
|
|
from datetime import date
|
|
from decimal import Decimal
|
|
from django.urls import reverse
|
|
from expenses.models import Expense, Category, Tag, Account
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
def test_expense_can_have_tags(client, django_user_model):
|
|
user = django_user_model.objects.create_user(username='test', password='1234')
|
|
client.login(username='test', password='1234')
|
|
|
|
tag = Tag.objects.create(name='Food', owner=user)
|
|
category = Category.objects.create(name='General', owner=user)
|
|
|
|
general_account = Account.objects.create(name='General', owner=user, initial_balance=300, active=True)
|
|
|
|
expense = Expense.objects.create(
|
|
owner=user,
|
|
category=category,
|
|
amount=10,
|
|
date=date.today(),
|
|
account=general_account,
|
|
)
|
|
expense.tags.add(tag)
|
|
|
|
assert expense.tags.count() == 1
|
|
assert tag in expense.tags.all()
|
|
|
|
def test_user_can_create_tag(client, django_user_model):
|
|
user = django_user_model.objects.create_user(
|
|
username='test', password='1234'
|
|
)
|
|
client.login(username='test', password='1234')
|
|
|
|
response = client.post(
|
|
reverse('tag_create'),
|
|
{'name': 'Food'}
|
|
)
|
|
|
|
assert Tag.objects.filter(owner=user, name='Food').exists()
|