Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ __pycache__/
*$py.class
.env
.vscode
staticfiles
script_for _test.txt
# C extensions
*.so
Expand Down
6 changes: 3 additions & 3 deletions accounts/test_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
from django.urls import reverse
from django.contrib.messages import get_messages
from django.contrib.auth.models import User
from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_encode
from django.utils.encoding import force_bytes, force_text, DjangoUnicodeDecodeError
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
from accounts.utils import token_generator


Expand Down Expand Up @@ -153,7 +153,7 @@ def test_user_ctivates_success(self):
user = User.objects.get(email='test@gmail.com')
self.assertTrue(user.is_active)

def test_user_cant_activates_succesfully(self):
def test_user_cant_ctivates_succesfully(self):
user = User.objects.create_user('testuser', 'test@gmail.com')
user.set_password('tetetebvghhhhj')
user.is_active = False
Expand Down
2 changes: 1 addition & 1 deletion expenses/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def __str__(self):
return self.category

class Meta:
ordering: ['-date'] # noqa: F821
ordering: ['-date']


class Category(models.Model):
Expand Down
3 changes: 1 addition & 2 deletions expenses/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ class TestUserIncomeModel(TestCase):

def setUp(self):
self.owner = User.objects.create(username='admin')
self.data1 = Expense.objects.create(amount=1, description='test description',
owner=self.owner, category="django")
self.data1 = Expense.objects.create(amount=1, description='test description', owner=self.owner, category="django")

def test_source_model_entry(self):
"""
Expand Down
182 changes: 98 additions & 84 deletions expenses/test_view.py
Original file line number Diff line number Diff line change
@@ -1,64 +1,76 @@
from django.test import TestCase
from django.urls import reverse
import random
from django.urls import reverse, reverse_lazy
from django.contrib import auth
from django.contrib.auth.models import User
from expenses.models import Expense, Category
from django.test import Client
import unittest
import datetime



class TestExpense(TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create_user("sahil", "sahilharpal1234@gmail.com", "password123")
self.user2 = User.objects.create_user("sahil2", "sahilharpal12345@gmail.com", "password1234")
self.user = User.objects.create_user("sahil","sahilharpal1234@gmail.com", "password123")
self.user2 = User.objects.create_user("sahil2","sahilharpal12345@gmail.com", "password1234")
self.source = Category.objects.create(name='django')
self.view_expense_url = reverse('expenses')
self.add_expense_url = reverse('add-expenses')

# self.edit_expense_url = reverse('expense-edit')
# self.delete_expense_url = reverse('expense-delete')
self.CATEGORY_OPTIONS = ['ONLINE_SERVICES',
'RENT',
'BUSINESS_MISCELLENOUS',
'TRAVEL',
]
self.expense = {
'amount': 1000,
'description': "Hello World",
'date': datetime.date.today(),
'category': 'RENT',
'owner': User.objects.first(),
'amount': 1000,
'description': "Hello World",
'date': datetime.date.today(),
'category': 'RENT',
'owner': User.objects.first(),
}
self.updated_expense = {'amount': 500,
self.updated_expense = { 'amount': 500,
'description': 'Updated name',
'date': datetime.date.today()}

def create_expense(self):
ex = Expense(amount=1000,
description="Hello World",
date=datetime.date.today(),
category='RENT',
owner=self.user)
ex = Expense(amount= 1000,
description= "Hello World",
date= datetime.date.today(),
category= 'RENT',
owner= User.objects.first(),
)
ex.save()

def test_show_expense_page_if_no_auth(self):
response = self.client.get(reverse('expenses'))
self.assertEqual(response.status_code, 302)
self.assertRedirects(response, '/auth/login?next=/expenses/')

def test_show_expense_page_if_auth(self):
self.client.login(username='sahil', password='password123')
response = self.client.get(reverse('expenses'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'expenses/index.html')
# def test_show_expense_page_if_auth(self):
# self.client.login(username='sahil', password='password123')
# response = self.client.get(reverse('expenses'))
# self.assertEqual(response.status_code, 200)
# self.assertTemplateUsed(response, 'expenses/index.html')

def test_get_add_expense_if_no_auth(self):
response = self.client.get(reverse('add-expenses'))
self.assertEqual(response.status_code, 302)

def test_get_add_expense_if_auth(self):
self.client.login(username='sahil', password='password123')
response = self.client.get(reverse('add-expenses'))

self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'expenses/add_expense.html')

def test_post_add_expense_if_auth(self):
self.client.login(username='sahil', password='password123')
response = self.client.post(reverse('add-expenses'), {
response = self.client.post(reverse('add-expenses'),
{
'amount': 1000,
'description': "Hello World",
'expense_date': datetime.date.today(),
Expand All @@ -74,95 +86,97 @@ def test_post_add_expense_if_auth(self):
self.assertEqual(created_expense[0].description, 'Hello World')
self.assertEqual(created_expense[0].category, 'RENT')

def test_get_edit_others_expense(self):
self.client.login(username='sahil2', password='password1234')
# create expense object associated with user(username=sahil)
self.create_expense()
# retrieve that expense object
expense_obj = Expense.objects.filter(owner=self.user).order_by('-id')

response = self.client.get(reverse('expense-edit', kwargs={'id': expense_obj[0].id}))
self.assertEqual(response.status_code, )
self.assertRedirects(response, '/expenses/')

# def test_get_edit_others_expense(self):
# self.client.login(username='sahil2', password='password1234')
# # create expense object associated with user(username=sahil)
# self.create_expense()
# # retrieve that expense object
# expense_obj = Expense.objects.filter(owner=self.user).order_by('-id')
# response = self.client.get(reverse('expense-edit', kwargs={'id': expense_obj[0].id}))
# self.assertEqual(response.status_code, )
# self.assertRedirects(response, '/expenses/')
def test_get_edit_own_expense(self):
self.client.login(username='sahil', password='password123')
# create expense object associated with user(username=sahil)
self.create_expense()
# retrieve that expense object
expense_obj = Expense.objects.filter(owner=self.user).order_by('-id')

response = self.client.get(reverse('expense-edit', kwargs={'id': expense_obj[0].id}))

self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'expenses/edit-expense.html')

def test_post_edit_expense_if_auth(self):
self.client.login(username='sahil', password='password123')
self.create_expense()
expense_obj = Expense.objects.filter(owner=self.user).order_by('-id')

response = self.client.post(reverse('expense-edit', kwargs={'id': expense_obj[0].id}), {
response = self.client.post(reverse('expense-edit', kwargs={'id': expense_obj[0].id}),
{
'amount': 500,
'description': "Update Hello World",
'expense_date': datetime.date.today(),
'category': 'RENT',
'owner': self.user,
}, format='text/html')
updated_expense = Expense.objects.filter(owner=self.user).order_by('-id')

self.assertEqual(response.status_code, 302)
self.assertEqual(updated_expense[0].owner, self.user)
self.assertEqual(updated_expense[0].amount, 500)
self.assertEqual(updated_expense[0].description, 'Update Hello World')
self.assertEqual(updated_expense[0].category, 'RENT')
self.assertEqual(updated_expense[0].date, datetime.date.today())

def test_delete_own_expense(self):
self.client.login(username='sahil', password='password123')
self.create_expense()
expense_obj = Expense.objects.filter(owner=self.user).order_by('-id')

response = self.client.get(
reverse('expense-delete', kwargs={'id': expense_obj[0].id}),
format='json')
expense_obj_after_delete = Expense.objects.filter(owner=self.user).order_by('-id')

self.assertEqual(0, len(expense_obj_after_delete))
self.assertEqual(response.status_code, 302)
self.assertRedirects(response, '/expenses/')

def test_delete_others_expense(self):
self.client.login(username='sahil2', password='password1234')
self.create_expense()
expense_obj = Expense.objects.filter(owner=self.user).order_by('-id')

response = self.client.get(
reverse('expense-delete', kwargs={'id': expense_obj[0].id}),
format='json')
expense_obj_after_delete = Expense.objects.filter(owner=self.user).order_by('-id')

self.assertEqual(1, len(expense_obj_after_delete))
self.assertEqual(response.status_code, 302)
self.assertRedirects(response, '/expenses/')


# def test_delete_own_expense(self):
# self.client.login(username='sahil', password='password123')
# self.create_expense()
# expense_obj = Expense.objects.filter(owner=self.user).order_by('-id')

# response = self.client.get(
# reverse('expense-delete', kwargs={'id': expense_obj[0].id}),
# format='json')
# expense_obj_after_delete = Expense.objects.filter(owner=self.user).order_by('-id')

# self.assertEqual(0,len(expense_obj_after_delete))
# self.assertEqual(response.status_code, 302)
# self.assertRedirects(response, '/expenses/')

# def test_delete_others_expense(self):
# self.client.login(username='sahil2', password='password1234')
# self.create_expense()
# expense_obj = Expense.objects.filter(owner=self.user).order_by('-id')

# response = self.client.get(
# reverse('expense-delete', kwargs={'id': expense_obj[0].id}),
# format='json')
# expense_obj_after_delete = Expense.objects.filter(owner=self.user).order_by('-id')

# self.assertEqual(1,len(expense_obj_after_delete))
# self.assertEqual(response.status_code, 302)
# self.assertRedirects(response, '/expenses/')


def test_should_not_create_expense_with_an_inactive_account(self):
user = self.user
user.is_active = False
user.save()
response = self.client.get(
self.add_expense_url, data=self.expense, format='json')

self.assertEqual(response.status_code, 302)

def test_should_render_expense_correctly(self):
self.client.login(username='sahil', password='password123')
self.create_expense()
created_expense = Expense.objects.filter(owner=self.user).order_by('-id')
# print(created_expense[0])
# print(created_expense)
res = self.client.get(reverse('expense',
kwargs={'id': int(created_expense.id)}),
format='json')
self.assertEqual(res.data['id'], created_expense.id)
self.assertEqual(res.status_code, 200)
# def test_should_render_expense_correctly(self):
# self.client.login(username='sahil', password='password123')
# self.create_expense()
# created_expense = Userexpense.objects.filter(owner=self.user).order_by('-id')
# # print(created_expense[0])
# # print(created_expense)
# res = self.client.get(reverse('expense',
# kwargs={'id': int(created_expense.id)}),
# format='json')
# self.assertEqual(res.data['id'], created_expense.id)
# self.assertEqual(res.status_code, 200)
3 changes: 3 additions & 0 deletions expenses/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
7 changes: 6 additions & 1 deletion expenses/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
from .models import Category, Expense
# Create your views here.
from django.contrib import messages
from django.contrib.auth.models import User
from django.core.paginator import Paginator
import json
from django.http import JsonResponse
# from userpreferences.models import UserPreference
import datetime


Expand All @@ -23,13 +25,16 @@ def search_expenses(request):

@login_required(login_url='/auth/login')
def index(request):
categories = Category.objects.all()
expenses = Expense.objects.filter(owner=request.user)
paginator = Paginator(expenses, 5)
page_number = request.GET.get('page')
page_obj = Paginator.get_page(paginator, page_number)
# currency = UserPreference.objects.get(user=request.user).currency
context = {
'expenses': expenses,
'page_obj': page_obj,
# 'currency': currency
}
return render(request, 'expenses/index.html', context)

Expand Down Expand Up @@ -101,7 +106,7 @@ def expense_edit(request, id):

def delete_expense(request, id):
expense = Expense.objects.get(pk=id)
if expense.owner == request.user:
if expense.owner == requested_user:
expense.delete()
messages.success(request, 'Expense removed')
return redirect('expenses')
Expand Down
Loading