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