-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathF09_SupplierTest.java
More file actions
155 lines (132 loc) · 6.37 KB
/
F09_SupplierTest.java
File metadata and controls
155 lines (132 loc) · 6.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package e2e;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import java.util.UUID;
import static org.junit.Assert.*;
/**
* F09 — Supplier Management (Admin) E2E Tests
*
* Covers: Supplier list, create, search, view detail, edit, delete.
* F09 was already fully implemented — these tests verify it works correctly.
*/
public class F09_SupplierTest extends BaseE2ETest {
@Before
public void setUp() {
logout();
loginAsStaff();
}
@After
public void tearDown() {
logout();
}
// ── List page ─────────────────────────────────────────────────────────────
/** TC-09-1: Supplier list page renders */
@Test
public void testSupplierListRenders() {
navigateTo("/admin/supplier/");
assertFalse("Supplier list should not 403", pageSource().contains("403"));
assertFalse("Supplier list should not 404", pageSource().contains("HTTP ERROR 404"));
assertFalse("Supplier list should not 500", pageSource().contains("HTTP ERROR 500"));
assertTrue("Supplier list page should mention 'Supplier'",
pageSource().contains("Supplier") || pageSource().contains("supplier"));
}
/** TC-09-2: Supplier list shows table */
@Test
public void testSupplierListShowsTable() {
navigateTo("/admin/supplier/");
assertTrue("Supplier list should have a table or listing",
isElementPresent(By.tagName("table")) || isElementPresent(By.tagName("tbody")) ||
pageSource().contains("Name") || pageSource().contains("Email") ||
pageSource().contains("Contact"));
}
/** TC-09-3: Supplier list has search form */
@Test
public void testSupplierListHasSearchForm() {
navigateTo("/admin/supplier/");
boolean hasSearch = isElementPresent(By.tagName("form")) ||
isElementPresent(By.cssSelector("input[name='name']")) ||
isElementPresent(By.cssSelector("input[name='search']")) ||
isElementPresent(By.cssSelector("input[type='search']"));
assertTrue("Supplier list should have a search form", hasSearch);
}
// ── Create supplier ───────────────────────────────────────────────────────
/** TC-09-4: Add supplier form renders */
@Test
public void testAddSupplierFormRenders() {
navigateTo("/admin/supplier/form");
assertFalse("Supplier form should not 404",
pageSource().contains("HTTP ERROR 404") && !currentUrl().contains("login"));
assertFalse("Supplier form should not 500", pageSource().contains("HTTP ERROR 500"));
assertTrue("Supplier form should have a form element",
isElementPresent(By.tagName("form")));
}
/** TC-09-5: Create a new supplier */
@Test
public void testCreateSupplier() {
navigateTo("/admin/supplier/form");
String uniqueName = "E2E Supplier " + UUID.randomUUID().toString().substring(0, 6);
if (isElementPresent(By.name("name"))) fillField("name", uniqueName);
if (isElementPresent(By.name("contactEmail"))) {
fillField("contactEmail", "e2e-supplier@test.com");
} else if (isElementPresent(By.name("email"))) {
fillField("email", "e2e-supplier@test.com");
}
if (isElementPresent(By.name("contactPhone"))) {
fillField("contactPhone", "+61400000095");
} else if (isElementPresent(By.name("phone"))) {
fillField("phone", "+61400000095");
}
if (isElementPresent(By.name("address"))) {
fillField("address", "1 Test St, Sydney NSW");
}
if (isElementPresent(By.cssSelector("[type='submit']"))) {
clickSubmit();
assertFalse("Create supplier should not 500", pageSource().contains("HTTP ERROR 500"));
}
}
// ── Search ────────────────────────────────────────────────────────────────
/** TC-09-6: Search supplier by name */
@Test
public void testSearchSupplierByName() {
navigateTo("/admin/supplier/?name=Tech");
assertFalse("Supplier name search should not 500", pageSource().contains("HTTP ERROR 500"));
}
// ── View / Edit ───────────────────────────────────────────────────────────
/** TC-09-7: Supplier view page exists */
@Test
public void testSupplierViewPageExists() {
navigateTo("/admin/supplier/view/1");
assertFalse("Supplier view should not 500", pageSource().contains("HTTP ERROR 500"));
}
/** TC-09-8: Supplier edit page exists */
@Test
public void testSupplierEditPageExists() {
navigateTo("/admin/supplier/edit/1");
assertFalse("Supplier edit should not 500", pageSource().contains("HTTP ERROR 500"));
}
// ── Access control ────────────────────────────────────────────────────────
/** TC-09-9: Customer role cannot access supplier management */
@Test
public void testCustomerCannotAccessSupplierManagement() {
logout();
loginAsCustomer();
navigateTo("/admin/supplier/");
boolean blocked = currentUrl().contains("login") ||
pageSource().contains("403") ||
pageSource().contains("Unauthorized") ||
!currentUrl().contains("supplier");
assertTrue("Customer role should NOT access supplier admin", blocked);
}
/** TC-09-10: Unauthenticated access is blocked */
@Test
public void testUnauthenticatedCannotAccessSupplierManagement() {
logout();
navigateTo("/admin/supplier/");
boolean blocked = currentUrl().contains("login") ||
pageSource().contains("login") ||
pageSource().contains("401");
assertTrue("Unauthenticated access to /admin/supplier/ should be blocked", blocked);
}
}