<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<head>
<title>Employee Management</title>
</head>
<body>
<h1>Employee Management</h1>
<h2>Employee List</h2>
<ul wicket:id="employeeList">
<li>
<span wicket:id="name"></span> -
<span wicket:id="department"></span> -
<span wicket:id="salary"></span>
</li>
</ul>
<h2>Add/Update Employee</h2>
<form wicket:id="employeeForm">
<label>Name: <input type="text" wicket:id="name"/></label><br/>
<label>Department: <input type="text" wicket:id="department"/></label><br/>
<label>Salary: <input type="text" wicket:id="salary"/></label><br/>
<button type="submit">Submit</button>
</form>
</body>
</html>
|
package com.example.page;
import com.example.model.Employee;
import com.example.service.EmployeeService;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import java.util.List;
public class EmployeePage extends WebPage {
@SpringBean
private final EmployeeService employeeService;
private final Employee employee = new Employee(); // Backing object for the form
private List<Employee> employees;
public EmployeePage(EmployeeService employeeService) {
this.employeeService = employeeService;
this.employees = employeeService.getAllEmployees();
// Add Employee List
add(new ListView<Employee>("employeeList", employees) {
@Override
protected void populateItem(ListItem<Employee> item) {
Employee employee = item.getModelObject();
item.add(new Label("name", Model.of(employee.getName())));
item.add(new Label("department", Model.of(employee.getDepartment())));
item.add(new Label("salary", Model.of(employee.getSalary())));
}
});
// Add Employee Form
Form<Employee> form = new Form<Employee>("employeeForm") {
@Override
protected void onSubmit() {
super.onSubmit();
employeeService.saveEmployee(employee); // Save employee to the database
employees = employeeService.getAllEmployees(); // Refresh the list
setResponsePage(new EmployeePage(employeeService)); // Reload the page
}
};
form.add(new TextField<>("name", new PropertyModel<>(employee, "name")));
form.add(new TextField<>("department", new PropertyModel<>(employee, "department")));
form.add(new TextField<>("salary", new PropertyModel<>(employee, "salary")));
add(form);
}
}
|
package com.example.test.page;
import com.example.model.Employee;
import com.example.page.EmployeePage;
import com.example.service.EmployeeService;
import com.example.test.util.EmployeeObjectMother;
import org.apache.wicket.util.tester.FormTester;
import org.apache.wicket.util.tester.WicketTester;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
public class EmployeePageTest {
private WicketTester tester;
private EmployeeService mockEmployeeService;
@Before
public void setup() {
mockEmployeeService = EasyMock.createMock(EmployeeService.class);
tester = new WicketTester();
}
@Test
public void testEmployeePageRendering() {
List<Employee> mockEmployees = EmployeeObjectMother.createEmployeeList();
EasyMock.expect(mockEmployeeService.getAllEmployees()).andReturn(mockEmployees);
EasyMock.replay(mockEmployeeService);
tester.startPage(() -> new EmployeePage(mockEmployeeService));
tester.assertRenderedPage(EmployeePage.class);
tester.assertLabel("employeeList:0:name", "John Doe");
EasyMock.verify(mockEmployeeService);
}
@Test
public void testEmployeeFormSubmission() {
List<Employee> mockEmployees = EmployeeObjectMother.createEmployeeList();
EasyMock.expect(mockEmployeeService.getAllEmployees()).andReturn(mockEmployees).anyTimes();
mockEmployeeService.saveEmployee(EasyMock.anyObject(Employee.class));
EasyMock.expectLastCall();
EasyMock.replay(mockEmployeeService);
tester.startPage(() -> new EmployeePage(mockEmployeeService));
FormTester formTester = tester.newFormTester("employeeForm");
formTester.setValue("name", "Alice Walker");
formTester.setValue("department", "HR");
formTester.setValue("salary", "55000");
formTester.submit();
tester.assertRenderedPage(EmployeePage.class); // Ensure page reloads
EasyMock.verify(mockEmployeeService);
}
}
|
Comments...
No Comments Yet...