Coverage for admin.py : + 100% +
+
+ diff --git a/README.md b/README.md index b475a582..bd907371 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# django-testing-tutorial \ No newline at end of file +# budget_app_testing diff --git a/budgetproject/.coverage b/budgetproject/.coverage new file mode 100644 index 00000000..2dcb45c6 Binary files /dev/null and b/budgetproject/.coverage differ diff --git a/budgetproject/.coveragerc b/budgetproject/.coveragerc new file mode 100644 index 00000000..99897da5 --- /dev/null +++ b/budgetproject/.coveragerc @@ -0,0 +1,2 @@ +[run] +omit = *venv*, *manage.py* diff --git a/budgetproject/README.md b/budgetproject/README.md deleted file mode 100644 index b96cf3c2..00000000 --- a/budgetproject/README.md +++ /dev/null @@ -1 +0,0 @@ -# budget-application-tutorial \ No newline at end of file diff --git a/budgetproject/budget/.coverage b/budgetproject/budget/.coverage new file mode 100644 index 00000000..d9c7ed5d Binary files /dev/null and b/budgetproject/budget/.coverage differ diff --git a/budgetproject/budget/__pycache__/admin.cpython-38.pyc b/budgetproject/budget/__pycache__/admin.cpython-38.pyc new file mode 100644 index 00000000..494479e3 Binary files /dev/null and b/budgetproject/budget/__pycache__/admin.cpython-38.pyc differ diff --git a/budgetproject/budget/__pycache__/apps.cpython-38.pyc b/budgetproject/budget/__pycache__/apps.cpython-38.pyc new file mode 100644 index 00000000..e775609c Binary files /dev/null and b/budgetproject/budget/__pycache__/apps.cpython-38.pyc differ diff --git a/budgetproject/budget/__pycache__/forms.cpython-38.pyc b/budgetproject/budget/__pycache__/forms.cpython-38.pyc new file mode 100644 index 00000000..98ce0ac4 Binary files /dev/null and b/budgetproject/budget/__pycache__/forms.cpython-38.pyc differ diff --git a/budgetproject/budget/__pycache__/models.cpython-38.pyc b/budgetproject/budget/__pycache__/models.cpython-38.pyc new file mode 100644 index 00000000..a914e9ee Binary files /dev/null and b/budgetproject/budget/__pycache__/models.cpython-38.pyc differ diff --git a/budgetproject/budget/__pycache__/tests.cpython-38.pyc b/budgetproject/budget/__pycache__/tests.cpython-38.pyc new file mode 100644 index 00000000..8d503488 Binary files /dev/null and b/budgetproject/budget/__pycache__/tests.cpython-38.pyc differ diff --git a/budgetproject/budget/__pycache__/urls.cpython-38.pyc b/budgetproject/budget/__pycache__/urls.cpython-38.pyc new file mode 100644 index 00000000..ef29eb81 Binary files /dev/null and b/budgetproject/budget/__pycache__/urls.cpython-38.pyc differ diff --git a/budgetproject/budget/__pycache__/views.cpython-38.pyc b/budgetproject/budget/__pycache__/views.cpython-38.pyc new file mode 100644 index 00000000..2d234814 Binary files /dev/null and b/budgetproject/budget/__pycache__/views.cpython-38.pyc differ diff --git a/budgetproject/budget/htmlcov/admin_py.html b/budgetproject/budget/htmlcov/admin_py.html new file mode 100644 index 00000000..6109dc40 --- /dev/null +++ b/budgetproject/budget/htmlcov/admin_py.html @@ -0,0 +1,71 @@ + + +
+ + +
+
+ Hot-keys on this page
++ r + m + x + p toggle line displays +
++ j + k next/prev highlighted chunk +
++ 0 (zero) top of page +
++ 1 (one) first highlighted chunk +
+1from django.contrib import admin
+2from .models import Project, Expense, Category
+ +4admin.site.register(Project)
+5admin.site.register(Expense)
+6admin.site.register(Category)
+
+
+ Hot-keys on this page
++ r + m + x + p toggle line displays +
++ j + k next/prev highlighted chunk +
++ 0 (zero) top of page +
++ 1 (one) first highlighted chunk +
+
+
+ Hot-keys on this page
++ r + m + x + p toggle line displays +
++ j + k next/prev highlighted chunk +
++ 0 (zero) top of page +
++ 1 (one) first highlighted chunk +
+1from django import forms
+ + +4class ExpenseForm(forms.Form):
+5 title = forms.CharField()
+6 amount = forms.IntegerField()
+7 category = forms.CharField()
+
+
+
+ Hot-keys on this page
++ n + s + m + x + c change column sorting +
+| Module | +statements | +missing | +excluded | +coverage | +
|---|---|---|---|---|
| Total | +193 | +0 | +0 | +100% | +
| admin.py | +5 | +0 | +0 | +100% | +
| apps.py | +3 | +0 | +0 | +100% | +
| forms.py | +5 | +0 | +0 | +100% | +
| models.py | +33 | +0 | +0 | +100% | +
| tests/__init__.py | +0 | +0 | +0 | +100% | +
| tests/test_forms.py | +12 | +0 | +0 | +100% | +
| tests/test_models.py | +22 | +0 | +0 | +100% | +
| tests/test_urls.py | +12 | +0 | +0 | +100% | +
| tests/test_views.py | +55 | +0 | +0 | +100% | +
| urls.py | +4 | +0 | +0 | +100% | +
| views.py | +42 | +0 | +0 | +100% | +
+ No items found using the specified filter. +
+
+
+ Hot-keys on this page
++ r + m + x + p toggle line displays +
++ j + k next/prev highlighted chunk +
++ 0 (zero) top of page +
++ 1 (one) first highlighted chunk +
+1from django.db import models
+2from django.utils.text import slugify
+ + +5class Project(models.Model):
+6 name = models.CharField(max_length=100)
+7 slug = models.SlugField(max_length=100, unique=True, blank=True)
+8 budget = models.IntegerField()
+ +10 def save(self, *args, **kwargs):
+11 self.slug = slugify(self.name)
+12 super(Project, self).save(*args, **kwargs)
+ +14 @property
+15 def budget_left(self):
+16 expense_list = Expense.objects.filter(project=self)
+17 total_expense_amount = 0
+18 for expense in expense_list:
+19 total_expense_amount += expense.amount
+ +21 # temporary solution, because the form currently only allows integer amounts
+22 total_expense_amount = int(total_expense_amount)
+ +24 return self.budget - total_expense_amount
+ +26 @property
+27 def total_transactions(self):
+28 expense_list = Expense.objects.filter(project=self)
+29 return expense_list.count()
+ +31 def get_absolute_url(self):
+32 return '/' + self.slug
+ + +35class Category(models.Model):
+36 project = models.ForeignKey(Project, on_delete=models.CASCADE)
+37 name = models.CharField(max_length=50)
+ + +40class Expense(models.Model):
+41 project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='expenses')
+42 title = models.CharField(max_length=100)
+43 amount = models.DecimalField(max_digits=8, decimal_places=2)
+44 category = models.ForeignKey(Category, on_delete=models.CASCADE)
+ +46 class Meta:
+47 ordering = ('-amount',)
+