Add JUnit tests for model classes: RecordEntityTest, ZoneEntityTest, BatchEntryTest, RecordTypeTest, and update PagingRequestTest.

This commit is contained in:
2026-03-10 09:58:58 +01:00
parent aaae19f783
commit 8d2fc74d04
5 changed files with 222 additions and 2 deletions
@@ -0,0 +1,47 @@
package codes.thischwa.cf.model;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
public class BatchEntryTest {
@Test
void testBatchEntry() {
BatchEntry entry = new BatchEntry();
assertEquals("", entry.getId());
List<RecordEntity> patches = new ArrayList<>();
List<RecordEntity> posts = new ArrayList<>();
List<RecordEntity> puts = new ArrayList<>();
List<RecordEntity> deletes = new ArrayList<>();
entry.setPatches(patches);
entry.setPosts(posts);
entry.setPuts(puts);
entry.setDeletes(deletes);
assertSame(patches, entry.getPatches());
assertSame(posts, entry.getPosts());
assertSame(puts, entry.getPuts());
assertSame(deletes, entry.getDeletes());
}
@Test
void testLombokMethods() {
BatchEntry entry1 = new BatchEntry();
BatchEntry entry2 = new BatchEntry();
assertEquals(entry1, entry2);
assertEquals(entry1.hashCode(), entry2.hashCode());
List<RecordEntity> patches = List.of(new RecordEntity());
entry1.setPatches(patches);
assertNotEquals(entry1, entry2);
entry2.setPatches(patches);
assertEquals(entry1, entry2);
assertTrue(entry1.toString().contains("patches="));
}
}
@@ -7,15 +7,37 @@ import static org.junit.jupiter.api.Assertions.*;
public class PagingRequestTest { public class PagingRequestTest {
@Test @Test
public void testBuildPath() { void testBuildPath() {
String result = PagingRequest.defaultPaging().addQueryString("/zones"); String result = PagingRequest.defaultPaging().addQueryString("/zones");
assertEquals("/zones?page=1&perPage=5000000", result); assertEquals("/zones?page=1&perPage=5000000", result);
} }
@Test @Test
public void testBuildPathAdditional() { void testBuildPathAdditional() {
String result = new PagingRequest( 10, 100).addQueryString("/zones?foo=bar"); String result = new PagingRequest( 10, 100).addQueryString("/zones?foo=bar");
assertEquals("/zones?foo=bar&page=10&perPage=100", result); assertEquals("/zones?foo=bar&page=10&perPage=100", result);
} }
@Test
void testGetPagingParams() {
PagingRequest request = PagingRequest.of(2, 50);
java.util.Map<String, String> params = request.getPagingParams();
assertEquals("2", params.get("page"));
assertEquals("50", params.get("perPage"));
}
@Test
void testLombokMethods() {
PagingRequest req1 = PagingRequest.of(1, 10);
PagingRequest req2 = PagingRequest.of(1, 10);
assertEquals(req1, req2);
assertEquals(req1.hashCode(), req2.hashCode());
assertTrue(req1.toString().contains("page=1"));
req1.setPage(5);
assertEquals(5, req1.getPage());
req1.setPerPage(20);
assertEquals(20, req1.getPerPage());
}
} }
@@ -0,0 +1,70 @@
package codes.thischwa.cf.model;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class RecordEntityTest {
@Test
void testBuildWithAttributes() {
RecordEntity rec = RecordEntity.build("example.com", RecordType.A, 120, "1.2.3.4");
assertEquals("example.com", rec.getName());
assertEquals("A", rec.getType());
assertEquals(120, rec.getTtl());
assertEquals("1.2.3.4", rec.getContent());
}
@Test
void testBuildWithIdAndContent() {
RecordEntity rec = RecordEntity.build("id-123", "1.2.3.4");
assertEquals("id-123", rec.getId());
assertEquals("1.2.3.4", rec.getContent());
}
@Test
void testBuildWithIdAndAttributes() {
RecordEntity rec = RecordEntity.build("id-123", "example.com", "A", 120, "1.2.3.4");
assertEquals("id-123", rec.getId());
assertEquals("example.com", rec.getName());
assertEquals("A", rec.getType());
assertEquals(120, rec.getTtl());
assertEquals("1.2.3.4", rec.getContent());
}
@Test
void testBuildWithInvalidType() {
assertThrows(IllegalArgumentException.class, () ->
RecordEntity.build("id-123", "example.com", "INVALID", 120, "1.2.3.4")
);
}
@Test
void testGetSld() {
RecordEntity rec = new RecordEntity();
assertNull(rec.getSld());
rec.setName("sub.example.com");
assertEquals("sub", rec.getSld());
rec.setName("example.com");
assertEquals("example", rec.getSld());
rec.setName("host");
assertEquals("host", rec.getSld());
rec.setName(".dotstart");
assertEquals(".dotstart", rec.getSld());
}
@Test
void testGetSldWithZoneName() {
RecordEntity rec = new RecordEntity();
rec.setName("sub.example.com");
rec.setZoneName("example.com");
assertEquals("sub", rec.getSld());
rec.setName("my.sub.example.com");
rec.setZoneName("example.com");
assertEquals("my.sub", rec.getSld());
}
}
@@ -0,0 +1,40 @@
package codes.thischwa.cf.model;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class RecordTypeTest {
@Test
void testGetType() {
assertEquals("A", RecordType.A.getType());
assertEquals("AAAA", RecordType.AAAA.getType());
assertEquals("CNAME", RecordType.CNAME.getType());
assertEquals("TXT", RecordType.TXT.getType());
assertEquals("SRV", RecordType.SRV.getType());
assertEquals("LOC", RecordType.LOC.getType());
assertEquals("MX", RecordType.MX.getType());
assertEquals("NS", RecordType.NS.getType());
assertEquals("CAA", RecordType.CAA.getType());
assertEquals("CERT", RecordType.CERT.getType());
assertEquals("DNSKEY", RecordType.DNSKEY.getType());
assertEquals("DS", RecordType.DS.getType());
assertEquals("NAPTR", RecordType.NAPTR.getType());
assertEquals("SMIMEA", RecordType.SMIMEA.getType());
assertEquals("SSHFP", RecordType.SSHFP.getType());
assertEquals("TLSA", RecordType.TLSA.getType());
assertEquals("URI", RecordType.URI.getType());
}
@Test
void testToString() {
assertEquals("A", RecordType.A.toString());
assertEquals("CNAME", RecordType.CNAME.toString());
}
@Test
void testValueOf() {
assertEquals(RecordType.A, RecordType.valueOf("A"));
assertEquals(RecordType.CNAME, RecordType.valueOf("CNAME"));
}
}
@@ -0,0 +1,41 @@
package codes.thischwa.cf.model;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import java.time.LocalDateTime;
import java.util.Set;
import org.junit.jupiter.api.Test;
public class ZoneEntityTest {
@Test
void testZoneEntity() {
ZoneEntity zone = new ZoneEntity();
zone.setId("zone-id");
zone.setName("example.com");
zone.setDevelopmentMode(7200);
Set<String> ns = Set.of("ns1.cloudflare.com", "ns2.cloudflare.com");
zone.setNameServers(ns);
zone.setOriginalNameServers(ns);
LocalDateTime now = LocalDateTime.now();
zone.setCreatedOn(now);
zone.setModifiedOn(now);
zone.setActivatedOn(now);
zone.setStatus("active");
zone.setPaused(false);
zone.setType("full");
assertEquals("zone-id", zone.getId());
assertEquals("example.com", zone.getName());
assertEquals(7200, zone.getDevelopmentMode());
assertEquals(ns, zone.getNameServers());
assertEquals(ns, zone.getOriginalNameServers());
assertEquals(now, zone.getCreatedOn());
assertEquals(now, zone.getModifiedOn());
assertEquals(now, zone.getActivatedOn());
assertEquals("active", zone.getStatus());
assertFalse(zone.getPaused());
assertEquals("full", zone.getType());
}
}