From 03176bde2547882da4e9f42b6710e357de2fdbe9 Mon Sep 17 00:00:00 2001
From: KronosDP <darrel.danadyaksa19@gmail.com>
Date: Wed, 26 Feb 2025 13:52:11 +0700
Subject: [PATCH] [RED] Add unit tests for User model to validate constructors
 and field defaults

---
 .../authentication/model/UserTest.java        | 82 +++++++++++++++++++
 1 file changed, 82 insertions(+)
 create mode 100644 src/test/java/com/safetypin/authentication/model/UserTest.java

diff --git a/src/test/java/com/safetypin/authentication/model/UserTest.java b/src/test/java/com/safetypin/authentication/model/UserTest.java
new file mode 100644
index 0000000..2001bd2
--- /dev/null
+++ b/src/test/java/com/safetypin/authentication/model/UserTest.java
@@ -0,0 +1,82 @@
+package com.safetypin.authentication.model;
+
+import org.junit.jupiter.api.Test;
+import java.time.LocalDate;
+import static org.junit.jupiter.api.Assertions.*;
+
+public class UserTest {
+
+    @Test
+    public void testDefaultConstructorDefaults() {
+        User user = new User();
+        // Verify that default constructor sets all fields to their default values
+        assertNull(user.getId(), "Default id should be null");
+        assertNull(user.getEmail(), "Default email should be null");
+        assertNull(user.getPassword(), "Default password should be null");
+        assertNull(user.getName(), "Default name should be null");
+        assertFalse(user.isVerified(), "Default isVerified should be false");
+        assertNull(user.getRole(), "Default role should be null");
+        assertNull(user.getBirthdate(), "Default birthdate should be null");
+        assertNull(user.getProvider(), "Default provider should be null");
+        assertNull(user.getSocialId(), "Default socialId should be null");
+    }
+
+    @Test
+    public void testSettersAndGetters() {
+        User user = new User();
+        Long id = 123L;
+        String email = "test@example.com";
+        String password = "secret";
+        String name = "Test User";
+        boolean verified = true;
+        String role = "ADMIN";
+        LocalDate birthdate = LocalDate.of(2000, 1, 1);
+        String provider = "GOOGLE";
+        String socialId = "social123";
+
+        user.setId(id);
+        user.setEmail(email);
+        user.setPassword(password);
+        user.setName(name);
+        user.setVerified(verified);
+        user.setRole(role);
+        user.setBirthdate(birthdate);
+        user.setProvider(provider);
+        user.setSocialId(socialId);
+
+        assertEquals(id, user.getId());
+        assertEquals(email, user.getEmail());
+        assertEquals(password, user.getPassword());
+        assertEquals(name, user.getName());
+        assertTrue(user.isVerified());
+        assertEquals(role, user.getRole());
+        assertEquals(birthdate, user.getBirthdate());
+        assertEquals(provider, user.getProvider());
+        assertEquals(socialId, user.getSocialId());
+    }
+
+    @Test
+    public void testParameterizedConstructor() {
+        String email = "test2@example.com";
+        String password = "password123";
+        String name = "Another User";
+        boolean verified = false;
+        String role = "USER";
+        LocalDate birthdate = LocalDate.of(1995, 5, 15);
+        String provider = "EMAIL";
+        String socialId = null;
+
+        User user = new User(email, password, name, verified, role, birthdate, provider, socialId);
+
+        // id remains null until set (by the persistence layer)
+        assertNull(user.getId(), "Id should be null when not set");
+        assertEquals(email, user.getEmail());
+        assertEquals(password, user.getPassword());
+        assertEquals(name, user.getName());
+        assertEquals(verified, user.isVerified());
+        assertEquals(role, user.getRole());
+        assertEquals(birthdate, user.getBirthdate());
+        assertEquals(provider, user.getProvider());
+        assertNull(user.getSocialId(), "SocialId should be null");
+    }
+}
-- 
GitLab