Skip to content

Commit 5a2ab1a

Browse files
committed
Add accounts, tickets and checkout test files
1 parent df89335 commit 5a2ab1a

File tree

6 files changed

+260
-11
lines changed

6 files changed

+260
-11
lines changed

accounts/test_accounts.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
from django.test import TestCase, Client
3+
from django.shortcuts import get_object_or_404
4+
from accounts.models import User, Profile
5+
6+
7+
class TestAccountsModels(TestCase):
8+
def setUp(self):
9+
# Every test refers to this logged in user
10+
username = 'testuser'
11+
password = '12345'
12+
self.user = User.objects.create_user(
13+
username=username, password=password)
14+
login = self.client.login(username=username, password=password)
15+
16+
def test_profile_class_returns_username(self):
17+
user = get_object_or_404(Profile, pk=self.user.id)
18+
self.assertEqual(str(user), user.user.username)

accounts/test_views.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from django.test import TestCase, Client
2+
from django.shortcuts import get_object_or_404
3+
from accounts.models import User, Profile
4+
5+
6+
class TestAccountsViewsLoggedIn(TestCase):
7+
def setUp(self):
8+
# Every test refers to this logged in user
9+
username = 'testuser'
10+
password = '12345'
11+
self.user = User.objects.create_user(
12+
username=username, password=password)
13+
login = self.client.login(username=username, password=password)
14+
15+
def test_get_user_profile_page(self):
16+
page = self.client.get("/accounts/profile/")
17+
self.assertEqual(page.status_code, 200)
18+
self.assertTemplateUsed(page, "profile.html")
19+
20+
def test_redirect_to_home_page_after_logout(self):
21+
page = self.client.get("/accounts/logout/")
22+
self.assertRedirects(page, "/")
23+
24+
def test_redirect_to_tickets_after_successful_login(self):
25+
page = self.client.get("/accounts/logout/")
26+
self.assertRedirects(page, "/")
27+
28+
# POSTS
29+
def test_staff_access_is_granted(self):
30+
response = self.client.post(
31+
"/accounts/grant_staff_access/{}/".format(self.user.id))
32+
user = get_object_or_404(User, pk=self.user.id)
33+
self.assertEqual(user.is_staff, True)
34+
self.assertRedirects(response, "/accounts/profile/")
35+
36+
37+
class TestAccountsViewsNotLoggedIn(TestCase):
38+
def test_get_registration_page(self):
39+
page = self.client.get("/accounts/register/")
40+
self.assertEqual(page.status_code, 200)
41+
self.assertTemplateUsed(page, "registration.html")
42+
43+
def test_get_login_page(self):
44+
page = self.client.get("/accounts/login/")
45+
self.assertEqual(page.status_code, 200)
46+
self.assertTemplateUsed(page, "login.html")

checkout/test_forms.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@
22
from .forms import MakePaymentForm, OrderForm
33

44

5-
# class TestMakePaymentForm(TestCase):
6-
# def test_correct_message_for_missing_credit_card_number(self):
7-
# form = MakePaymentForm({'credit_card_number': ''})
8-
# self.assertFalse(form.is_valid)
9-
10-
115
class TestOrderForm(TestCase):
126
def test_correct_message_for_missing_full_name(self):
137
form = OrderForm({'full_name': ''})
@@ -20,8 +14,3 @@ def test_correct_message_for_missing_street_address1(self):
2014
self.assertEqual(form.errors['street_address1'], [
2115
u'This field is required.'])
2216
self.assertFalse(form.is_valid())
23-
24-
# def test_no_field_error_message_if_missing_street_address2(self):
25-
# form = OrderForm({'street_address2': ''})
26-
# self.assertFalse(form.errors['street_address2'])
27-
# self.assertFalse(form.is_valid())

tickets/test_forms.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from django.test import TestCase
2+
from .forms import AddTicketForm, EditTicketForm, AddCommentForm
3+
4+
5+
class TestAddTicketForm(TestCase):
6+
def test_cannot_create_a_ticket_with_just_ticket_type_equals_bug(self):
7+
form = AddTicketForm({'ticket_type': 'Bug'})
8+
self.assertFalse(form.is_valid())
9+
10+
def test_cannot_create_a_ticket_with_other_ticket_type(self):
11+
form = AddTicketForm({'ticket_type': 'Other'})
12+
self.assertFalse(form.is_valid())
13+
self.assertEqual(form.errors['ticket_type'],
14+
[u'Select a valid choice. Other is not one of the available choices.'])
15+
16+
def test_correct_message_for_missing_ticket_type(self):
17+
form = AddTicketForm({'ticket_type': ''})
18+
self.assertFalse(form.is_valid())
19+
self.assertEqual(form.errors['ticket_type'], [
20+
u'This field is required.'])
21+
22+
def test_correct_message_for_missing_priority(self):
23+
form = AddTicketForm({'priority': ''})
24+
self.assertFalse(form.is_valid())
25+
self.assertEqual(form.errors['priority'], [
26+
u'This field is required.'])
27+
28+
def test_correct_message_for_missing_status(self):
29+
form = AddTicketForm({'status': ''})
30+
self.assertFalse(form.is_valid())
31+
self.assertEqual(form.errors['status'], [
32+
u'This field is required.'])
33+
34+
def test_correct_error_message_for_missing_summary(self):
35+
form = AddTicketForm({'summary': ''})
36+
self.assertFalse(form.is_valid())
37+
self.assertEqual(form.errors['summary'], [
38+
u'This field is required.'])
39+
40+
def test_correct_error_message_for_missing_description(self):
41+
form = AddTicketForm({'description': ''})
42+
self.assertFalse(form.is_valid())
43+
self.assertEqual(form.errors['description'], [
44+
u'This field is required.'])

tickets/test_models.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from django.test import TestCase, Client
2+
from accounts.models import User
3+
from .models import Ticket, Comment
4+
5+
6+
class TestViews(TestCase):
7+
def setUp(self):
8+
# Every test needs access to this logged in user
9+
self.user = User.objects.create_user(
10+
username='testuser', password='12345')
11+
login = self.client.login(username='testuser', password='12345')
12+
13+
def test_create_a_ticket_with_summary_and_description(self):
14+
# Create Ticket (TicketID = 1)
15+
ticket = Ticket(ticket_type="Bug",
16+
summary='Test Summary',
17+
description='Test Description',
18+
status='New',
19+
priority='Low',
20+
submitted_by=self.user,
21+
assigned_to=self.user
22+
)
23+
ticket.save()
24+
self.assertEqual(ticket.summary, 'Test Summary')
25+
self.assertEqual(ticket.description, 'Test Description')
26+
27+
def test_add_a_comment(self):
28+
# Create Ticket (TicketID = 1)
29+
ticket = Ticket(ticket_type="Bug",
30+
summary='Test Summary',
31+
description='Test Description',
32+
status='New',
33+
priority='Low',
34+
submitted_by=self.user,
35+
assigned_to=self.user
36+
)
37+
ticket.save()
38+
comment = Comment(ticket=ticket, user=self.user,
39+
comment_body='Test Comment')
40+
comment.save()
41+
comment = Comment.objects.get(pk=1)
42+
self.assertEqual(str(comment), comment.comment_body)

tickets/test_views.py

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
from django.shortcuts import get_object_or_404
2+
from django.test import TestCase
3+
from accounts.models import User, Profile
4+
from .models import Ticket
5+
6+
7+
class TestViews(TestCase):
8+
def setUp(self):
9+
# Every test needs access to this logged in user
10+
self.user = User.objects.create_user(
11+
username='testuser', password='12345')
12+
login = self.client.login(username='testuser', password='12345')
13+
14+
# Create Ticket (TicketID = 1)
15+
Ticket.objects.create(ticket_type="Bug",
16+
summary='Test Summary',
17+
description='Test Description',
18+
status='New',
19+
priority='Low',
20+
submitted_by=self.user,
21+
assigned_to=self.user
22+
)
23+
24+
def test_get_index_page(self):
25+
page = self.client.get("/")
26+
self.assertEqual(page.status_code, 200)
27+
self.assertTemplateUsed(page, "index.html")
28+
29+
def test_get_view_tickets_page(self):
30+
page = self.client.get("/tickets/")
31+
self.assertEqual(page.status_code, 200)
32+
self.assertTemplateUsed(page, "tickets.html")
33+
34+
def test_add_ticket_page(self):
35+
page = self.client.get("/tickets/add_ticket/")
36+
self.assertEqual(page.status_code, 200)
37+
self.assertTemplateUsed(page, "add_ticket.html")
38+
39+
def test_dashboard_page(self):
40+
page = self.client.get("/tickets/dashboard/")
41+
self.assertEqual(page.status_code, 200)
42+
self.assertTemplateUsed(page, "dashboard.html")
43+
44+
def test_kanban_page_as_pro_user(self):
45+
# Set user to Pro User
46+
self.user.profile.is_pro_user = True
47+
self.user.profile.save()
48+
page = self.client.get("/tickets/kanban/")
49+
self.assertEqual(page.status_code, 200)
50+
self.assertTemplateUsed(page, "kanban.html")
51+
52+
def test_kanban_page_as_basic_user(self):
53+
# Set user to Basic
54+
self.user.profile.is_pro_user = False
55+
self.user.profile.save()
56+
page = self.client.get("/tickets/kanban/")
57+
# Redirects to Checkout page
58+
self.assertRedirects(page, "/checkout/")
59+
60+
def test_edit_ticket_page(self):
61+
page = self.client.get("/tickets/edit_ticket/1/")
62+
self.assertEqual(page.status_code, 200)
63+
self.assertTemplateUsed(page, "edit_ticket.html")
64+
65+
def test_view_ticket_page(self):
66+
page = self.client.get("/tickets/1/")
67+
self.assertEqual(page.status_code, 200)
68+
self.assertTemplateUsed(page, "view_ticket.html")
69+
70+
def test_get_view_page_for_ticket_that_does_not_exist(self):
71+
page = self.client.get("tickets/1000/")
72+
self.assertEqual(page.status_code, 404)
73+
74+
def test_get_edit_page_for_ticket_that_does_not_exist(self):
75+
page = self.client.get("tickets/edit/1000/")
76+
self.assertEqual(page.status_code, 404)
77+
78+
def test_upvote_for_ticket_that_does_not_exist(self):
79+
page = self.client.get("tickets/upvote/1000/")
80+
self.assertEqual(page.status_code, 404)
81+
82+
def test_change_status_for_ticket_that_does_not_exist(self):
83+
page = self.client.get("tickets/change_status/1000/Cancelled")
84+
self.assertEqual(page.status_code, 404)
85+
86+
# POSTs
87+
def test_post_create_a_ticket(self):
88+
new_ticket = {"ticket_type": "Bug",
89+
"summary": 'Test Summary 2',
90+
"description": 'Test Description',
91+
"status": 'New',
92+
"priority": 'Low',
93+
"submitted_by": self.user,
94+
"assigned_to": self.user
95+
}
96+
response = self.client.post("/tickets/add_ticket/", new_ticket)
97+
ticket = get_object_or_404(Ticket, pk=2)
98+
self.assertEqual(ticket.summary, "Test Summary 2")
99+
100+
def test_post_upvote_a_ticket(self):
101+
response = self.client.post(
102+
"/tickets/upvote/1/")
103+
ticket = get_object_or_404(Ticket, pk=1)
104+
self.assertEqual(ticket.upvotes, 1)
105+
106+
def test_change_ticket_status(self):
107+
response = self.client.post(
108+
"/tickets/change_status/1/Resolved/")
109+
ticket = get_object_or_404(Ticket, pk=1)
110+
self.assertEqual(ticket.status, "Resolved")

0 commit comments

Comments
 (0)