package com.example.model; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; /** * Unit tests for CustomerRegistrationRequest model class */ @DisplayName("CustomerRegistrationRequest Model Tests") class CustomerRegistrationRequestTest { @Test @DisplayName("Should create CustomerRegistrationRequest with default constructor") void testDefaultConstructor() { CustomerRegistrationRequest request = new CustomerRegistrationRequest(); assertNotNull(request); assertNull(request.getCustomerName()); assertFalse(request.isBlacklisted()); } @Test @DisplayName("Should create CustomerRegistrationRequest with parameterized constructor") void testParameterizedConstructor() { CustomerRegistrationRequest request = new CustomerRegistrationRequest("John Doe", true); assertEquals("John Doe", request.getCustomerName()); assertTrue(request.isBlacklisted()); } @Test @DisplayName("Should set and get customerName") void testSetAndGetCustomerName() { CustomerRegistrationRequest request = new CustomerRegistrationRequest(); request.setCustomerName("Jane Smith"); assertEquals("Jane Smith", request.getCustomerName()); } @Test @DisplayName("Should set and get blacklisted status") void testSetAndGetBlacklisted() { CustomerRegistrationRequest request = new CustomerRegistrationRequest(); request.setBlacklisted(true); assertTrue(request.isBlacklisted()); } @Test @DisplayName("Should handle null customerName") void testNullCustomerName() { CustomerRegistrationRequest request = new CustomerRegistrationRequest(null, false); assertNull(request.getCustomerName()); assertFalse(request.isBlacklisted()); } @Test @DisplayName("Should handle empty string customerName") void testEmptyCustomerName() { CustomerRegistrationRequest request = new CustomerRegistrationRequest("", true); assertEquals("", request.getCustomerName()); assertTrue(request.isBlacklisted()); } @Test @DisplayName("Should create non-blacklisted customer by default") void testNonBlacklistedByDefault() { CustomerRegistrationRequest request = new CustomerRegistrationRequest("Test User", false); assertFalse(request.isBlacklisted()); } @Test @DisplayName("Should create blacklisted customer") void testBlacklistedCustomer() { CustomerRegistrationRequest request = new CustomerRegistrationRequest("Blacklisted User", true); assertTrue(request.isBlacklisted()); } @Test @DisplayName("Should generate correct toString output") void testToString() { CustomerRegistrationRequest request = new CustomerRegistrationRequest("Alice Brown", true); String result = request.toString(); assertNotNull(result); assertTrue(result.contains("CustomerRegistrationRequest{")); assertTrue(result.contains("customerName='Alice Brown'")); assertTrue(result.contains("blacklisted=true")); } @Test @DisplayName("Should generate toString with null customerName") void testToStringWithNull() { CustomerRegistrationRequest request = new CustomerRegistrationRequest(null, false); String result = request.toString(); assertNotNull(result); assertTrue(result.contains("customerName='null'") || result.contains("customerName=null")); assertTrue(result.contains("blacklisted=false")); } @Test @DisplayName("Should handle special characters in customerName") void testSpecialCharactersInCustomerName() { String specialName = "José O'Reilly-Smith"; CustomerRegistrationRequest request = new CustomerRegistrationRequest(specialName, false); assertEquals(specialName, request.getCustomerName()); } @Test @DisplayName("Should update values multiple times") void testMultipleUpdates() { CustomerRegistrationRequest request = new CustomerRegistrationRequest("Initial Name", false); request.setCustomerName("Updated Name"); request.setBlacklisted(true); assertEquals("Updated Name", request.getCustomerName()); assertTrue(request.isBlacklisted()); request.setCustomerName("Final Name"); request.setBlacklisted(false); assertEquals("Final Name", request.getCustomerName()); assertFalse(request.isBlacklisted()); } @Test @DisplayName("Should toggle blacklisted status") void testToggleBlacklistedStatus() { CustomerRegistrationRequest request = new CustomerRegistrationRequest("Toggle User", false); assertFalse(request.isBlacklisted()); request.setBlacklisted(true); assertTrue(request.isBlacklisted()); request.setBlacklisted(false); assertFalse(request.isBlacklisted()); } @Test @DisplayName("Should handle very long customerName") void testLongCustomerName() { StringBuilder builder = new StringBuilder(); for (int i = 0; i < 1000; i++) { builder.append("A"); } String longName = builder.toString(); CustomerRegistrationRequest request = new CustomerRegistrationRequest(longName, true); assertEquals(longName, request.getCustomerName()); assertEquals(1000, request.getCustomerName().length()); } @Test @DisplayName("Should handle whitespace in customerName") void testWhitespaceInCustomerName() { CustomerRegistrationRequest request1 = new CustomerRegistrationRequest(" ", false); assertEquals(" ", request1.getCustomerName()); CustomerRegistrationRequest request2 = new CustomerRegistrationRequest("John Doe", false); assertEquals("John Doe", request2.getCustomerName()); } }