Skip to content

Commit 2303086

Browse files
committed
R3 test cases
1 parent 3d86734 commit 2303086

File tree

2 files changed

+208
-1
lines changed

2 files changed

+208
-1
lines changed

qa327/frontend.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,14 @@ def is_ticket_date_valid(ticket_date):
258258
:param ticket_date: the date of the ticket to be tested
259259
:returns: True if the ticket date satisfies all requirements
260260
"""
261+
try:
262+
if isinstance(ticket_date, str):
263+
datetime.datetime.strptime(ticket_date, "%Y%m%d")
264+
except ValueError:
265+
return False
266+
267+
if isinstance(ticket_date, str):
268+
return datetime.datetime.strptime(ticket_date, "%Y%m%d") > datetime.datetime.now()
261269
return ticket_date > datetime.datetime.now()
262270

263271
def does_user_have_sufficient_balance(user_balance, ticket_price):
Lines changed: 200 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,200 @@
1-
# All tests for R4 - sell go here
1+
# All tests for R4 - sell go here
2+
3+
import pytest
4+
from seleniumbase import BaseCase
5+
from datetime import datetime, timedelta
6+
7+
from qa327_test.conftest import base_url
8+
from unittest.mock import patch
9+
from qa327.models import db, User, Ticket
10+
from werkzeug.security import generate_password_hash, check_password_hash
11+
12+
"""
13+
This file contains all unit tests for R4 Sell
14+
15+
Frontend
16+
17+
"""
18+
19+
# Mock a sample ticket
20+
test_ticket = Ticket(
21+
id=5,
22+
user=10,
23+
name="Test Ticket",
24+
price=5,
25+
quantity=1
26+
)
27+
28+
# Mock tickets
29+
test_tickets = [
30+
{
31+
'id': 3,
32+
'user': 10,
33+
'name': 'Test Ticket 1',
34+
'price': 5,
35+
'quantity': 2
36+
},
37+
{
38+
'id': 4,
39+
'user': 10,
40+
'name': 'Test Ticket 2',
41+
'price': 10,
42+
'quantity': 1
43+
},
44+
]
45+
46+
# Mock Users
47+
test_user = User(
48+
email='test_frontend@test.com',
49+
name='test_frontend',
50+
password=generate_password_hash('test_Frontend0!')
51+
)
52+
53+
nextdayobj = datetime.now() + timedelta(days=1)
54+
nextday = nextdayobj.strftime('%Y%m%d')
55+
56+
class FrontEndSellTest(BaseCase):
57+
'''
58+
@patch('qa327.backend.get_user', return_value=test_user)
59+
60+
self.open(base_url + '/logout')
61+
self.open(base_url + '/login')
62+
self.type("#email", "test_frontend@test.com")
63+
self.type("#password", "test_Frontend0!")
64+
self.click('input[type="submit"]')
65+
self.open(base_url)
66+
'''
67+
@patch('qa327.backend.get_user', return_value=test_user)
68+
@patch('qa327.backend.sell_ticket', return_value=None)
69+
def test_ticket_works(self, *_):
70+
# log in user
71+
self.open(base_url + '/logout')
72+
self.open(base_url + '/login')
73+
self.type("#email", "test_frontend@test.com")
74+
self.type("#password", "test_Frontend0!")
75+
self.click('input[type="submit"]')
76+
self.open(base_url)
77+
78+
# create a ticket
79+
self.type("#sell_name", "testticket")
80+
self.type("#sell_quantity", "5")
81+
self.type("#sell_price", "15")
82+
self.type("#sell_exp_date", nextday)
83+
self.click('#sell_submit')
84+
self.assert_element("#message")
85+
self.assert_text("Ticket created successfully.", "#message")
86+
87+
88+
@patch('qa327.backend.get_user', return_value=test_user)
89+
def test_alphanum_nospaces(self, *_):
90+
# log in user
91+
self.open(base_url + '/logout')
92+
self.open(base_url + '/login')
93+
self.type("#email", "test_frontend@test.com")
94+
self.type("#password", "test_Frontend0!")
95+
self.click('input[type="submit"]')
96+
self.open(base_url)
97+
98+
# test spaces in name
99+
self.type("#sell_name", " test_ticket_name ")
100+
self.type("#sell_quantity", "5")
101+
self.type("#sell_price", "15")
102+
self.type("#sell_exp_date", nextday)
103+
self.click('#sell_submit')
104+
self.assert_element("#message")
105+
self.assert_text("Ticket name is invalid.", "#message")
106+
107+
# test alphanum name
108+
self.type("#sell_name", "te^%&^**%st_ticket_name")
109+
self.type("#sell_quantity", "5")
110+
self.type("#sell_price", "15")
111+
self.type("#sell_exp_date", nextday)
112+
self.click('#sell_submit')
113+
self.assert_element("#message")
114+
self.assert_text("Ticket name is invalid.", "#message")
115+
116+
@patch('qa327.backend.get_user', return_value=test_user)
117+
def test_name_charlength(self, *_):
118+
# log in user
119+
self.open(base_url + '/logout')
120+
self.open(base_url + '/login')
121+
self.type("#email", "test_frontend@test.com")
122+
self.type("#password", "test_Frontend0!")
123+
self.click('input[type="submit"]')
124+
self.open(base_url)
125+
126+
# test length of name too short
127+
self.type("#sell_name", "name")
128+
self.type("#sell_quantity", "5")
129+
self.type("#sell_price", "15")
130+
self.type("#sell_exp_date", nextday)
131+
self.click('#sell_submit')
132+
self.assert_element("#message")
133+
self.assert_text("Ticket name is invalid.", "#message")
134+
135+
# test length of name too long
136+
self.type("#sell_name", "super_duper_unnecessarily_long_ticket_name4692387346912673498712648761984376218463")
137+
self.type("#sell_quantity", "5")
138+
self.type("#sell_price", "15")
139+
self.type("#sell_exp_date", nextday)
140+
self.click('#sell_submit')
141+
self.assert_element("#message")
142+
self.assert_text("Ticket name is invalid.", "#message")
143+
144+
@patch('qa327.backend.get_user', return_value=test_user)
145+
def test_ticket_quantity(self, *_):
146+
# log in user
147+
self.open(base_url + '/logout')
148+
self.open(base_url + '/login')
149+
self.type("#email", "test_frontend@test.com")
150+
self.type("#password", "test_Frontend0!")
151+
self.click('input[type="submit"]')
152+
self.open(base_url)
153+
154+
# test quantity too many
155+
self.type("#sell_name", "name")
156+
self.type("#sell_quantity", "125")
157+
self.type("#sell_price", "15")
158+
self.type("#sell_exp_date", nextday)
159+
self.click('#sell_submit')
160+
self.assert_element("#message")
161+
self.assert_text("Ticket quantity must be between 0 and 100.", "#message")
162+
163+
# test quantity too little
164+
self.type("#sell_name", "name")
165+
self.type("#sell_quantity", "0")
166+
self.type("#sell_price", "15")
167+
self.type("#sell_exp_date", nextday)
168+
self.click('#sell_submit')
169+
self.assert_element("#message")
170+
self.assert_text("Ticket quantity must be between 0 and 100.", "#message")
171+
172+
@patch('qa327.backend.get_user', return_value=test_user)
173+
def test_ticket_dateformat(self, *_):
174+
# log in user
175+
self.open(base_url + '/logout')
176+
self.open(base_url + '/login')
177+
self.type("#email", "test_frontend@test.com")
178+
self.type("#password", "test_Frontend0!")
179+
self.click('input[type="submit"]')
180+
self.open(base_url)
181+
182+
# test quantity too many
183+
self.type("#sell_name", "name")
184+
self.type("#sell_quantity", "5")
185+
self.type("#sell_price", "15")
186+
self.type("#sell_exp_date", "1")
187+
self.click('#sell_submit')
188+
self.assert_element("#message")
189+
self.assert_text("Ticket date is invalid.", "#message")
190+
191+
192+
193+
194+
195+
196+
197+
198+
199+
200+

0 commit comments

Comments
 (0)