diff --git a/elections-ejb/src/main/java/net/lacnic/elections/domain/Candidate.java b/elections-ejb/src/main/java/net/lacnic/elections/domain/Candidate.java index 92706c5..02bac3a 100644 --- a/elections-ejb/src/main/java/net/lacnic/elections/domain/Candidate.java +++ b/elections-ejb/src/main/java/net/lacnic/elections/domain/Candidate.java @@ -81,7 +81,7 @@ public Candidate() { } public String getBio(String displayName) { - if (displayName.toLowerCase().contains("en") || displayName.toLowerCase().contains("english")) + if (displayName.equalsIgnoreCase("en") || displayName.equalsIgnoreCase("english")) return getBioEnglish(); else if (displayName.toLowerCase().contains("pt") || displayName.toLowerCase().contains("portuguese")) return getBioPortuguese(); @@ -89,7 +89,7 @@ else if (displayName.toLowerCase().contains("pt") || displayName.toLowerCase().c } public String getLink(String displayName) { - if (displayName.toLowerCase().contains("en") || displayName.toLowerCase().contains("english")) + if (displayName.equalsIgnoreCase("en") || displayName.equalsIgnoreCase("english")) return getLinkEnglish(); else if (displayName.toLowerCase().contains("pt") || displayName.toLowerCase().contains("portuguese")) return getLinkPortuguese(); @@ -254,4 +254,4 @@ public void setMail(String mail) { this.mail = mail; } -} +} \ No newline at end of file diff --git a/elections-ejb/src/main/java/net/lacnic/elections/domain/Election.java b/elections-ejb/src/main/java/net/lacnic/elections/domain/Election.java index 0ec5b01..8994008 100644 --- a/elections-ejb/src/main/java/net/lacnic/elections/domain/Election.java +++ b/elections-ejb/src/main/java/net/lacnic/elections/domain/Election.java @@ -209,7 +209,7 @@ private void setTitle(String title) { } public String getDescription(String displayName) { - if (displayName.toLowerCase().contains("en") || displayName.toLowerCase().contains("english")) + if (displayName.equalsIgnoreCase("en") || displayName.equalsIgnoreCase("english")) return getDescriptionEnglish(); else if (displayName.toLowerCase().contains("pt") || displayName.toLowerCase().contains("portuguese")) return getDescriptionPortuguese(); @@ -217,7 +217,7 @@ else if (displayName.toLowerCase().contains("pt") || displayName.toLowerCase().c } public String getTitle(String displayName) { - if (displayName.toLowerCase().contains("en") || displayName.toLowerCase().contains("english")) + if (displayName.equalsIgnoreCase("en") || displayName.equalsIgnoreCase("english")) return getTitleEnglish(); else if (displayName.toLowerCase().contains("pt") || displayName.toLowerCase().contains("portuguese")) return getTitlePortuguese(); @@ -654,4 +654,4 @@ public void setClosedDate(Date closedDate) { this.closedDate = closedDate; } -} +} \ No newline at end of file diff --git a/elections-ejb/src/test/java/net/lacnic/CustomizationDataTest.java b/elections-ejb/src/test/java/net/lacnic/CustomizationDataTest.java deleted file mode 100644 index 6f79f46..0000000 --- a/elections-ejb/src/test/java/net/lacnic/CustomizationDataTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.lacnic; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -public class CustomizationDataTest extends TestCase { - - public CustomizationDataTest(String testName) { - super(testName); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() { - return new TestSuite(CustomizationDataTest.class); - } - - public void testCustomization() { - assertTrue(true); - - } - -} diff --git a/elections-ejb/src/test/java/net/lacnic/elections/data/AditionalDataTest.java b/elections-ejb/src/test/java/net/lacnic/elections/data/AditionalDataTest.java index 18583f8..16d8295 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/data/AditionalDataTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/data/AditionalDataTest.java @@ -7,9 +7,6 @@ import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; -import net.lacnic.elections.data.ElectionReport; -import net.lacnic.elections.data.HealthCheck; -import net.lacnic.elections.data.Participation; public class AditionalDataTest extends TestCase { @@ -63,28 +60,27 @@ public void testParticipationData() { participacion.setElectionStartDate(fechaInicioEleccion); participacion.setVoted(true); - assertEquals(participacion.getCategory(), categoria); - assertEquals(participacion.getEmail(), email); - assertEquals(participacion.getElectionLinkEN(), linkEleccionEN); - assertEquals(participacion.getElectionLinkPT(), linkEleccionPT); - assertEquals(participacion.getElectionLinkSP(), linkEleccionSP); - assertEquals(participacion.getVoteLink(), linkVotar); - assertEquals(participacion.getName(), nombre); - assertEquals(participacion.getOrgId(), orgId); - assertEquals(participacion.getCountry(), pais); - assertEquals(participacion.getElectionTitleEN(), tituloEleccionEN); - assertEquals(participacion.getElectionTitlePT(), tituloEleccionPT); - assertEquals(participacion.getElectionTitleSP(), tituloEleccionSP); - assertEquals(participacion.getElectionEndDate(), fechaFinEleccion); - assertEquals(participacion.getElectionStartDate(), fechaInicioEleccion); + assertEquals(categoria, participacion.getCategory()); + assertEquals(email, participacion.getEmail()); + assertEquals(linkEleccionEN, participacion.getElectionLinkEN()); + assertEquals(linkEleccionPT, participacion.getElectionLinkPT()); + assertEquals(linkEleccionSP, participacion.getElectionLinkSP()); + assertEquals(linkVotar, participacion.getVoteLink()); + assertEquals(nombre, participacion.getName()); + assertEquals(orgId, participacion.getOrgId()); + assertEquals(pais, participacion.getCountry()); + assertEquals(tituloEleccionEN, participacion.getElectionTitleEN()); + assertEquals(tituloEleccionPT, participacion.getElectionTitlePT()); + assertEquals(tituloEleccionSP, participacion.getElectionTitleSP()); + assertEquals(fechaFinEleccion, participacion.getElectionEndDate()); + assertEquals(fechaInicioEleccion, participacion.getElectionStartDate()); assertTrue(participacion.isVoted()); } public void testElectionReportDataAndHealthCheck() { // ElectionReport Data - String nombreEleccion; long usuariosVotaron, usuariosNoVotaron, usuariosTotales, correosPendientes; - nombreEleccion = "test"; + String nombreEleccion = "test"; usuariosVotaron = 10; usuariosNoVotaron = 1; usuariosTotales = 11; @@ -94,16 +90,15 @@ public void testElectionReportDataAndHealthCheck() { assertNotNull(eleccion); - assertEquals(eleccion.getPendingMails(), correosPendientes); - assertEquals(eleccion.getElectionName(), nombreEleccion); - assertEquals(eleccion.getUsersNotVoted(), usuariosNoVotaron); - assertEquals(eleccion.getUsersVoted(), usuariosVotaron); - assertEquals(eleccion.getUsersTotal(), usuariosTotales); + assertEquals(correosPendientes, eleccion.getPendingMails()); + assertEquals(nombreEleccion, eleccion.getElectionName()); + assertEquals(usuariosNoVotaron, eleccion.getUsersNotVoted()); + assertEquals(usuariosVotaron, eleccion.getUsersVoted()); + assertEquals(usuariosTotales, eleccion.getUsersTotal()); // Health check - int intentosDeEnvio; long ipsAccesosFallidos, sumaAccesosFallidos, correosTotales, correosPendientes2, correosEnviados; - intentosDeEnvio = 1; + int intentosDeEnvio = 1; ipsAccesosFallidos = 5; sumaAccesosFallidos = 5; correosEnviados = 9; @@ -117,21 +112,20 @@ public void testElectionReportDataAndHealthCheck() { assertNotNull(healthChk); - assertEquals(healthChk.getMailsSent(), correosEnviados); - assertEquals(healthChk.getMailsPending(), correosPendientes2); - assertEquals(healthChk.getMailsTotal(), correosTotales); - assertEquals(healthChk.getSendAttempts(), intentosDeEnvio); - assertEquals(healthChk.getFailedAccessIps(), ipsAccesosFallidos); - assertEquals(healthChk.getFailedAccessSum(), sumaAccesosFallidos); + assertEquals(correosEnviados, healthChk.getMailsSent()); + assertEquals(correosPendientes2, healthChk.getMailsPending()); + assertEquals(correosTotales, healthChk.getMailsTotal()); + assertEquals(intentosDeEnvio, healthChk.getSendAttempts()); + assertEquals(ipsAccesosFallidos, healthChk.getFailedAccessIps()); + assertEquals(sumaAccesosFallidos, healthChk.getFailedAccessSum()); assertEquals(1, elecciones.size()); - assertEquals(healthChk.getElections().get(0), elecciones.get(0)); + assertEquals(elecciones.get(0), healthChk.getElections().get(0)); } public void testElectionReportDataSetsRestantes() { - String nombreEleccion; long usuariosVotaron, usuariosNoVotaron, usuariosTotales, correosPendientes; - nombreEleccion = "test"; + String nombreEleccion = "test"; usuariosVotaron = 10; usuariosNoVotaron = 1; usuariosTotales = 11; @@ -147,47 +141,45 @@ public void testElectionReportDataSetsRestantes() { eleccion.setUsersTotal(usuariosTotales); eleccion.setUsersVoted(usuariosVotaron); - assertEquals(eleccion.getPendingMails(), correosPendientes); - assertEquals(eleccion.getElectionName(), nombreEleccion); - assertEquals(eleccion.getUsersNotVoted(), usuariosNoVotaron); - assertEquals(eleccion.getUsersVoted(), usuariosVotaron); - assertEquals(eleccion.getUsersTotal(), usuariosTotales); + assertEquals(nombreEleccion, eleccion.getElectionName()); + assertEquals(correosPendientes, eleccion.getPendingMails()); + assertEquals(usuariosNoVotaron, eleccion.getUsersNotVoted()); + assertEquals(usuariosTotales, eleccion.getUsersTotal()); + assertEquals(usuariosVotaron, eleccion.getUsersVoted()); } public void testHealthCheckSets() { - int intentosDeEnvio; - long ipsAccesosFallidos, sumaAccesosFallidos, correosTotales, correosPendientes2, correosEnviados; - intentosDeEnvio = 1; + long ipsAccesosFallidos, sumaAccesosFallidos, correosTotales, correosPendientes, correosEnviados; + int intentosDeEnvio = 1; ipsAccesosFallidos = 5; sumaAccesosFallidos = 5; correosEnviados = 9; - correosPendientes2 = 1; + correosPendientes = 1; correosTotales = 10; List elecciones = new ArrayList<>(); elecciones.add(new ElectionReport("", 0, 0, 0, 0)); - HealthCheck healthChk = new HealthCheck(intentosDeEnvio, ipsAccesosFallidos, sumaAccesosFallidos, correosTotales, correosPendientes2, correosEnviados, elecciones); + HealthCheck healthChk = new HealthCheck(intentosDeEnvio, ipsAccesosFallidos, sumaAccesosFallidos, correosTotales, correosPendientes, correosEnviados, elecciones); assertNotNull(healthChk); healthChk.setElections(elecciones); healthChk.setFailedAccessIps(ipsAccesosFallidos); healthChk.setFailedAccessSum(sumaAccesosFallidos); - healthChk.setMailsPending(correosPendientes2); + healthChk.setMailsPending(correosPendientes); healthChk.setMailsSent(correosEnviados); healthChk.setMailsTotal(correosTotales); healthChk.setSendAttempts(intentosDeEnvio); - assertEquals(healthChk.getMailsSent(), correosEnviados); - assertEquals(healthChk.getMailsPending(), correosPendientes2); - assertEquals(healthChk.getMailsTotal(), correosTotales); - assertEquals(healthChk.getSendAttempts(), intentosDeEnvio); - assertEquals(healthChk.getFailedAccessIps(), ipsAccesosFallidos); - assertEquals(healthChk.getFailedAccessSum(), sumaAccesosFallidos); + assertEquals(correosEnviados, healthChk.getMailsSent()); + assertEquals(correosPendientes, healthChk.getMailsPending()); + assertEquals(correosTotales, healthChk.getMailsTotal()); + assertEquals(intentosDeEnvio, healthChk.getSendAttempts()); + assertEquals(ipsAccesosFallidos, healthChk.getFailedAccessIps()); + assertEquals(sumaAccesosFallidos, healthChk.getFailedAccessSum()); assertEquals(1, elecciones.size()); - assertEquals(healthChk.getElections().get(0), elecciones.get(0)); + assertEquals(elecciones.get(0), healthChk.getElections().get(0)); } - } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/data/ElectionResultsDataTest.java b/elections-ejb/src/test/java/net/lacnic/elections/data/ElectionResultsDataTest.java index a3e295f..bc19c2b 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/data/ElectionResultsDataTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/data/ElectionResultsDataTest.java @@ -6,8 +6,6 @@ import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; -import net.lacnic.elections.data.ElectionsResultsData; -import net.lacnic.elections.data.ResultDetailData; public class ElectionResultsDataTest extends TestCase { @@ -25,29 +23,27 @@ public static Test suite() { public void testResultadoEleccionesData() { Long availableVoters, participantVoters, percentage, total; - int weigth, max; - String strTotal, strTotalPos; - availableVoters = (long) 1000; - participantVoters = (long) 500; - weigth = 5; - max = 2; + availableVoters = 1000L; + participantVoters = 500L; + int weigth = 5; + int max = 2; percentage = (participantVoters * 100L) / availableVoters; total = (participantVoters) * (weigth); - strTotal = "( " + total + " - " + (total * max) + ") "; - strTotalPos = "( " + total + " - " + (total * max) + ") "; + String strTotal = "( " + total + " - " + (total * max) + ") "; + String strTotalPos = "( " + total + " - " + (total * max) + ") "; ResultDetailData detalleRes = new ResultDetailData(availableVoters, participantVoters, weigth); assertNotNull(detalleRes); - assertEquals(detalleRes.getPercentage(), percentage); - assertEquals(detalleRes.getPercentageWithSymbol(), percentage + " %"); - assertEquals(detalleRes.getEnabled(), availableVoters); - assertEquals(detalleRes.getParticipants(), participantVoters); - assertEquals(detalleRes.getWeight(), Integer.valueOf(weigth)); - assertEquals(detalleRes.getTotal(), total); - assertEquals(detalleRes.getTotal(max), strTotal); + assertEquals(percentage, detalleRes.getPercentage()); + assertEquals(percentage + " %", detalleRes.getPercentageWithSymbol()); + assertEquals(availableVoters, detalleRes.getEnabled()); + assertEquals(participantVoters, detalleRes.getParticipants()); + assertEquals(Integer.valueOf(weigth), detalleRes.getWeight()); + assertEquals(total, detalleRes.getTotal()); + assertEquals(strTotal, detalleRes.getTotal(max)); ElectionsResultsData resultado = new ElectionsResultsData(max); @@ -61,18 +57,18 @@ public void testResultadoEleccionesData() { resultado.setTotalEnabled(availableVoters); resultado.setTotalTotal(total); - assertEquals(resultado.getMax(), max); - assertEquals(resultado.getTotalEnabled(), availableVoters); - assertEquals(resultado.getTotalParticipants(), participantVoters); - assertEquals(resultado.getTotalTotal(), total); - assertEquals(resultado.getTotalPercentageWithSymbol(), percentage + " %"); - assertEquals(resultado.getTotalTotalPossible(), strTotalPos); + assertEquals(max, resultado.getMax()); + assertEquals(availableVoters, resultado.getTotalEnabled()); + assertEquals(participantVoters, resultado.getTotalParticipants()); + assertEquals(total, resultado.getTotalTotal()); + assertEquals(percentage + " %", resultado.getTotalPercentageWithSymbol()); + assertEquals(strTotalPos, resultado.getTotalTotalPossible()); resultado.calculateTotals(); - assertEquals(resultado.getTotalEnabled(), availableVoters); - assertEquals(resultado.getTotalParticipants(), participantVoters); - assertEquals(resultado.getTotalTotal(), total); + assertEquals(availableVoters, resultado.getTotalEnabled()); + assertEquals(participantVoters, resultado.getTotalParticipants()); + assertEquals(total, resultado.getTotalTotal()); } public void testResultadoEleccionesDataConConstructorPorDefecto() { @@ -84,22 +80,20 @@ public void testResultadoEleccionesDataConConstructorPorDefecto() { assertNotNull(resultado); resultado.setMax(max); - assertEquals(resultado.getMax(), max); + assertEquals(max, resultado.getMax()); } public void testResultDetailDataConConstructorPorDefecto() { Long availableVoters, participantVoters, percentage, total; - int weigth, max; - String strTotal; - availableVoters = (long) 1000; - participantVoters = (long) 500; - weigth = 5; - max = 2; + availableVoters = 1000L; + participantVoters = 500L; + int weigth = 5; + int max = 2; percentage = (participantVoters * 100L) / availableVoters; total = (participantVoters) * (weigth); - strTotal = "( " + total + " - " + (total * max) + ") "; + String strTotal = "( " + total + " - " + (total * max) + ") "; ResultDetailData detalleRes = new ResultDetailData(); @@ -111,13 +105,13 @@ public void testResultDetailDataConConstructorPorDefecto() { detalleRes.setWeight(Integer.valueOf(weigth)); detalleRes.setEnabled(availableVoters); - assertEquals(detalleRes.getPercentage(), percentage); - assertEquals(detalleRes.getPercentageWithSymbol(), percentage + " %"); - assertEquals(detalleRes.getEnabled(), availableVoters); - assertEquals(detalleRes.getParticipants(), participantVoters); - assertEquals(detalleRes.getWeight(), Integer.valueOf(weigth)); - assertEquals(detalleRes.getTotal(), total); - assertEquals(detalleRes.getTotal(max), strTotal); + assertEquals(percentage, detalleRes.getPercentage()); + assertEquals(percentage + " %", detalleRes.getPercentageWithSymbol()); + assertEquals(availableVoters, detalleRes.getEnabled()); + assertEquals(participantVoters, detalleRes.getParticipants()); + assertEquals(Integer.valueOf(weigth), detalleRes.getWeight()); + assertEquals(total, detalleRes.getTotal()); + assertEquals(strTotal, detalleRes.getTotal(max)); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/data/TableReportDataStringIdTest.java b/elections-ejb/src/test/java/net/lacnic/elections/data/TableReportDataStringIdTest.java index 50e5cf9..8480e96 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/data/TableReportDataStringIdTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/data/TableReportDataStringIdTest.java @@ -25,8 +25,8 @@ public void testTableReportDataStringId() { assertNotNull(tableReportData); - assertEquals(tableReportData.getId(), id); - assertEquals(tableReportData.getDescription(), description); + assertEquals(id, tableReportData.getId()); + assertEquals(description, tableReportData.getDescription()); } public void testTableReportDataStringIdSets() { @@ -40,8 +40,8 @@ public void testTableReportDataStringIdSets() { tableReportData.setId(id); tableReportData.setDescription(description); - assertEquals(tableReportData.getId(), id); - assertEquals(tableReportData.getDescription(), description); + assertEquals(id, tableReportData.getId()); + assertEquals(description, tableReportData.getDescription()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/data/TablesReportDataLongIdTest.java b/elections-ejb/src/test/java/net/lacnic/elections/data/TablesReportDataLongIdTest.java index 5adc4c9..c1178ee 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/data/TablesReportDataLongIdTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/data/TablesReportDataLongIdTest.java @@ -26,8 +26,8 @@ public void testTablesReportDataLongId() { assertNotNull(tableReportData); - assertEquals(tableReportData.getId(), id); - assertEquals(tableReportData.getDescription(), description); + assertEquals(id, tableReportData.getId()); + assertEquals(description, tableReportData.getDescription()); } public void testTablesReportDataLongIdSets() { @@ -42,8 +42,8 @@ public void testTablesReportDataLongIdSets() { tableReportData.setId(id); tableReportData.setDescription(description); - assertEquals(tableReportData.getId(), id); - assertEquals(tableReportData.getDescription(), description); + assertEquals(id, tableReportData.getId()); + assertEquals(description, tableReportData.getDescription()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/ActivityTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/ActivityTest.java index 9239cb7..38cbc77 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/ActivityTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/ActivityTest.java @@ -1,5 +1,7 @@ package net.lacnic.elections.domain; +import java.util.Date; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Enumerated; @@ -21,26 +23,22 @@ public static Test suite() { return new TestSuite(ActivityTest.class); } - public void testActivity() { + public void testActivityAnnotations() { AssertAnnotations.assertType(Activity.class, Entity.class); // fields AssertAnnotations.assertField(Activity.class, "activityId", Column.class, Id.class, GeneratedValue.class, SequenceGenerator.class); - AssertAnnotations.assertField(Activity.class, "userName", Column.class); - AssertAnnotations.assertField(Activity.class, "electionId", Column.class); - AssertAnnotations.assertField(Activity.class, "ip", Column.class); - AssertAnnotations.assertField(Activity.class, "timestamp", Column.class); AssertAnnotations.assertField(Activity.class, "activityType", Column.class, Enumerated.class); - AssertAnnotations.assertField(Activity.class, "description", Column.class); - // metodos - AssertAnnotations.assertMethod(Activity.class, "getActivityId"); - AssertAnnotations.assertMethod(Activity.class, "getUserName"); - AssertAnnotations.assertMethod(Activity.class, "getActivityType"); - AssertAnnotations.assertMethod(Activity.class, "getDescription"); - AssertAnnotations.assertMethod(Activity.class, "getIp"); - AssertAnnotations.assertMethod(Activity.class, "getTimestamp"); - AssertAnnotations.assertMethod(Activity.class, "getElectionId"); + String[] columnFields = { "userName", "electionId", "ip", "timestamp", "description" }; + for (String field : columnFields) { + AssertAnnotations.assertField(Activity.class, field, Column.class); + } + + String[] methods = { "getActivityId", "getUserName", "getActivityType", "getDescription", "getIp", "getTimestamp", "getElectionId" }; + for (String method : methods) { + AssertAnnotations.assertMethod(Activity.class, method); + } // class annotations Entity a = ReflectTool.getClassAnnotation(Activity.class, Entity.class); @@ -61,7 +59,40 @@ public void testActivity() { assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(Activity.class, "description", Column.class); assertEquals("", c.name()); - } + public void testActivity() { + long activityId; + String userName, ip, description; + Long electionId; + Date timestamp = new Date(); + ActivityType activityType; + + activityId = 4500L; + userName = "Juan"; + ip = "192.168.0.1"; + electionId = 123L; + activityType = ActivityType.ADD_AUDITOR; + description = "Add Auditor activity"; + + Activity activity = new Activity(); + + assertNotNull(activity); + + activity.setActivityId(activityId); + activity.setUserName(userName); + activity.setIp(ip); + activity.setElectionId(electionId); + activity.setTimestamp(timestamp); + activity.setActivityType(activityType); + activity.setDescription(description); + + assertEquals(activityId, activity.getActivityId()); + assertEquals(userName, activity.getUserName()); + assertEquals(ip, activity.getIp()); + assertEquals(electionId, activity.getElectionId()); + assertEquals(timestamp, activity.getTimestamp()); + assertEquals(activityType, activity.getActivityType()); + assertEquals(description, activity.getDescription()); + } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/AuditorTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/AuditorTest.java index 88466da..233851e 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/AuditorTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/AuditorTest.java @@ -13,6 +13,8 @@ import junit.framework.TestSuite; import net.lacnic.AssertAnnotations; import net.lacnic.ReflectTool; +import net.lacnic.elections.utils.LinksUtils; +import net.lacnic.elections.utils.ObjectsFactory; public class AuditorTest extends TestCase { /** @@ -22,37 +24,32 @@ public static Test suite() { return new TestSuite(AuditorTest.class); } - public void testAuditor() { + public void testAuditorAnnotations() { AssertAnnotations.assertType(Auditor.class, Entity.class); // fields AssertAnnotations.assertField(Auditor.class, "auditorId", Id.class, GeneratedValue.class, SequenceGenerator.class, Column.class); - AssertAnnotations.assertField(Auditor.class, "migrationId", Column.class); - AssertAnnotations.assertField(Auditor.class, "commissioner", Column.class); - AssertAnnotations.assertField(Auditor.class, "agreedConformity", Column.class); - AssertAnnotations.assertField(Auditor.class, "revisionAvailable", Column.class); - AssertAnnotations.assertField(Auditor.class, "resultToken", Column.class); - AssertAnnotations.assertField(Auditor.class, "name", Column.class); AssertAnnotations.assertField(Auditor.class, "election", JoinColumn.class, ManyToOne.class); - AssertAnnotations.assertField(Auditor.class, "mail", Column.class); - - // metodos - AssertAnnotations.assertMethod(Auditor.class, "getAuditorId"); - AssertAnnotations.assertMethod(Auditor.class, "getMigrationId"); - AssertAnnotations.assertMethod(Auditor.class, "isCommissioner"); - AssertAnnotations.assertMethod(Auditor.class, "isAgreedConformity"); - AssertAnnotations.assertMethod(Auditor.class, "getResultToken"); - AssertAnnotations.assertMethod(Auditor.class, "isRevisionAvailable"); - AssertAnnotations.assertMethod(Auditor.class, "getName"); - AssertAnnotations.assertMethod(Auditor.class, "getElection"); - AssertAnnotations.assertMethod(Auditor.class, "getMail"); + + String[] columnFields = { "migrationId", "commissioner", "agreedConformity", "revisionAvailable", "resultToken", "name", "mail" }; + for (String field : columnFields) { + AssertAnnotations.assertField(Auditor.class, field, Column.class); + } + + String[] methods = { "getAuditorId", "getMigrationId", "isCommissioner", "isAgreedConformity", "getResultToken", "isRevisionAvailable", "getName", "getElection", "getMail" }; + for (String method : methods) { + AssertAnnotations.assertMethod(Auditor.class, method); + } // class annotations Entity a = ReflectTool.getClassAnnotation(Auditor.class, Entity.class); assertEquals("", a.name()); - Column c; JoinColumn jc; + jc = ReflectTool.getFieldAnnotation(Auditor.class, "election", JoinColumn.class); + assertEquals("election_id", jc.name()); + + Column c; c = ReflectTool.getFieldAnnotation(Auditor.class, "auditorId", Column.class); assertEquals("auditor_id", c.name()); c = ReflectTool.getFieldAnnotation(Auditor.class, "migrationId", Column.class); @@ -67,11 +64,76 @@ public void testAuditor() { assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(Auditor.class, "name", Column.class); assertEquals("", c.name()); - jc = ReflectTool.getFieldAnnotation(Auditor.class, "election", JoinColumn.class); - assertEquals("election_id", jc.name()); c = ReflectTool.getFieldAnnotation(Auditor.class, "mail", Column.class); assertEquals("", c.name()); + } + + public void testAuditor() { + long auditorId = 1L; + String name = "Juan Perez"; + String mail = "juan1@example.com"; + String resultToken = "resultToken123"; + String resultLink = LinksUtils.buildAuditorResultsLink(resultToken); + + Commissioner commissioner = ObjectsFactory.createCommissioner(); + + Election election = new Election(500); + Auditor auditor = new Auditor(election, commissioner); + + assertNotNull(auditor); + + auditor.setAuditorId(auditorId); + auditor.setResultToken(resultToken); + + assertEquals(auditorId, auditor.getAuditorId()); + assertEquals(name, auditor.getName()); + assertEquals(mail, auditor.getMail()); + assertEquals(resultToken, auditor.getResultToken()); + assertEquals(election, auditor.getElection()); + assertEquals(resultLink, auditor.getResultLink()); + + auditor.clean(); + + assertEquals(null, auditor.getName()); + assertEquals(null, auditor.getMail()); + assertEquals(false, auditor.isCommissioner()); + } + + public void testAuditorEmptyConstructor() { + + long auditorId = 1L; + String name = "Juan Perez"; + String mail = "juan1@example.com"; + Long migrationId = 123L; + boolean commissioner = true; + boolean agreedConformity = true; + boolean revisionAvailable = true; + String resultToken = "resultToken123"; + + Election election = new Election(); + Auditor auditor = new Auditor(); + + assertNotNull(auditor); + + auditor.setAuditorId(auditorId); + auditor.setName(name); + auditor.setMail(mail); + auditor.setMigrationId(migrationId); + auditor.setCommissioner(commissioner); + auditor.setAgreedConformity(agreedConformity); + auditor.setRevisionAvailable(revisionAvailable); + auditor.setResultToken(resultToken); + auditor.setElection(election); + assertEquals(auditorId, auditor.getAuditorId()); + assertEquals(name, auditor.getName()); + assertEquals(mail, auditor.getMail()); + assertEquals(migrationId, auditor.getMigrationId()); + assertEquals(commissioner, auditor.isCommissioner()); + assertEquals(agreedConformity, auditor.isAgreedConformity()); + assertEquals(revisionAvailable, auditor.isRevisionAvailable()); + assertEquals(resultToken, auditor.getResultToken()); + assertEquals(election, auditor.getElection()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/CandidateTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/CandidateTest.java index e7e292f..4db2f0a 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/CandidateTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/CandidateTest.java @@ -1,5 +1,9 @@ package net.lacnic.elections.domain; +import static org.junit.Assert.assertArrayEquals; + +import java.util.List; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -14,6 +18,7 @@ import junit.framework.TestSuite; import net.lacnic.AssertAnnotations; import net.lacnic.ReflectTool; +import net.lacnic.elections.utils.ObjectsFactory; public class CandidateTest extends TestCase { /** @@ -23,61 +28,43 @@ public static Test suite() { return new TestSuite(CandidateTest.class); } - public void testCandidate() { + public void testCandidateAnnotations() { AssertAnnotations.assertType(Candidate.class, Entity.class); // fields AssertAnnotations.assertField(Candidate.class, "candidateId", Id.class, GeneratedValue.class, SequenceGenerator.class, Column.class); - AssertAnnotations.assertField(Candidate.class, "migrationId", Column.class); - AssertAnnotations.assertField(Candidate.class, "name", Column.class); AssertAnnotations.assertField(Candidate.class, "election", JoinColumn.class, ManyToOne.class); - AssertAnnotations.assertField(Candidate.class, "pictureInfo", Column.class); - AssertAnnotations.assertField(Candidate.class, "pictureName", Column.class); - AssertAnnotations.assertField(Candidate.class, "bioSpanish", Column.class); - AssertAnnotations.assertField(Candidate.class, "bioEnglish", Column.class); - AssertAnnotations.assertField(Candidate.class, "bioPortuguese", Column.class); - AssertAnnotations.assertField(Candidate.class, "pictureExtension", Column.class); - AssertAnnotations.assertField(Candidate.class, "candidateOrder", Column.class); - AssertAnnotations.assertField(Candidate.class, "onlySp", Column.class); - AssertAnnotations.assertField(Candidate.class, "linkSpanish", Column.class); - AssertAnnotations.assertField(Candidate.class, "linkEnglish", Column.class); - AssertAnnotations.assertField(Candidate.class, "linkPortuguese", Column.class); AssertAnnotations.assertField(Candidate.class, "votes", OneToMany.class); - // metodos - AssertAnnotations.assertMethod(Candidate.class, "getCandidateId"); - AssertAnnotations.assertMethod(Candidate.class, "getName"); - AssertAnnotations.assertMethod(Candidate.class, "getElection"); - AssertAnnotations.assertMethod(Candidate.class, "getPictureInfo"); - AssertAnnotations.assertMethod(Candidate.class, "getPictureName"); - AssertAnnotations.assertMethod(Candidate.class, "getPictureExtension"); - AssertAnnotations.assertMethod(Candidate.class, "getVotes"); - AssertAnnotations.assertMethod(Candidate.class, "getBioSpanish"); - AssertAnnotations.assertMethod(Candidate.class, "getBioEnglish"); - AssertAnnotations.assertMethod(Candidate.class, "getBioPortuguese"); - AssertAnnotations.assertMethod(Candidate.class, "getCandidateOrder"); - AssertAnnotations.assertMethod(Candidate.class, "isOnlySp"); - AssertAnnotations.assertMethod(Candidate.class, "isFixed"); - AssertAnnotations.assertMethod(Candidate.class, "getLinkSpanish"); - AssertAnnotations.assertMethod(Candidate.class, "getLinkEnglish"); - AssertAnnotations.assertMethod(Candidate.class, "getLinkPortuguese"); - AssertAnnotations.assertMethod(Candidate.class, "getMigrationId"); + String[] columnFields = { "migrationId", "name", "pictureInfo", "pictureName", "bioSpanish", "bioEnglish", "bioPortuguese", "pictureExtension", "candidateOrder", "onlySp", "linkSpanish", "linkEnglish", "linkPortuguese" }; + for (String field : columnFields) { + AssertAnnotations.assertField(Candidate.class, field, Column.class); + } + + String[] methods = { "getCandidateId", "getName", "getElection", "getPictureInfo", "getPictureName", "getPictureExtension", "getVotes", "getBioSpanish", "getBioEnglish", "getBioPortuguese", "getCandidateOrder", "isOnlySp", "isFixed", "getLinkSpanish", "getLinkEnglish", "getLinkPortuguese", "getMigrationId" }; + for (String method : methods) { + AssertAnnotations.assertMethod(Candidate.class, method); + } // class annotations Entity a = ReflectTool.getClassAnnotation(Candidate.class, Entity.class); assertEquals("", a.name()); - Column c; JoinColumn jc; + jc = ReflectTool.getFieldAnnotation(Candidate.class, "election", JoinColumn.class); + assertEquals("election_id", jc.name()); + OneToMany oa; + oa = ReflectTool.getFieldAnnotation(Candidate.class, "votes", OneToMany.class); + assertEquals("candidate", oa.mappedBy()); + + Column c; c = ReflectTool.getFieldAnnotation(Candidate.class, "candidateId", Column.class); assertEquals("candidate_id", c.name()); c = ReflectTool.getFieldAnnotation(Candidate.class, "migrationId", Column.class); assertEquals("migration_id", c.name()); c = ReflectTool.getFieldAnnotation(Candidate.class, "name", Column.class); assertEquals("", c.name()); - jc = ReflectTool.getFieldAnnotation(Candidate.class, "election", JoinColumn.class); - assertEquals("election_id", jc.name()); c = ReflectTool.getFieldAnnotation(Candidate.class, "pictureInfo", Column.class); assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(Candidate.class, "pictureName", Column.class); @@ -100,9 +87,156 @@ public void testCandidate() { assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(Candidate.class, "linkPortuguese", Column.class); assertEquals("", c.name()); - oa = ReflectTool.getFieldAnnotation(Candidate.class, "votes", OneToMany.class); - assertEquals("candidate", oa.mappedBy()); + } + + public void testCandidate() { + + long candidateId = 1L; + byte[] pictureInfo = new byte[] { 1, 2, 3 }; + int candidateOrder = 1; + boolean onlySp = false; + Long migrationId = 123L; + String name, mail, pictureName, bioSpanish, bioEnglish, bioPortuguese, pictureExtension, linkSpanish, linkEnglish, linkPortuguese; + name = "Juan Perez"; + mail = "juan.perez@mail.com"; + pictureName = "profile.jpg"; + bioSpanish = "Biografía en español"; + bioEnglish = "Biography in English"; + bioPortuguese = "Biografia em português"; + pictureExtension = "jpg"; + linkSpanish = "linkES"; + linkEnglish = "linkEN"; + linkPortuguese = "linkPT"; + + List votes = ObjectsFactory.createVotesList(); + Election election = ObjectsFactory.createElection(500); + + Candidate candidate = new Candidate(); + + assertNotNull(candidate); + + // Set attributes + candidate.setCandidateId(candidateId); + candidate.setName(name); + candidate.setMail(mail); + candidate.setPictureName(pictureName); + candidate.setPictureInfo(pictureInfo); + candidate.setBioSpanish(bioSpanish); + candidate.setBioEnglish(bioEnglish); + candidate.setBioPortuguese(bioPortuguese); + candidate.setPictureExtension(pictureExtension); + candidate.setCandidateOrder(candidateOrder); + candidate.setOnlySp(onlySp); + candidate.setLinkSpanish(linkSpanish); + candidate.setLinkEnglish(linkEnglish); + candidate.setLinkPortuguese(linkPortuguese); + candidate.setElection(election); + candidate.setMigrationId(migrationId); + candidate.setVotes(votes); + + // Assertions + assertEquals(candidateId, candidate.getCandidateId()); + assertEquals(name, candidate.getName()); + assertEquals(mail, candidate.getMail()); + assertEquals(pictureName, candidate.getPictureName()); + assertArrayEquals(pictureInfo, candidate.getPictureInfo()); + assertEquals(bioSpanish, candidate.getBioSpanish()); + assertEquals(bioEnglish, candidate.getBioEnglish()); + assertEquals(bioPortuguese, candidate.getBioPortuguese()); + assertEquals(pictureExtension, candidate.getPictureExtension()); + assertEquals(candidateOrder, candidate.getCandidateOrder()); + assertEquals(onlySp, candidate.isOnlySp()); + assertEquals(linkSpanish, candidate.getLinkSpanish()); + assertEquals(linkEnglish, candidate.getLinkEnglish()); + assertEquals(linkPortuguese, candidate.getLinkPortuguese()); + assertEquals(election, candidate.getElection()); + assertEquals(migrationId, candidate.getMigrationId()); + assertEquals(1, candidate.getVotes().size()); + assertEquals(votes.get(0), candidate.getVotes().get(0)); + } + + public void testCandidateMethods() { + + Candidate candidate = ObjectsFactory.createCandidate(); + + // Copy bio and links to other languages + candidate.copyBioToOtherLanguages(); + + assertEquals(candidate.getBioSpanish(), candidate.getBioEnglish()); + assertEquals(candidate.getBioSpanish(), candidate.getBioPortuguese()); + assertEquals(candidate.getLinkSpanish(), candidate.getLinkEnglish()); + assertEquals(candidate.getLinkSpanish(), candidate.getLinkPortuguese()); + + // Clean the candidate object + candidate.clean(); + + // Assertions to ensure that the candidate data has been cleaned + assertNull(candidate.getName()); + assertNull(candidate.getMail()); + assertNull(candidate.getPictureInfo()); + assertNull(candidate.getPictureName()); + assertNull(candidate.getBioSpanish()); + assertNull(candidate.getBioEnglish()); + assertNull(candidate.getBioPortuguese()); + assertNull(candidate.getPictureExtension()); + + // Method isFixed + candidate.setCandidateOrder(0); + + assertTrue(candidate.isFixed()); + + candidate.setCandidateOrder(100000); + assertTrue(candidate.isFixed()); + + candidate.setCandidateOrder(50); + assertFalse(candidate.isFixed()); + } + + public void testGetBio() { + + String bioSpanish = "Biografía en español"; + String bioEnglish = "Biography in English"; + String bioPortuguese = "Biografia em português"; + + Candidate candidate = new Candidate(); + candidate.setBioSpanish(bioSpanish); + candidate.setBioEnglish(bioEnglish); + candidate.setBioPortuguese(bioPortuguese); + + // Test for "en" (case insensitive) + assertEquals(bioEnglish, candidate.getBio("english")); + assertEquals(bioEnglish, candidate.getBio("en")); + + // Test for "portuguese" and "pt" + assertEquals(bioPortuguese, candidate.getBio("portuguese")); + assertEquals(bioPortuguese, candidate.getBio("pt")); + + // Test for "spanish" and "sp" + assertEquals(bioSpanish, candidate.getBio("spanish")); + assertEquals(bioSpanish, candidate.getBio("sp")); + assertEquals(bioSpanish, candidate.getBio("SPSH")); + } + + public void testGetLink() { + String linkSpanish = "linkES"; + String linkEnglish = "linkEN"; + String linkPortuguese = "linkPT"; + + Candidate candidate = new Candidate(); + candidate.setLinkSpanish(linkSpanish); + candidate.setLinkEnglish(linkEnglish); + candidate.setLinkPortuguese(linkPortuguese); + + // Test for English link + assertEquals(linkEnglish, candidate.getLink("en")); + assertEquals(linkEnglish, candidate.getLink("english")); + + // Test for Portuguese link + assertEquals(linkPortuguese, candidate.getLink("pt")); + assertEquals(linkPortuguese, candidate.getLink("portuguese")); + // Test for Spanish link + assertEquals(linkSpanish, candidate.getLink("spanish")); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/CommissionerTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/CommissionerTest.java index 6e34407..938ac2a 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/CommissionerTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/CommissionerTest.java @@ -20,7 +20,7 @@ public static Test suite() { return new TestSuite(CommissionerTest.class); } - public void testCommissioner() { + public void testCommissionerAnnotations() { AssertAnnotations.assertType(Commissioner.class, Entity.class); // fields @@ -44,7 +44,25 @@ public void testCommissioner() { assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(Commissioner.class, "mail", Column.class); assertEquals("", c.name()); + } + + public void testCommissioner() { + + long commissionerId = 1L; + String name = "John Doe"; + String mail = "john.doe@example.com"; + + Commissioner commissioner = new Commissioner(); + + assertNotNull(commissioner); + + commissioner.setCommissionerId(commissionerId); + commissioner.setName(name); + commissioner.setMail(mail); + assertEquals(commissionerId, commissioner.getCommissionerId()); + assertEquals(name, commissioner.getName()); + assertEquals(mail, commissioner.getMail()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/CustomizationTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/CustomizationTest.java index 93bcf17..61ffc3a 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/CustomizationTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/CustomizationTest.java @@ -1,5 +1,7 @@ package net.lacnic.elections.domain; +import static org.junit.Assert.assertArrayEquals; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -21,34 +23,21 @@ public static Test suite() { return new TestSuite(CustomizationTest.class); } - public void testCustomization() { + public void testCustomizationAnnotations() { AssertAnnotations.assertType(Customization.class, Entity.class); // fields AssertAnnotations.assertField(Customization.class, "customizationId", Column.class, Id.class, GeneratedValue.class, SequenceGenerator.class); - AssertAnnotations.assertField(Customization.class, "picSmallLogo", Column.class); - AssertAnnotations.assertField(Customization.class, "picBigLogo", Column.class); - AssertAnnotations.assertField(Customization.class, "picSymbol", Column.class); - AssertAnnotations.assertField(Customization.class, "contPicSmallLogo", Column.class); - AssertAnnotations.assertField(Customization.class, "contPicBigLogo", Column.class); - AssertAnnotations.assertField(Customization.class, "contPicSymbol", Column.class); - AssertAnnotations.assertField(Customization.class, "siteTitle", Column.class); - AssertAnnotations.assertField(Customization.class, "loginTitle", Column.class); - AssertAnnotations.assertField(Customization.class, "showHome", Column.class); - AssertAnnotations.assertField(Customization.class, "homeHtml", Column.class); - - // metodos - - AssertAnnotations.assertMethod(Customization.class, "getCustomizationId"); - AssertAnnotations.assertMethod(Customization.class, "getPicSmallLogo"); - AssertAnnotations.assertMethod(Customization.class, "getPicBigLogo"); - AssertAnnotations.assertMethod(Customization.class, "getPicSymbol"); - AssertAnnotations.assertMethod(Customization.class, "getContPicSmallLogo"); - AssertAnnotations.assertMethod(Customization.class, "getContPicBigLogo"); - AssertAnnotations.assertMethod(Customization.class, "getContPicSymbol"); - AssertAnnotations.assertMethod(Customization.class, "getSiteTitle"); - AssertAnnotations.assertMethod(Customization.class, "getLoginTitle"); - AssertAnnotations.assertMethod(Customization.class, "isShowHome"); + + String[] columnFields = { "picSmallLogo", "picBigLogo", "picSymbol", "contPicSmallLogo", "contPicBigLogo", "contPicSymbol", "siteTitle", "loginTitle", "showHome", "homeHtml" }; + for (String field : columnFields) { + AssertAnnotations.assertField(Customization.class, field, Column.class); + } + + String[] methods = { "getCustomizationId", "getPicSmallLogo", "getPicBigLogo", "getPicSymbol", "getContPicSmallLogo", "getContPicBigLogo", "getContPicSymbol", "getSiteTitle", "getLoginTitle", "isShowHome" }; + for (String method : methods) { + AssertAnnotations.assertMethod(Customization.class, method); + } // class annotations Entity a = ReflectTool.getClassAnnotation(Customization.class, Entity.class); @@ -77,7 +66,49 @@ public void testCustomization() { assertEquals("show_home", c.name()); c = ReflectTool.getFieldAnnotation(Customization.class, "homeHtml", Column.class); assertEquals("home_html", c.name()); + } + + public void testCustomization() { + long customizationId = 1L; + String picSmallLogo, picBigLogo, picSymbol, siteTitle, loginTitle, homeHtml; + picSmallLogo = "small_logo.png"; + picBigLogo = "big_logo.png"; + picSymbol = "symbol.png"; + siteTitle = "My Site"; + loginTitle = "Login Page"; + homeHtml = "Home Content"; + byte[] contPicSmallLogo = { 1, 2, 3 }; + byte[] contPicBigLogo = { 4, 5, 6 }; + byte[] contPicSymbol = { 7, 8, 9 }; + boolean showHome = true; + + Customization customization = new Customization(); + + assertNotNull(customization); + + customization.setCustomizationId(customizationId); + customization.setPicSmallLogo(picSmallLogo); + customization.setPicBigLogo(picBigLogo); + customization.setPicSymbol(picSymbol); + customization.setContPicSmallLogo(contPicSmallLogo); + customization.setContPicBigLogo(contPicBigLogo); + customization.setContPicSymbol(contPicSymbol); + customization.setSiteTitle(siteTitle); + customization.setLoginTitle(loginTitle); + customization.setShowHome(showHome); + customization.setHomeHtml(homeHtml); + assertEquals(customizationId, customization.getCustomizationId()); + assertEquals(picSmallLogo, customization.getPicSmallLogo()); + assertEquals(picBigLogo, customization.getPicBigLogo()); + assertEquals(picSymbol, customization.getPicSymbol()); + assertArrayEquals(contPicSmallLogo, customization.getContPicSmallLogo()); + assertArrayEquals(contPicBigLogo, customization.getContPicBigLogo()); + assertArrayEquals(contPicSymbol, customization.getContPicSymbol()); + assertEquals(siteTitle, customization.getSiteTitle()); + assertEquals(loginTitle, customization.getLoginTitle()); + assertEquals(showHome, customization.isShowHome()); + assertEquals(homeHtml, customization.getHomeHtml()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionEmailTemplateTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionEmailTemplateTest.java index c96ad08..258e61f 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionEmailTemplateTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionEmailTemplateTest.java @@ -23,43 +23,35 @@ public static Test suite() { return new TestSuite(ElectionEmailTemplateTest.class); } - public void testElectionEmailTemplate() { + public void testElectionEmailTemplateAnnotations() { AssertAnnotations.assertType(ElectionEmailTemplate.class, Entity.class); // fields AssertAnnotations.assertField(ElectionEmailTemplate.class, "electionEmailTemplateId", Id.class, GeneratedValue.class, SequenceGenerator.class, Column.class); AssertAnnotations.assertField(ElectionEmailTemplate.class, "election", JoinColumn.class, ManyToOne.class); - AssertAnnotations.assertField(ElectionEmailTemplate.class, "templateType", Column.class); - AssertAnnotations.assertField(ElectionEmailTemplate.class, "subjectSP", Column.class); - AssertAnnotations.assertField(ElectionEmailTemplate.class, "subjectPT", Column.class); - AssertAnnotations.assertField(ElectionEmailTemplate.class, "subjectEN", Column.class); - AssertAnnotations.assertField(ElectionEmailTemplate.class, "bodySP", Column.class); - AssertAnnotations.assertField(ElectionEmailTemplate.class, "bodyEN", Column.class); - AssertAnnotations.assertField(ElectionEmailTemplate.class, "bodyPT", Column.class); AssertAnnotations.assertField(ElectionEmailTemplate.class, "recipientType", Transient.class); - // metodos - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getElectionEmailTemplateId"); - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getElection"); - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getTemplateType"); - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getSubjectSP"); - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getSubjectEN"); - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getSubjectPT"); - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getBodySP"); - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getBodyEN"); - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getBodyPT"); - AssertAnnotations.assertMethod(ElectionEmailTemplate.class, "getRecipientType"); + String[] columnFields = { "templateType", "subjectSP", "subjectPT", "subjectEN", "bodySP", "bodyEN", "bodyPT" }; + for (String field : columnFields) { + AssertAnnotations.assertField(ElectionEmailTemplate.class, field, Column.class); + } + + String[] methods = { "getElectionEmailTemplateId", "getElection", "getTemplateType", "getSubjectSP", "getSubjectEN", "getSubjectPT", "getBodySP", "getBodyEN", "getBodyPT", "getRecipientType" }; + for (String method : methods) { + AssertAnnotations.assertMethod(ElectionEmailTemplate.class, method); + } // class annotations Entity a = ReflectTool.getClassAnnotation(ElectionEmailTemplate.class, Entity.class); assertEquals("", a.name()); - Column c; JoinColumn jc; - c = ReflectTool.getFieldAnnotation(ElectionEmailTemplate.class, "electionEmailTemplateId", Column.class); - assertEquals("electionemailtemplate_id", c.name()); jc = ReflectTool.getFieldAnnotation(ElectionEmailTemplate.class, "election", JoinColumn.class); assertEquals("election_id", jc.name()); + + Column c; + c = ReflectTool.getFieldAnnotation(ElectionEmailTemplate.class, "electionEmailTemplateId", Column.class); + assertEquals("electionemailtemplate_id", c.name()); c = ReflectTool.getFieldAnnotation(ElectionEmailTemplate.class, "templateType", Column.class); assertEquals("type", c.name()); c = ReflectTool.getFieldAnnotation(ElectionEmailTemplate.class, "subjectSP", Column.class); @@ -74,7 +66,89 @@ public void testElectionEmailTemplate() { assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(ElectionEmailTemplate.class, "bodyPT", Column.class); assertEquals("", c.name()); + } + + public void testElectionEmailTemplate() { + + String subjectSP, subjectEN, subjectPT, bodySP, bodyEN, bodyPT, templateType; + subjectSP = "Original subject in Spanish"; + subjectEN = "Original subject in English"; + subjectPT = "Original subject in Portuguese"; + bodySP = "Original body in Spanish"; + bodyEN = "Original body in English"; + bodyPT = "Original body in Portuguese"; + templateType = "NEW"; + long electionEmailTemplateId = 5678L; + + Election election = new Election(123L); + + ElectionEmailTemplate originalTemplate = new ElectionEmailTemplate(); + + originalTemplate.setSubjectSP(subjectSP); + originalTemplate.setSubjectEN(subjectEN); + originalTemplate.setSubjectPT(subjectPT); + originalTemplate.setBodySP(bodySP); + originalTemplate.setBodyEN(bodyEN); + originalTemplate.setBodyPT(bodyPT); + originalTemplate.setTemplateType(templateType); + originalTemplate.setElectionEmailTemplateId(electionEmailTemplateId); + originalTemplate.setElection(election); + + ElectionEmailTemplate newEmailTemplate = new ElectionEmailTemplate(election, originalTemplate); + + assertNotNull(newEmailTemplate); + + // Verify that all fields are correctly copied from the original template + assertEquals(subjectSP, newEmailTemplate.getSubjectSP()); + assertEquals(subjectEN, newEmailTemplate.getSubjectEN()); + assertEquals(subjectPT, newEmailTemplate.getSubjectPT()); + assertEquals(bodySP, newEmailTemplate.getBodySP()); + assertEquals(bodyEN, newEmailTemplate.getBodyEN()); + assertEquals(bodyPT, newEmailTemplate.getBodyPT()); + assertEquals(templateType, newEmailTemplate.getTemplateType()); + assertEquals(election, newEmailTemplate.getElection()); + } + + public void testElectionEmailTemplateDefaultConstructor() { + + String subjectSP, subjectEN, subjectPT, bodySP, bodyEN, bodyPT, templateType; + subjectSP = "Original subject in Spanish"; + subjectEN = "Original subject in English"; + subjectPT = "Original subject in Portuguese"; + bodySP = "Original body in Spanish"; + bodyEN = "Original body in English"; + bodyPT = "Original body in Portuguese"; + templateType = "NEW"; + RecipientType recipientType = RecipientType.VOTERS; + long electionEmailTemplateId = 5678L; + + Election election = new Election(123L); + + ElectionEmailTemplate emailTemplate = new ElectionEmailTemplate(); + + emailTemplate.setSubjectSP(subjectSP); + emailTemplate.setSubjectEN(subjectEN); + emailTemplate.setSubjectPT(subjectPT); + emailTemplate.setBodySP(bodySP); + emailTemplate.setBodyEN(bodyEN); + emailTemplate.setBodyPT(bodyPT); + emailTemplate.setTemplateType(templateType); + emailTemplate.setRecipientType(recipientType); + emailTemplate.setElectionEmailTemplateId(electionEmailTemplateId); + emailTemplate.setElection(election); + // Verify that all fields are correctly copied from the original template + assertEquals(subjectSP, emailTemplate.getSubjectSP()); + assertEquals(subjectEN, emailTemplate.getSubjectEN()); + assertEquals(subjectPT, emailTemplate.getSubjectPT()); + assertEquals(bodySP, emailTemplate.getBodySP()); + assertEquals(bodyEN, emailTemplate.getBodyEN()); + assertEquals(bodyPT, emailTemplate.getBodyPT()); + assertEquals(templateType, emailTemplate.getTemplateType()); + assertEquals(recipientType, emailTemplate.getRecipientType()); + assertEquals(electionEmailTemplateId, emailTemplate.getElectionEmailTemplateId()); + assertEquals(election, emailTemplate.getElection()); + assertTrue(emailTemplate.isTemplateNew()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionLightTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionLightTest.java new file mode 100644 index 0000000..ee037dd --- /dev/null +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionLightTest.java @@ -0,0 +1,441 @@ +package net.lacnic.elections.domain; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Enumerated; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.joda.time.DateTime; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; +import net.lacnic.AssertAnnotations; +import net.lacnic.ReflectTool; +import net.lacnic.elections.utils.LinksUtils; + +public class ElectionLightTest extends TestCase { + + private ElectionLight election; + + @Override + public void setUp() { + election = new ElectionLight(); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() { + return new TestSuite(ElectionLightTest.class); + } + + public void testElectionLightAnnotations() { + AssertAnnotations.assertType(ElectionLight.class, Entity.class, Table.class); + + // Individual Fields with Multiple Annotations + AssertAnnotations.assertField(ElectionLight.class, "electionId", Id.class, Column.class); + AssertAnnotations.assertField(ElectionLight.class, "category", Column.class, Enumerated.class); + + String[] columnFields = { "migrated", "startDate", "endDate", "creationDate", "titleSpanish", "titleEnglish", "titlePortuguese", "linkSpanish", "linkEnglish", "linkPortuguese", "descriptionSpanish", "descriptionEnglish", "descriptionPortuguese", "maxCandidates", "votingLinkAvailable", "resultLinkAvailable", "auditorLinkAvailable", "revisionRequest", "onlySp", "resultToken", "defaultSender", "electorsSet", "candidatesSet", "auditorsSet", "randomOrderCandidates", "diffUTC", "closed", "closedDate" }; + for (String field : columnFields) { + AssertAnnotations.assertField(ElectionLight.class, field, Column.class); + } + + String[] methods = { "getElectionId", "getStartDate", "getEndDate", "getMaxCandidates", "isVotingLinkAvailable", "getCreationDate", "isResultLinkAvailable", "getTitleSpanish", "getTitleEnglish", "getTitlePortuguese", "getDescriptionSpanish", "getDescriptionEnglish", "getDescriptionPortuguese", "getResultToken", "getLinkSpanish", "getLinkEnglish", "getLinkPortuguese", "isOnlySp", "isAuditorLinkAvailable", "isElectorsSet", "isCandidatesSet", "isAuditorsSet", "getDefaultSender", "getResultLink", "isRandomOrderCandidates", "getStartDateString", "getDiffUTC", "isRevisionRequest", "isFinished", "isStarted", "isEnabledToVote", "isMigrated", "getCategory", "isClosed", "getClosedDate" }; + for (String method : methods) { + AssertAnnotations.assertMethod(ElectionLight.class, method); + } + + // Class Annotations + Entity a = ReflectTool.getClassAnnotation(ElectionLight.class, Entity.class); + assertEquals("", a.name()); + + // Specific Annotations + Column c = ReflectTool.getFieldAnnotation(ElectionLight.class, "electionId", Column.class); + assertEquals("election_id", c.name()); + } + + public void testElectionLight() { + long electionId = 76447L; + boolean migrated = true; + Date startDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + Date endDate = new DateTime(2025, 1, 1, 9, 0).toDate(); + Date creationDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + Date closedDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + + String titleSpanish = "Elección de prueba en español"; + String titleEnglish = "Test Election in English"; + String titlePortuguese = "Eleições de teste em português"; + String linkSpanish = "http://example.com/es"; + String linkEnglish = "http://example.com/en"; + String linkPortuguese = "http://example.com/pt"; + String descriptionSpanish = "Descripción en español"; + String descriptionEnglish = "Description in English"; + String descriptionPortuguese = "Descrição em português"; + int maxCandidates = 5; + boolean votingLinkAvailable = true; + boolean resultLinkAvailable = true; + boolean auditorLinkAvailable = false; + boolean revisionRequest = true; + boolean onlySp = false; + String resultToken = "result-token-123"; + String defaultSender = "noreply@example.com"; + boolean electorsSet = true; + boolean candidatesSet = true; + boolean auditorsSet = false; + boolean randomOrderCandidates = true; + int diffUTC = 3; + boolean closed = false; + ElectionCategory category = ElectionCategory.STATUTORY; + String resultLink = LinksUtils.buildAuditorResultsLink(resultToken); + + election = new ElectionLight(); + election.setElectionId(electionId); + election.setCategory(category); + election.setMigrated(migrated); + election.setStartDate(startDate); + election.setEndDate(endDate); + election.setCreationDate(creationDate); + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + election.setMaxCandidates(maxCandidates); + election.setVotingLinkAvailable(votingLinkAvailable); + election.setResultLinkAvailable(resultLinkAvailable); + election.setAuditorLinkAvailable(auditorLinkAvailable); + election.setRevisionRequest(revisionRequest); + election.setOnlySp(onlySp); + election.setResultToken(resultToken); + election.setDefaultSender(defaultSender); + election.setElectorsSet(electorsSet); + election.setCandidatesSet(candidatesSet); + election.setAuditorsSet(auditorsSet); + election.setRandomOrderCandidates(randomOrderCandidates); + election.setDiffUTC(diffUTC); + election.setClosed(closed); + election.setClosedDate(closedDate); + + assertNotNull(election); + + String[] languageArray = { "sp", "en", "pt", "TODOS" }; + for (String language : languageArray) { + if (language.contains("sp")) { + assertEquals(election.getDescriptionSpanish(), election.getDescription(language)); + } + if (language.contains("en")) { + assertEquals(election.getDescriptionEnglish(), election.getDescription(language)); + } else if (language.contains("pt")) { + assertEquals(election.getDescriptionPortuguese(), election.getDescription(language)); + } else { + assertEquals(election.getDescriptionSpanish(), election.getDescription(language)); + } + } + + for (String language : languageArray) { + if (language.contains("sp")) { + assertEquals(election.getTitleSpanish(), election.getTitle(language)); + } + if (language.contains("en")) { + assertEquals(election.getTitleEnglish(), election.getTitle(language)); + } else if (language.contains("pt")) { + assertEquals(election.getTitlePortuguese(), election.getTitle(language)); + } else { + assertEquals(election.getTitleSpanish(), election.getTitle(language)); + } + } + + // Assertions to verify initialization + assertEquals(electionId, election.getElectionId()); + assertEquals(migrated, election.isMigrated()); + assertEquals(startDate, election.getStartDate()); + assertEquals(endDate, election.getEndDate()); + assertEquals(closedDate, election.getClosedDate()); + assertEquals(creationDate, election.getCreationDate()); + assertEquals(titleSpanish, election.getTitleSpanish()); + assertEquals(titleEnglish, election.getTitleEnglish()); + assertEquals(titlePortuguese, election.getTitlePortuguese()); + assertEquals(linkSpanish, election.getLinkSpanish()); + assertEquals(linkEnglish, election.getLinkEnglish()); + assertEquals(linkPortuguese, election.getLinkPortuguese()); + assertEquals(descriptionSpanish, election.getDescriptionSpanish()); + assertEquals(descriptionEnglish, election.getDescriptionEnglish()); + assertEquals(descriptionPortuguese, election.getDescriptionPortuguese()); + assertEquals(maxCandidates, election.getMaxCandidates()); + assertEquals(votingLinkAvailable, election.isVotingLinkAvailable()); + assertEquals(resultLinkAvailable, election.isResultLinkAvailable()); + assertEquals(auditorLinkAvailable, election.isAuditorLinkAvailable()); + assertEquals(revisionRequest, election.isRevisionRequest()); + assertEquals(onlySp, election.isOnlySp()); + assertEquals(resultToken, election.getResultToken()); + assertEquals(defaultSender, election.getDefaultSender()); + assertEquals(electorsSet, election.isElectorsSet()); + assertEquals(candidatesSet, election.isCandidatesSet()); + assertEquals(auditorsSet, election.isAuditorsSet()); + assertEquals(randomOrderCandidates, election.isRandomOrderCandidates()); + assertEquals(diffUTC, election.getDiffUTC()); + assertEquals(closed, election.isClosed()); + assertEquals(electionId, election.getElectionId()); + assertEquals(migrated, election.isMigrated()); + assertEquals(category, election.getCategory()); + assertFalse(election.isFinished()); + assertTrue(election.isStarted()); + assertTrue(election.isEnabledToVote()); + assertEquals(resultLink, election.getResultLink()); + } + + public void testCopyLanguageDescriptions() { + election = new ElectionLight(); + + String descriptionSpanish = "Descripción en español"; + String descriptionEnglish = "Description in English"; + String descriptionPortuguese = "Descrição em português"; + + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + // Case 1: Language "EN" + election.copyLanguageDescriptions("EN"); + assertEquals(descriptionEnglish, election.getDescriptionSpanish()); + assertEquals(descriptionEnglish, election.getDescriptionPortuguese()); + assertEquals(descriptionEnglish, election.getDescriptionEnglish()); + + // Restore the descriptions to the next case + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + // Case 2: Language "PT" + election.copyLanguageDescriptions("PT"); + assertEquals(descriptionPortuguese, election.getDescriptionEnglish()); + assertEquals(descriptionPortuguese, election.getDescriptionSpanish()); + assertEquals(descriptionPortuguese, election.getDescriptionPortuguese()); + + // Restore the descriptions to the next case + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + // Case 3: Language "ES" or any other + election.copyLanguageDescriptions("ES"); + assertEquals(descriptionSpanish, election.getDescriptionEnglish()); + assertEquals(descriptionSpanish, election.getDescriptionPortuguese()); + assertEquals(descriptionSpanish, election.getDescriptionSpanish()); + + // Case 4: Language with mixed uppercase/lowercase ("eN", "pT", "es") + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + election.copyLanguageDescriptions("eN"); + assertEquals(descriptionEnglish, election.getDescriptionSpanish()); + assertEquals(descriptionEnglish, election.getDescriptionPortuguese()); + + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + election.copyLanguageDescriptions("pT"); + assertEquals(descriptionPortuguese, election.getDescriptionEnglish()); + assertEquals(descriptionPortuguese, election.getDescriptionSpanish()); + + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + election.copyLanguageDescriptions("Es"); + assertEquals(descriptionSpanish, election.getDescriptionEnglish()); + assertEquals(descriptionSpanish, election.getDescriptionPortuguese()); + } + + public void testCopyLanguageTitles() { + election = new ElectionLight(); + + String titleSpanish = "Título en español"; + String titleEnglish = "English Title"; + String titlePortuguese = "Título em português"; + + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + // Case 1: Language "EN" + election.copyLanguageTitles("EN"); + assertEquals(titleEnglish, election.getTitleSpanish()); + assertEquals(titleEnglish, election.getTitlePortuguese()); + assertEquals(titleEnglish, election.getTitleEnglish()); + + // Restore the titles to the next case + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + // Case 2: Language "PT" + election.copyLanguageTitles("PT"); + assertEquals(titlePortuguese, election.getTitleEnglish()); + assertEquals(titlePortuguese, election.getTitleSpanish()); + assertEquals(titlePortuguese, election.getTitlePortuguese()); + + // Restore the titles to the next case + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + // Case 3: Language "ES" or any other + election.copyLanguageTitles("ES"); + assertEquals(titleSpanish, election.getTitleEnglish()); + assertEquals(titleSpanish, election.getTitlePortuguese()); + assertEquals(titleSpanish, election.getTitleSpanish()); + + // Case 4: Language with mixed uppercase/lowercase ("eN", "pT", "es") + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + election.copyLanguageTitles("eN"); + assertEquals(titleEnglish, election.getTitleSpanish()); + assertEquals(titleEnglish, election.getTitlePortuguese()); + + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + election.copyLanguageTitles("pT"); + assertEquals(titlePortuguese, election.getTitleEnglish()); + assertEquals(titlePortuguese, election.getTitleSpanish()); + + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + election.copyLanguageTitles("Es"); + assertEquals(titleSpanish, election.getTitleEnglish()); + assertEquals(titleSpanish, election.getTitlePortuguese()); + } + + public void testCopyLanguageURLs() { + election = new ElectionLight(); + + String linkSpanish = "Enlace en español"; + String linkEnglish = "English link"; + String linkPortuguese = "Link em português"; + + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + // Case 1: Language "EN" + election.copyLanguageURLs("EN"); + assertEquals(linkEnglish, election.getLinkSpanish()); + assertEquals(linkEnglish, election.getLinkPortuguese()); + assertEquals(linkEnglish, election.getLinkEnglish()); + + // Restore the links to the next case + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + // Case 2: Language "PT" + election.copyLanguageURLs("PT"); + assertEquals(linkPortuguese, election.getLinkEnglish()); + assertEquals(linkPortuguese, election.getLinkSpanish()); + assertEquals(linkPortuguese, election.getLinkPortuguese()); + + // Restore the links to the next case + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + // Case 3: Language "ES" or any other + election.copyLanguageURLs("ES"); + assertEquals(linkSpanish, election.getLinkEnglish()); + assertEquals(linkSpanish, election.getLinkPortuguese()); + assertEquals(linkSpanish, election.getLinkSpanish()); + + // Case 4: Language with mixed uppercase/lowercase ("eN", "pT", "es") + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + election.copyLanguageURLs("eN"); + assertEquals(linkEnglish, election.getLinkSpanish()); + assertEquals(linkEnglish, election.getLinkPortuguese()); + + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + election.copyLanguageURLs("pT"); + assertEquals(linkPortuguese, election.getLinkEnglish()); + assertEquals(linkPortuguese, election.getLinkSpanish()); + + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + election.copyLanguageURLs("Es"); + assertEquals(linkSpanish, election.getLinkEnglish()); + assertEquals(linkSpanish, election.getLinkPortuguese()); + } + + public void testIsEnabledToVote_DateBetween_StartDate_EndDate() { + // Scenario: Current date is between startDate and endDate + election = new ElectionLight(); + election.setStartDate(new Date(System.currentTimeMillis() - 1000)); // 1 second ago + election.setEndDate(new Date(System.currentTimeMillis() + 100000)); // In the future + + // Voting link is available + election.setVotingLinkAvailable(true); + assertTrue(election.isEnabledToVote()); + + // Voting link is unavailable + election.setVotingLinkAvailable(false); + assertFalse(election.isEnabledToVote()); + } + + public void testIsEnabledToVote_NotStarted() { + // Scenario: Current date is before startDate + election = new ElectionLight(); + election.setStartDate(new Date(System.currentTimeMillis() + 100000)); // In the future + election.setEndDate(new Date(System.currentTimeMillis() + 200000)); // Further in the future + + // Voting link is available + election.setVotingLinkAvailable(true); + assertFalse(election.isEnabledToVote()); + + // Voting link is unavailable + election.setVotingLinkAvailable(false); + assertFalse(election.isEnabledToVote()); + } + + public void testIsEnabledToVote_Finished() { + // Scenario: Current date is after endDate + election = new ElectionLight(); + election.setStartDate(new Date(System.currentTimeMillis() - 200000)); // In the past + election.setEndDate(new Date(System.currentTimeMillis() - 1000)); // 1 second ago + + election.setVotingLinkAvailable(true); + assertFalse(election.isEnabledToVote()); + } + + public void testIsEnabledToVote_AllConditionsFalse() { + // Scenario: Current date is before startDate, endDate is in the past, and voting link is unavailable + election = new ElectionLight(); + election.setStartDate(new Date(System.currentTimeMillis() + 100000)); // In the future + election.setEndDate(new Date(System.currentTimeMillis() - 1000)); // 1 second ago + + election.setVotingLinkAvailable(false); + assertFalse(election.isEnabledToVote()); + } + +} diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionTest.java index 1f3521c..f8dc09d 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/ElectionTest.java @@ -1,5 +1,15 @@ package net.lacnic.elections.domain; +import static net.lacnic.elections.utils.ObjectsFactory.createAuditors; +import static net.lacnic.elections.utils.ObjectsFactory.createElectionEmailTemplatesList; +import static net.lacnic.elections.utils.ObjectsFactory.createListCandidates; +import static net.lacnic.elections.utils.ObjectsFactory.createUserVoters; +import static net.lacnic.elections.utils.ObjectsFactory.createVotesList; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Enumerated; @@ -9,14 +19,26 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Transient; +import org.joda.time.DateTime; + import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import net.lacnic.AssertAnnotations; import net.lacnic.ReflectTool; +import net.lacnic.elections.utils.LinksUtils; +import net.lacnic.elections.utils.ObjectsFactory; public class ElectionTest extends TestCase { + private Election election; + + @Override + public void setUp() { + long electionId = 76447L; + election = ObjectsFactory.createElection(electionId); + } + /** * @return the suite of tests being tested */ @@ -24,7 +46,7 @@ public static Test suite() { return new TestSuite(ElectionTest.class); } - public void testElection() { + public void testElectionAnnotations() { AssertAnnotations.assertType(Election.class, Entity.class); // Individual Fields with Multiple Annotations @@ -58,13 +80,519 @@ public void testElection() { assertEquals("", a.name()); // Specific Annotations - Column c = ReflectTool.getFieldAnnotation(Election.class, "electionId", Column.class); - assertEquals("election_id", c.name()); - c = ReflectTool.getFieldAnnotation(Election.class, "migrationId", Column.class); - assertEquals("migration_id", c.name()); OneToMany oa = ReflectTool.getFieldAnnotation(Election.class, "candidates", OneToMany.class); assertEquals("election", oa.mappedBy()); oa = ReflectTool.getFieldAnnotation(Election.class, "auditors", OneToMany.class); assertEquals("election", oa.mappedBy()); + oa = ReflectTool.getFieldAnnotation(Election.class, "userVoters", OneToMany.class); + assertEquals("election", oa.mappedBy()); + oa = ReflectTool.getFieldAnnotation(Election.class, "electionTemplates", OneToMany.class); + assertEquals("election", oa.mappedBy()); + oa = ReflectTool.getFieldAnnotation(Election.class, "votes", OneToMany.class); + assertEquals("election", oa.mappedBy()); + oa = ReflectTool.getFieldAnnotation(Election.class, "email", OneToMany.class); + assertEquals("election", oa.mappedBy()); + + Column c = ReflectTool.getFieldAnnotation(Election.class, "electionId", Column.class); + assertEquals("election_id", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "migrationId", Column.class); + assertEquals("migration_id", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "category", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "migrated", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "startDate", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "endDate", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "creationDate", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "titleSpanish", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "titleEnglish", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "titlePortuguese", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "linkSpanish", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "linkEnglish", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "linkPortuguese", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "descriptionSpanish", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "descriptionEnglish", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "descriptionPortuguese", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "maxCandidates", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "votingLinkAvailable", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "resultLinkAvailable", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "auditorLinkAvailable", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "revisionRequest", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "onlySp", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "resultToken", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "defaultSender", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "electorsSet", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "candidatesSet", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "auditorsSet", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "randomOrderCandidates", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "diffUTC", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "closed", Column.class); + assertEquals("", c.name()); + c = ReflectTool.getFieldAnnotation(Election.class, "closedDate", Column.class); + assertEquals("", c.name()); + } + + public void testElection() { + long electionId = 76447L; + Long migrationId = 54321L; + boolean revisionRequest = true; + Date startDate, endDate, closedDate; + startDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + endDate = new DateTime(2025, 1, 1, 9, 0).toDate(); + closedDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + String title, linkSpanish, linkEnglish, linkPortuguese, descriptionSpanish, descriptionEnglish, descriptionPortuguese, defaultSender, auxStartDate, auxStartHour, auxEndDate, auxEndHour; + title = "TODOS"; + linkSpanish = "http://example.com/es"; + linkEnglish = "http://example.com/en"; + linkPortuguese = "http://example.com/pt"; + descriptionSpanish = "Descripción en español"; + descriptionEnglish = "Description in English"; + descriptionPortuguese = "Descrição em português"; + defaultSender = "noreply@example.com"; + auxStartDate = "25/12/2024"; + auxStartHour = "10:00"; + auxEndDate = "26/12/2024"; + auxEndHour = "18:30"; + int maxCandidates = 5; + int diffUTC = 3; + ElectionCategory category = ElectionCategory.STATUTORY; + + election = new Election(electionId); + election.setMigrationId(migrationId); + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + election.setMaxCandidates(maxCandidates); + election.setRevisionRequest(revisionRequest); + election.setDefaultSender(defaultSender); + election.setDiffUTC(diffUTC); + election.setAuxStartDate(auxStartDate); + election.setAuxStartHour(auxStartHour); + election.setAuxEndDate(auxEndDate); + election.setAuxEndHour(auxEndHour); + election.setCategory(ElectionCategory.STATUTORY); + election.setCandidates(createListCandidates()); + election.setUserVoters(createUserVoters()); + election.setAuditors(createAuditors()); + election.setElectionTemplates(createElectionEmailTemplatesList()); + election.setVotes(createVotesList()); + + List emails = new ArrayList<>(); + emails.add(new Email()); + election.setEmail(emails); + + election.setStartDate(startDate); + election.setEndDate(endDate); + election.setClosedDate(closedDate); + + assertNotNull(election); + + // Assertions to verify initialization + assertEquals(electionId, election.getElectionId()); + assertEquals(migrationId, election.getMigrationId()); + assertEquals(startDate, election.getStartDate()); + assertEquals(endDate, election.getEndDate()); + assertEquals(closedDate, election.getClosedDate()); + assertEquals(title, election.getTitleSpanish()); + assertEquals(title, election.getTitleEnglish()); + assertEquals(title, election.getTitlePortuguese()); + assertEquals(linkSpanish, election.getLinkSpanish()); + assertEquals(linkEnglish, election.getLinkEnglish()); + assertEquals(linkPortuguese, election.getLinkPortuguese()); + assertEquals(descriptionSpanish, election.getDescriptionSpanish()); + assertEquals(descriptionEnglish, election.getDescriptionEnglish()); + assertEquals(descriptionPortuguese, election.getDescriptionPortuguese()); + assertEquals(maxCandidates, election.getMaxCandidates()); + assertEquals(revisionRequest, election.isRevisionRequest()); + assertEquals(defaultSender, election.getDefaultSender()); + assertEquals(diffUTC, election.getDiffUTC()); + assertEquals(auxStartDate, election.getAuxStartDate()); + assertEquals(auxStartHour, election.getAuxStartHour()); + assertEquals(auxEndDate, election.getAuxEndDate()); + assertEquals(auxEndHour, election.getAuxEndHour()); + assertEquals(electionId, election.getElectionId()); + assertEquals(category, election.getCategory()); + assertFalse(election.isFinished()); + assertTrue(election.isStarted()); + assertTrue(election.isEnabledToVote()); + assertEquals(1, election.getCandidates().size()); + assertEquals(1, election.getUserVoters().size()); + assertEquals(1, election.getAuditors().size()); + assertEquals(1, election.getElectionTemplates().size()); + assertEquals(1, election.getVotes().size()); + assertEquals(1, election.getEmail().size()); + } + + public void testElectionDefaultConstructor() { + + long electionId = 76447L; + boolean migrated, resultLinkAvailable, auditorLinkAvailable, onlySp, electorsSet, candidatesSet, auditorsSet, randomOrderCandidates, closed, votingLinkAvailable; + migrated = true; + resultLinkAvailable = true; + auditorLinkAvailable = false; + onlySp = false; + electorsSet = true; + candidatesSet = true; + auditorsSet = false; + randomOrderCandidates = true; + closed = false; + votingLinkAvailable = true; + Date creationDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + String resultToken, resultLink; + resultToken = "result-token-123"; + resultLink = LinksUtils.buildAuditorResultsLink(resultToken); + + election = new Election(electionId); + election.setMigrated(migrated); + election.setCreationDate(creationDate); + election.setVotingLinkAvailable(votingLinkAvailable); + election.setResultLinkAvailable(resultLinkAvailable); + election.setAuditorLinkAvailable(auditorLinkAvailable); + election.setOnlySp(onlySp); + election.setResultToken(resultToken); + election.setElectorsSet(electorsSet); + election.setCandidatesSet(candidatesSet); + election.setAuditorsSet(auditorsSet); + election.setRandomOrderCandidates(randomOrderCandidates); + election.setClosed(closed); + election.setCategory(ElectionCategory.STATUTORY); + + assertNotNull(election); + + // Assertions to verify initialization + assertEquals(electionId, election.getElectionId()); + assertEquals(migrated, election.isMigrated()); + assertEquals(creationDate, election.getCreationDate()); + assertEquals(votingLinkAvailable, election.isVotingLinkAvailable()); + assertEquals(resultLinkAvailable, election.isResultLinkAvailable()); + assertEquals(auditorLinkAvailable, election.isAuditorLinkAvailable()); + assertEquals(onlySp, election.isOnlySp()); + assertEquals(resultToken, election.getResultToken()); + assertEquals(electorsSet, election.isElectorsSet()); + assertEquals(candidatesSet, election.isCandidatesSet()); + assertEquals(auditorsSet, election.isAuditorsSet()); + assertEquals(randomOrderCandidates, election.isRandomOrderCandidates()); + assertEquals(closed, election.isClosed()); + assertEquals(electionId, election.getElectionId()); + assertEquals(migrated, election.isMigrated()); + assertEquals(resultLink, election.getResultLink()); + } + + public void testCopyLanguageDescriptions() { + election = new Election(12345L); + + String descriptionSpanish = "Descripción en español"; + String descriptionEnglish = "Description in English"; + String descriptionPortuguese = "Descrição em português"; + + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + // Case 1: Language "EN" + election.copyLanguageDescriptions("EN"); + assertEquals(descriptionEnglish, election.getDescriptionSpanish()); + assertEquals(descriptionEnglish, election.getDescriptionPortuguese()); + assertEquals(descriptionEnglish, election.getDescriptionEnglish()); + + // Restore the descriptions to the next case + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + // Case 2: Language "PT" + election.copyLanguageDescriptions("PT"); + assertEquals(descriptionPortuguese, election.getDescriptionEnglish()); + assertEquals(descriptionPortuguese, election.getDescriptionSpanish()); + assertEquals(descriptionPortuguese, election.getDescriptionPortuguese()); + + // Restore the descriptions to the next case + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + // Case 3: Language "ES" or any other + election.copyLanguageDescriptions("ES"); + assertEquals(descriptionSpanish, election.getDescriptionEnglish()); + assertEquals(descriptionSpanish, election.getDescriptionPortuguese()); + assertEquals(descriptionSpanish, election.getDescriptionSpanish()); + + // Case 4: Language with mixed uppercase/lowercase ("eN", "pT", "es") + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + election.copyLanguageDescriptions("eN"); + assertEquals(descriptionEnglish, election.getDescriptionSpanish()); + assertEquals(descriptionEnglish, election.getDescriptionPortuguese()); + + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + election.copyLanguageDescriptions("pT"); + assertEquals(descriptionPortuguese, election.getDescriptionEnglish()); + assertEquals(descriptionPortuguese, election.getDescriptionSpanish()); + + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + election.copyLanguageDescriptions("Es"); + assertEquals(descriptionSpanish, election.getDescriptionEnglish()); + assertEquals(descriptionSpanish, election.getDescriptionPortuguese()); + } + + public void testCopyLanguageTitles() { + election = new Election(12345L); + + String titleSpanish = "Título en español"; + String titleEnglish = "English Title"; + String titlePortuguese = "Título em português"; + + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + // Case 1: Language "EN" + election.copyLanguageTitles("EN"); + assertEquals(titleEnglish, election.getTitleSpanish()); + assertEquals(titleEnglish, election.getTitlePortuguese()); + assertEquals(titleEnglish, election.getTitleEnglish()); + + // Restore the titles to the next case + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + // Case 2: Language "PT" + election.copyLanguageTitles("PT"); + assertEquals(titlePortuguese, election.getTitleEnglish()); + assertEquals(titlePortuguese, election.getTitleSpanish()); + assertEquals(titlePortuguese, election.getTitlePortuguese()); + + // Restore the titles to the next case + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + // Case 3: Language "ES" or any other + election.copyLanguageTitles("ES"); + assertEquals(titleSpanish, election.getTitleEnglish()); + assertEquals(titleSpanish, election.getTitlePortuguese()); + assertEquals(titleSpanish, election.getTitleSpanish()); + + // Case 4: Language with mixed uppercase/lowercase ("eN", "pT", "es") + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + election.copyLanguageTitles("eN"); + assertEquals(titleEnglish, election.getTitleSpanish()); + assertEquals(titleEnglish, election.getTitlePortuguese()); + + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + election.copyLanguageTitles("pT"); + assertEquals(titlePortuguese, election.getTitleEnglish()); + assertEquals(titlePortuguese, election.getTitleSpanish()); + + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + election.copyLanguageTitles("Es"); + assertEquals(titleSpanish, election.getTitleEnglish()); + assertEquals(titleSpanish, election.getTitlePortuguese()); + } + + public void testCopyLanguageURLs() { + election = new Election(12345L); + + String linkSpanish = "Enlace en español"; + String linkEnglish = "English link"; + String linkPortuguese = "Link em português"; + + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + // Case 1: Language "EN" + election.copyLanguageURLs("EN"); + assertEquals(linkEnglish, election.getLinkSpanish()); + assertEquals(linkEnglish, election.getLinkPortuguese()); + assertEquals(linkEnglish, election.getLinkEnglish()); + + // Restore the links to the next case + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + // Case 2: Language "PT" + election.copyLanguageURLs("PT"); + assertEquals(linkPortuguese, election.getLinkEnglish()); + assertEquals(linkPortuguese, election.getLinkSpanish()); + assertEquals(linkPortuguese, election.getLinkPortuguese()); + + // Restore the links to the next case + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + // Case 3: Language "ES" or any other + election.copyLanguageURLs("ES"); + assertEquals(linkSpanish, election.getLinkEnglish()); + assertEquals(linkSpanish, election.getLinkPortuguese()); + assertEquals(linkSpanish, election.getLinkSpanish()); + + // Case 4: Language with mixed uppercase/lowercase ("eN", "pT", "es") + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + election.copyLanguageURLs("eN"); + assertEquals(linkEnglish, election.getLinkSpanish()); + assertEquals(linkEnglish, election.getLinkPortuguese()); + + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + election.copyLanguageURLs("pT"); + assertEquals(linkPortuguese, election.getLinkEnglish()); + assertEquals(linkPortuguese, election.getLinkSpanish()); + + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + + election.copyLanguageURLs("Es"); + assertEquals(linkSpanish, election.getLinkEnglish()); + assertEquals(linkSpanish, election.getLinkPortuguese()); + } + + public void testIsEnabledToVote_DateBetween_StartDate_EndDate() { + // Scenario: Current date is between startDate and endDate + election = new Election(); + election.setStartDate(new Date(System.currentTimeMillis() - 1000)); // 1 second ago + election.setEndDate(new Date(System.currentTimeMillis() + 100000)); // In the future + + // Voting link is available + election.setVotingLinkAvailable(true); + assertTrue(election.isEnabledToVote()); + + // Voting link is unavailable + election.setVotingLinkAvailable(false); + assertFalse(election.isEnabledToVote()); + } + + public void testIsEnabledToVote_NotStarted() { + // Scenario: Current date is before startDate + election = new Election(); + election.setStartDate(new Date(System.currentTimeMillis() + 100000)); // In the future + election.setEndDate(new Date(System.currentTimeMillis() + 200000)); // Further in the future + + // Voting link is available + election.setVotingLinkAvailable(true); + assertFalse(election.isEnabledToVote()); + + // Voting link is unavailable + election.setVotingLinkAvailable(false); + assertFalse(election.isEnabledToVote()); + } + + public void testIsEnabledToVote_Finished() { + // Scenario: Current date is after endDate + election = new Election(); + election.setStartDate(new Date(System.currentTimeMillis() - 200000)); // In the past + election.setEndDate(new Date(System.currentTimeMillis() - 1000)); // 1 second ago + + election.setVotingLinkAvailable(true); + assertFalse(election.isEnabledToVote()); } + + public void testIsEnabledToVote_AllConditionsFalse() { + // Scenario: Current date is before startDate, endDate is in the past, and voting link is unavailable + election = new Election(); + election.setStartDate(new Date(System.currentTimeMillis() + 100000)); // In the future + election.setEndDate(new Date(System.currentTimeMillis() - 1000)); // 1 second ago + + election.setVotingLinkAvailable(false); + assertFalse(election.isEnabledToVote()); + } + + public void testGetDescriptions() { + + String descriptionSpanish = "Descripción en español"; + String descriptionEnglish = "English Description"; + String descriptionPortuguese = "Descrição em português"; + + election = new Election(); + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + + assertEquals(descriptionEnglish, election.getDescription("en")); + assertEquals(descriptionEnglish, election.getDescription("english")); + + assertEquals(descriptionPortuguese, election.getDescription("pt")); + assertEquals(descriptionPortuguese, election.getDescription("portuguese")); + + assertEquals(descriptionSpanish, election.getDescription("es")); + assertEquals(descriptionSpanish, election.getDescription("spanish")); + assertEquals(descriptionSpanish, election.getDescription("other")); + } + + public void testGetTitles() { + + String titleSpanish = "Título en español"; + String titleEnglish = "English Title"; + String titlePortuguese = "Título em português"; + + election = new Election(); + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + + assertEquals(titleEnglish, election.getTitle("en")); + assertEquals(titleEnglish, election.getTitle("english")); + + assertEquals(titlePortuguese, election.getTitle("pt")); + assertEquals(titlePortuguese, election.getTitle("portuguese")); + + assertEquals(titleSpanish, election.getTitle("es")); + assertEquals(titleSpanish, election.getTitle("spanish")); + assertEquals(titleSpanish, election.getTitle("other")); + } + } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/EmailHistoryTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/EmailHistoryTest.java index ca3c3fa..6129c56 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/EmailHistoryTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/EmailHistoryTest.java @@ -1,5 +1,7 @@ package net.lacnic.elections.domain; +import java.util.Date; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; @@ -9,6 +11,7 @@ import junit.framework.TestSuite; import net.lacnic.AssertAnnotations; import net.lacnic.ReflectTool; +import net.lacnic.elections.utils.ObjectsFactory; public class EmailHistoryTest extends TestCase { /** @@ -18,34 +21,21 @@ public static Test suite() { return new TestSuite(EmailHistoryTest.class); } - public void testEmailHistory() { + public void testEmailHistoryAnnotations() { AssertAnnotations.assertType(EmailHistory.class, Entity.class); // fields AssertAnnotations.assertField(EmailHistory.class, "emailHistoryId", Id.class, Column.class); - AssertAnnotations.assertField(EmailHistory.class, "recipients", Column.class); - AssertAnnotations.assertField(EmailHistory.class, "sender", Column.class); - AssertAnnotations.assertField(EmailHistory.class, "cc", Column.class); - AssertAnnotations.assertField(EmailHistory.class, "bcc", Column.class); - AssertAnnotations.assertField(EmailHistory.class, "subject", Column.class); - AssertAnnotations.assertField(EmailHistory.class, "body", Column.class); - AssertAnnotations.assertField(EmailHistory.class, "sent", Column.class); - AssertAnnotations.assertField(EmailHistory.class, "createdDate", Column.class); - AssertAnnotations.assertField(EmailHistory.class, "templateType", Column.class); - AssertAnnotations.assertField(EmailHistory.class, "electionId", Column.class); - - // metodos - AssertAnnotations.assertMethod(EmailHistory.class, "getEmailHistoryId"); - AssertAnnotations.assertMethod(EmailHistory.class, "getRecipients"); - AssertAnnotations.assertMethod(EmailHistory.class, "getCc"); - AssertAnnotations.assertMethod(EmailHistory.class, "getBcc"); - AssertAnnotations.assertMethod(EmailHistory.class, "getSubject"); - AssertAnnotations.assertMethod(EmailHistory.class, "getBody"); - AssertAnnotations.assertMethod(EmailHistory.class, "getSent"); - AssertAnnotations.assertMethod(EmailHistory.class, "getSender"); - AssertAnnotations.assertMethod(EmailHistory.class, "getElectionId"); - AssertAnnotations.assertMethod(EmailHistory.class, "getTemplateType"); - AssertAnnotations.assertMethod(EmailHistory.class, "getCreatedDate"); + + String[] columnFields = { "recipients", "sender", "cc", "bcc", "subject", "body", "sent", "createdDate", "templateType", "electionId" }; + for (String field : columnFields) { + AssertAnnotations.assertField(EmailHistory.class, field, Column.class); + } + + String[] methods = { "getEmailHistoryId", "getRecipients", "getCc", "getBcc", "getSubject", "getBody", "getSent", "getSender", "getElectionId", "getTemplateType", "getCreatedDate" }; + for (String method : methods) { + AssertAnnotations.assertMethod(EmailHistory.class, method); + } // class annotations Entity a = ReflectTool.getClassAnnotation(EmailHistory.class, Entity.class); @@ -76,4 +66,65 @@ public void testEmailHistory() { assertEquals("election_id", c.name()); } + public void testEmailHistory() { + Email email = ObjectsFactory.createEmail(); + EmailHistory emailHistory = new EmailHistory(email); + + assertNotNull(emailHistory); + + assertEquals(email.getEmailId(), emailHistory.getEmailHistoryId()); + assertEquals(email.getRecipients(), emailHistory.getRecipients()); + assertEquals(email.getSender(), emailHistory.getSender()); + assertEquals(email.getCc(), emailHistory.getCc()); + assertEquals(email.getBcc(), emailHistory.getBcc()); + assertEquals(email.getSubject(), emailHistory.getSubject()); + assertEquals(email.getBody(), emailHistory.getBody()); + assertEquals(email.getSent(), emailHistory.getSent()); + assertEquals(email.getCreatedDate(), emailHistory.getCreatedDate()); + assertEquals(email.getTemplateType(), emailHistory.getTemplateType()); + assertEquals(email.getElection().getElectionId(), emailHistory.getElectionId()); + } + + public void testEmailHistoryDefaultConstructor() { + Long emailHistoryId = 1L; + String recipients = "recipient@example.com"; + String sender = "sender@example.com"; + String cc = "cc@example.com"; + String bcc = "bcc@example.com"; + String subject = "Test Subject"; + String body = "This is the email body."; + Boolean sent = true; + Date createdDate = new Date(); + String templateType = "TestTemplate"; + long electionId = 12345L; + + EmailHistory emailHistory = new EmailHistory(); + + assertNotNull(emailHistory); + + emailHistory.setEmailHistoryId(emailHistoryId); + emailHistory.setRecipients(recipients); + emailHistory.setSender(sender); + emailHistory.setCc(cc); + emailHistory.setBcc(bcc); + emailHistory.setSubject(subject); + emailHistory.setBody(body); + emailHistory.setSent(sent); + emailHistory.setCreatedDate(createdDate); + emailHistory.setTemplateType(templateType); + emailHistory.setElectionId(electionId); + + assertEquals(emailHistoryId, emailHistory.getEmailHistoryId()); + assertEquals(recipients, emailHistory.getRecipients()); + assertEquals(sender, emailHistory.getSender()); + assertEquals(cc, emailHistory.getCc()); + assertEquals(bcc, emailHistory.getBcc()); + assertEquals(subject, emailHistory.getSubject()); + assertEquals(body, emailHistory.getBody()); + assertEquals(sent, emailHistory.getSent()); + assertEquals(createdDate, emailHistory.getCreatedDate()); + assertEquals(templateType, emailHistory.getTemplateType()); + assertEquals(electionId, emailHistory.getElectionId()); + } + } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/EmailTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/EmailTest.java index 38dd017..cf5d5bd 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/EmailTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/EmailTest.java @@ -13,6 +13,7 @@ import junit.framework.TestSuite; import net.lacnic.AssertAnnotations; import net.lacnic.ReflectTool; +import net.lacnic.elections.utils.ObjectsFactory; public class EmailTest extends TestCase { /** @@ -22,41 +23,32 @@ public static Test suite() { return new TestSuite(EmailTest.class); } - public void testEmail() { + public void testEmailAnnotations() { AssertAnnotations.assertType(Email.class, Entity.class); // fields AssertAnnotations.assertField(Email.class, "emailId", Id.class, GeneratedValue.class, SequenceGenerator.class, Column.class); - AssertAnnotations.assertField(Email.class, "recipients", Column.class); - AssertAnnotations.assertField(Email.class, "sender", Column.class); - AssertAnnotations.assertField(Email.class, "cc", Column.class); - AssertAnnotations.assertField(Email.class, "bcc", Column.class); - AssertAnnotations.assertField(Email.class, "subject", Column.class); - AssertAnnotations.assertField(Email.class, "body", Column.class); - AssertAnnotations.assertField(Email.class, "sent", Column.class); - AssertAnnotations.assertField(Email.class, "createdDate", Column.class); - AssertAnnotations.assertField(Email.class, "templateType", Column.class); AssertAnnotations.assertField(Email.class, "election", JoinColumn.class, ManyToOne.class); - // metodos - AssertAnnotations.assertMethod(Email.class, "getEmailId"); - AssertAnnotations.assertMethod(Email.class, "getRecipients"); - AssertAnnotations.assertMethod(Email.class, "getCc"); - AssertAnnotations.assertMethod(Email.class, "getBcc"); - AssertAnnotations.assertMethod(Email.class, "getSubject"); - AssertAnnotations.assertMethod(Email.class, "getBody"); - AssertAnnotations.assertMethod(Email.class, "getSent"); - AssertAnnotations.assertMethod(Email.class, "getSender"); - AssertAnnotations.assertMethod(Email.class, "getElection"); - AssertAnnotations.assertMethod(Email.class, "getTemplateType"); - AssertAnnotations.assertMethod(Email.class, "getCreatedDate"); + String[] columnFields = { "recipients", "sender", "cc", "bcc", "subject", "body", "sent", "createdDate", "templateType" }; + for (String field : columnFields) { + AssertAnnotations.assertField(Email.class, field, Column.class); + } + + String[] methods = { "getEmailId", "getRecipients", "getCc", "getBcc", "getSubject", "getBody", "getSent", "getSender", "getElection", "getTemplateType", "getCreatedDate" }; + for (String method : methods) { + AssertAnnotations.assertMethod(Email.class, method); + } // class annotations Entity a = ReflectTool.getClassAnnotation(Email.class, Entity.class); assertEquals("", a.name()); - Column c; JoinColumn jc; + jc = ReflectTool.getFieldAnnotation(Email.class, "election", JoinColumn.class); + assertEquals("election_id", jc.name()); + + Column c; c = ReflectTool.getFieldAnnotation(Email.class, "emailId", Column.class); assertEquals("email_id", c.name()); c = ReflectTool.getFieldAnnotation(Email.class, "recipients", Column.class); @@ -77,9 +69,19 @@ public void testEmail() { assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(Email.class, "templateType", Column.class); assertEquals("", c.name()); - jc = ReflectTool.getFieldAnnotation(Email.class, "election", JoinColumn.class); - assertEquals("election_id", jc.name()); + } + + public void testEmail() { + + String cc = "CC test", bcc = "BCC test"; + Email email = ObjectsFactory.createEmail(); + assertNotNull(email); + + email.setCc(cc); + email.setBcc(bcc); + assertEquals(cc, email.getCc()); + assertEquals(bcc, email.getBcc()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/EnumsTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/EnumsTest.java new file mode 100644 index 0000000..3cece74 --- /dev/null +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/EnumsTest.java @@ -0,0 +1,60 @@ +package net.lacnic.elections.domain; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +public class EnumsTest extends TestCase { + /** + * @return the suite of tests being tested + */ + public static Test suite() { + return new TestSuite(EnumsTest.class); + } + + public void testEnumActivityType() { + ActivityType[] activityTypes = ActivityType.values(); + + assertNotNull(activityTypes); + assertTrue(activityTypes.length > 0); + + // Verify that all values are unique + assertEquals(activityTypes.length, java.util.stream.Stream.of(activityTypes).distinct().count()); + } + + public void testEnumElectionCategory() { + ElectionCategory[] electionCategory = ElectionCategory.values(); + + assertNotNull(electionCategory); + assertTrue(electionCategory.length > 0); + + // Verify that all values are unique + assertEquals(electionCategory.length, java.util.stream.Stream.of(electionCategory).distinct().count()); + } + + public void testEnumRecipientType() { + RecipientType[] recipientType = RecipientType.values(); + + assertNotNull(recipientType); + assertTrue(recipientType.length > 0); + + // Verify that all values are unique + assertEquals(recipientType.length, java.util.stream.Stream.of(recipientType).distinct().count()); + } + + public void testEnumRecipientTypeMethod() { + for (RecipientType type : RecipientType.values()) { + // Check that the valueOf() method returns the correct value + assertEquals(type, RecipientType.valueOf(type.name())); + } + } + + public void testEnumRecipientTypeGetDescription() { + for (RecipientType type : RecipientType.values()) { + // Verify that each enum value has the correct description + assertNotNull(type.getDescription()); + assertFalse(type.getDescription().isEmpty()); + } + } + +} diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/IpAccessTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/IpAccessTest.java index e13fde2..6b876b2 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/IpAccessTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/IpAccessTest.java @@ -1,5 +1,7 @@ package net.lacnic.elections.domain; +import java.util.Date; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -20,7 +22,7 @@ public static Test suite() { return new TestSuite(IpAccessTest.class); } - public void testIpAccess() { + public void testIpAccessAnnotations() { AssertAnnotations.assertType(IpAccess.class, Entity.class); // fields @@ -52,7 +54,30 @@ public void testIpAccess() { assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(IpAccess.class, "firstAttemptDate", Column.class); assertEquals("", c.name()); + } + + public void testIpAccess() { + long ipAccessId = 1L; + int attemptCount = 5; + String ip = "192.168.1.1"; + Date firstAttemptDate = new Date(); + Date lastAttemptDate = new Date(); + + IpAccess ipAccess = new IpAccess(); + + assertNotNull(ipAccess); + + ipAccess.setIpAccessId(ipAccessId); + ipAccess.setAttemptCount(attemptCount); + ipAccess.setIp(ip); + ipAccess.setFirstAttemptDate(firstAttemptDate); + ipAccess.setLastAttemptDate(lastAttemptDate); + assertEquals(ipAccessId, ipAccess.getIpAccessId()); + assertEquals(attemptCount, ipAccess.getAttemptCount()); + assertEquals(ip, ipAccess.getIp()); + assertEquals(firstAttemptDate, ipAccess.getFirstAttemptDate()); + assertEquals(lastAttemptDate, ipAccess.getLastAttemptDate()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/JointElectionTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/JointElectionTest.java index b68df68..68b105a 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/JointElectionTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/JointElectionTest.java @@ -20,7 +20,7 @@ public static Test suite() { return new TestSuite(JointElectionTest.class); } - public void testJointElection() { + public void testJointElectionAnnotations() { AssertAnnotations.assertType(JointElection.class, Entity.class); // fields @@ -43,7 +43,22 @@ public void testJointElection() { assertEquals("electiona_id", c.name()); c = ReflectTool.getFieldAnnotation(JointElection.class, "idElectionB", Column.class); assertEquals("electionb_id", c.name()); + } + + public void testJointElection() { + + long jointElectionId = 345L, idElectionA = 134L, idElectionB = 978L; + JointElection jointElection = new JointElection(); + + assertNotNull(jointElection); + + jointElection.setJointElectionId(jointElectionId); + jointElection.setIdElectionA(idElectionA); + jointElection.setIdElectionB(idElectionB); + assertEquals(jointElectionId, jointElection.getJointElectionId()); + assertEquals(idElectionA, jointElection.getIdElectionA()); + assertEquals(idElectionB, jointElection.getIdElectionB()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/ParameterTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/ParameterTest.java index d7cfe7f..855f11b 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/ParameterTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/ParameterTest.java @@ -18,7 +18,7 @@ public static Test suite() { return new TestSuite(ParameterTest.class); } - public void testParameter() { + public void testParameterAnnotations() { AssertAnnotations.assertType(Parameter.class, Entity.class); // fields @@ -37,4 +37,18 @@ public void testParameter() { c = ReflectTool.getFieldAnnotation(Parameter.class, "value", Column.class); assertEquals("", c.name()); } + + public void testParameter() { + + String key = "key", value = "value"; + Parameter parameter = new Parameter(); + + assertNotNull(parameter); + + parameter.setKey(key); + parameter.setValue(value); + + assertEquals(key, parameter.getKey()); + assertEquals(value, parameter.getValue()); + } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/UserAdminTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/UserAdminTest.java index f139c17..77335a2 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/UserAdminTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/UserAdminTest.java @@ -18,7 +18,7 @@ public static Test suite() { return new TestSuite(UserAdminTest.class); } - public void testUserAdmin() { + public void testUserAdminAnnotations() { AssertAnnotations.assertType(UserAdmin.class, Entity.class); // fields @@ -46,7 +46,28 @@ public void testUserAdmin() { assertEquals("email", c.name()); c = ReflectTool.getFieldAnnotation(UserAdmin.class, "authorizedElectionId", Column.class); assertEquals("authorizedelection_id", c.name()); + } + + public void testUserAdmin() { + + String userAdminId = "admin123"; + String password = "SECUREPASSWORD"; + String email = "admin@example.com"; + Long authorizedElectionId = 1001L; + + UserAdmin userAdmin = new UserAdmin(); + + assertNotNull(userAdmin); + + userAdmin.setUserAdminId(userAdminId); + userAdmin.setPassword(password); + userAdmin.setEmail(email); + userAdmin.setAuthorizedElectionId(authorizedElectionId); + assertEquals(userAdminId, userAdmin.getUserAdminId()); + assertEquals(password, userAdmin.getPassword()); + assertEquals(email, userAdmin.getEmail()); + assertEquals(authorizedElectionId, userAdmin.getAuthorizedElectionId()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/UserVoterTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/UserVoterTest.java index c761ccf..b9a82ef 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/UserVoterTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/UserVoterTest.java @@ -1,5 +1,10 @@ package net.lacnic.elections.domain; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -10,11 +15,14 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Transient; +import org.joda.time.DateTime; + import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import net.lacnic.AssertAnnotations; import net.lacnic.ReflectTool; +import net.lacnic.elections.utils.LinksUtils; public class UserVoterTest extends TestCase { /** @@ -24,56 +32,42 @@ public static Test suite() { return new TestSuite(UserVoterTest.class); } - public void testUserVoter() { + public void testUserVoterAnnotations() { AssertAnnotations.assertType(UserVoter.class, Entity.class); // fields AssertAnnotations.assertField(UserVoter.class, "userVoterId", Id.class, GeneratedValue.class, SequenceGenerator.class, Column.class); - AssertAnnotations.assertField(UserVoter.class, "migrationId", Column.class); AssertAnnotations.assertField(UserVoter.class, "election", JoinColumn.class, ManyToOne.class); - AssertAnnotations.assertField(UserVoter.class, "voted", Column.class); - AssertAnnotations.assertField(UserVoter.class, "voteToken", Column.class); - AssertAnnotations.assertField(UserVoter.class, "voteAmount", Column.class); - AssertAnnotations.assertField(UserVoter.class, "name", Column.class); - AssertAnnotations.assertField(UserVoter.class, "mail", Column.class); - AssertAnnotations.assertField(UserVoter.class, "country", Column.class); - AssertAnnotations.assertField(UserVoter.class, "language", Column.class); - AssertAnnotations.assertField(UserVoter.class, "orgID", Column.class); - AssertAnnotations.assertField(UserVoter.class, "voteDate", Column.class); AssertAnnotations.assertField(UserVoter.class, "votes", OneToMany.class); AssertAnnotations.assertField(UserVoter.class, "codesSummary", Transient.class); - // metodos - AssertAnnotations.assertMethod(UserVoter.class, "getUserVoterId"); - AssertAnnotations.assertMethod(UserVoter.class, "getName"); - AssertAnnotations.assertMethod(UserVoter.class, "getMail"); - AssertAnnotations.assertMethod(UserVoter.class, "getCountry"); - AssertAnnotations.assertMethod(UserVoter.class, "getLanguage"); - AssertAnnotations.assertMethod(UserVoter.class, "getOrgID"); - AssertAnnotations.assertMethod(UserVoter.class, "isVoted"); - AssertAnnotations.assertMethod(UserVoter.class, "getVoteToken"); - AssertAnnotations.assertMethod(UserVoter.class, "getVoteAmount"); - AssertAnnotations.assertMethod(UserVoter.class, "getElection"); - AssertAnnotations.assertMethod(UserVoter.class, "getVoterInformation"); - AssertAnnotations.assertMethod(UserVoter.class, "getCompleteVoterInformation"); - AssertAnnotations.assertMethod(UserVoter.class, "getCodesSummary"); - AssertAnnotations.assertMethod(UserVoter.class, "getVoteLink"); - AssertAnnotations.assertMethod(UserVoter.class, "getVoteDate"); - AssertAnnotations.assertMethod(UserVoter.class, "getMigrationId"); + String[] columnFields = { "migrationId", "voted", "voteToken", "voteAmount", "name", "mail", "country", "language", "orgID", "voteDate" }; + for (String field : columnFields) { + AssertAnnotations.assertField(UserVoter.class, field, Column.class); + } + + String[] methods = { "getUserVoterId", "getName", "getMail", "getCountry", "getLanguage", "getOrgID", "isVoted", "getVoteToken", "getVoteAmount", "getElection", "getVoterInformation", "getCompleteVoterInformation", "getCodesSummary", "getVoteLink", "getVoteDate", "getMigrationId" }; + for (String method : methods) { + AssertAnnotations.assertMethod(UserVoter.class, method); + } // class annotations Entity a = ReflectTool.getClassAnnotation(UserVoter.class, Entity.class); assertEquals("", a.name()); - Column c; JoinColumn jc; + jc = ReflectTool.getFieldAnnotation(UserVoter.class, "election", JoinColumn.class); + assertEquals("election_id", jc.name()); + OneToMany oa; + oa = ReflectTool.getFieldAnnotation(UserVoter.class, "votes", OneToMany.class); + assertEquals("userVoter", oa.mappedBy()); + + Column c; c = ReflectTool.getFieldAnnotation(UserVoter.class, "userVoterId", Column.class); assertEquals("uservoter_id", c.name()); c = ReflectTool.getFieldAnnotation(UserVoter.class, "migrationId", Column.class); assertEquals("migration_id", c.name()); - jc = ReflectTool.getFieldAnnotation(UserVoter.class, "election", JoinColumn.class); - assertEquals("election_id", jc.name()); c = ReflectTool.getFieldAnnotation(UserVoter.class, "voted", Column.class); assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(UserVoter.class, "voteToken", Column.class); @@ -92,9 +86,151 @@ public void testUserVoter() { assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(UserVoter.class, "voteDate", Column.class); assertEquals("", c.name()); - oa = ReflectTool.getFieldAnnotation(UserVoter.class, "votes", OneToMany.class); - assertEquals("userVoter", oa.mappedBy()); + } + + public void testUserVoter() { + + long userVoterId = 1L; + Long migrationId = 100L; + boolean voted = true; + int voteAmount = 3; + String name = "John Doe"; + String mail = "john.doe@example.com"; + String country = "Uruguay"; + String language = "Spanish"; + String orgID = "ORG001"; + Date voteDate = new DateTime(2024, 12, 29, 16, 52).toDate(); + int version = 1; + String codesSummary = "Code1, Code2"; + List votes = new ArrayList<>(); + + Election election = new Election(); + election.setElectionId(123L); + election.setTitleSpanish("Election in Spanish"); + election.setTitleEnglish("Election in English"); + election.setTitlePortuguese("Election in Portuguese"); + + String voteToken = "result-token-123"; + String resultLink = LinksUtils.buildAuditorResultsLink(voteToken); + + UserVoter userVoter = new UserVoter(); + + assertNotNull(userVoter); + + userVoter.setUserVoterId(userVoterId); + userVoter.setMigrationId(migrationId); + userVoter.setElection(election); + userVoter.setVoted(voted); + userVoter.setVoteAmount(voteAmount); + userVoter.setName(name); + userVoter.setMail(mail); + userVoter.setCountry(country); + userVoter.setLanguage(language); + userVoter.setOrgID(orgID); + userVoter.setVoteDate(voteDate); + userVoter.setVersion(version); + userVoter.setVotes(votes); + userVoter.setCodesSummary(codesSummary); + userVoter.setVoteToken(voteToken); + + assertEquals(userVoterId, userVoter.getUserVoterId()); + assertEquals(migrationId, userVoter.getMigrationId()); + assertEquals(voted, userVoter.isVoted()); + assertEquals(voteAmount, userVoter.getVoteAmount().intValue()); + assertEquals(name, userVoter.getName()); + assertEquals(mail, userVoter.getMail()); + assertEquals(country, userVoter.getCountry()); + assertEquals(language, userVoter.getLanguage()); + assertEquals(orgID, userVoter.getOrgID()); + assertEquals(voteDate, userVoter.getVoteDate()); + assertEquals(version, userVoter.getVersion()); + assertEquals(votes, userVoter.getVotes()); + assertEquals(codesSummary, userVoter.getCodesSummary()); + assertEquals(election, userVoter.getElection()); + assertEquals(voteToken, userVoter.getVoteToken()); + assertEquals(resultLink, userVoter.getVoteLink()); + } + + public void testGetVoterInformation() { + UserVoter userVoter = new UserVoter(); + userVoter.setName("John Doe"); + + // Test when OrgID is null + userVoter.setOrgID(null); + assertEquals("John Doe", userVoter.getVoterInformation()); + + // Test when OrgID is empty + userVoter.setOrgID(""); + assertEquals("John Doe", userVoter.getVoterInformation()); + + // Test when OrgID is not empty + userVoter.setOrgID("12345"); + assertEquals("John Doe - 12345", userVoter.getVoterInformation()); + } + + public void testGetCompleteVoterInformation() { + UserVoter voter = new UserVoter(); + voter.setName("John Doe"); + + // Test when all optional fields are null + voter.setMail(null); + voter.setOrgID(null); + voter.setCountry(null); + assertEquals("John Doe", voter.getCompleteVoterInformation()); + + // Test when some optional fields are empty + voter.setMail(""); + voter.setOrgID(""); + voter.setCountry(""); + assertEquals("John Doe", voter.getCompleteVoterInformation()); + + // Test when all optional fields are filled + voter.setMail("john.doe@example.com"); + voter.setOrgID("12345"); + voter.setCountry("USA"); + assertEquals("John Doe (john.doe@example.com) - 12345 - USA", voter.getCompleteVoterInformation()); + + // Test when only email is filled + voter.setMail("john.doe@example.com"); + voter.setOrgID(null); + voter.setCountry(null); + assertEquals("John Doe (john.doe@example.com) ", voter.getCompleteVoterInformation()); + + // Test when only OrgID is filled + voter.setMail(null); + voter.setOrgID("12345"); + voter.setCountry(null); + assertEquals("John Doe - 12345", voter.getCompleteVoterInformation()); + + // Test when only Country is filled + voter.setMail(null); + voter.setOrgID(null); + voter.setCountry("USA"); + assertEquals("John Doe - USA", voter.getCompleteVoterInformation()); + } + + public void testSetCodesSummary() { + // Create votes + Vote vote1 = new Vote(); + Candidate candidate1 = new Candidate(); + candidate1.setName("Candidate A"); + vote1.setCode("Code1"); + vote1.setCandidate(candidate1); + + Vote vote2 = new Vote(); + Candidate candidate2 = new Candidate(); + candidate2.setName("Candidate B"); + vote2.setCode("Code2"); + vote2.setCandidate(candidate2); + + List votes = Arrays.asList(vote1, vote2); + + UserVoter userVoter = new UserVoter(); + userVoter.setCodesSummary(votes); + // Verify the codesSummary + String expectedSummary = "Code1 / Candidate A\nCode2 / Candidate B\n"; + assertEquals(expectedSummary, userVoter.getCodesSummary()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/domain/VoteTest.java b/elections-ejb/src/test/java/net/lacnic/elections/domain/VoteTest.java index 5b13a61..5c4e500 100644 --- a/elections-ejb/src/test/java/net/lacnic/elections/domain/VoteTest.java +++ b/elections-ejb/src/test/java/net/lacnic/elections/domain/VoteTest.java @@ -1,5 +1,7 @@ package net.lacnic.elections.domain; +import java.util.Date; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -13,6 +15,7 @@ import junit.framework.TestSuite; import net.lacnic.AssertAnnotations; import net.lacnic.ReflectTool; +import net.lacnic.elections.utils.ObjectsFactory; public class VoteTest extends TestCase { /** @@ -22,7 +25,7 @@ public static Test suite() { return new TestSuite(VoteTest.class); } - public void testVote() { + public void testVoteAnnotations() { AssertAnnotations.assertType(Vote.class, Entity.class); // fields @@ -47,8 +50,15 @@ public void testVote() { Entity a = ReflectTool.getClassAnnotation(Vote.class, Entity.class); assertEquals("", a.name()); - Column c; JoinColumn jc; + jc = ReflectTool.getFieldAnnotation(Vote.class, "candidate", JoinColumn.class); + assertEquals("candidate_id", jc.name()); + jc = ReflectTool.getFieldAnnotation(Vote.class, "election", JoinColumn.class); + assertEquals("election_id", jc.name()); + jc = ReflectTool.getFieldAnnotation(Vote.class, "userVoter", JoinColumn.class); + assertEquals("uservoter_id", jc.name()); + + Column c; c = ReflectTool.getFieldAnnotation(Vote.class, "voteId", Column.class); assertEquals("vote_id", c.name()); c = ReflectTool.getFieldAnnotation(Vote.class, "code", Column.class); @@ -57,13 +67,38 @@ public void testVote() { assertEquals("", c.name()); c = ReflectTool.getFieldAnnotation(Vote.class, "voteDate", Column.class); assertEquals("", c.name()); - jc = ReflectTool.getFieldAnnotation(Vote.class, "candidate", JoinColumn.class); - assertEquals("candidate_id", jc.name()); - jc = ReflectTool.getFieldAnnotation(Vote.class, "election", JoinColumn.class); - assertEquals("election_id", jc.name()); - jc = ReflectTool.getFieldAnnotation(Vote.class, "userVoter", JoinColumn.class); - assertEquals("uservoter_id", jc.name()); + } + + public void testVote() { + + long voteId = 1L; + String code = "VOTE123"; + String ip = "192.168.1.2"; + Date voteDate = new Date(); + + Candidate candidate = ObjectsFactory.createCandidate(); + UserVoter userVoter = ObjectsFactory.createUserVoter(); + Election election = new Election(); + + Vote vote = new Vote(); + + assertNotNull(vote); + + vote.setVoteId(voteId); + vote.setCode(code); + vote.setIp(ip); + vote.setVoteDate(voteDate); + vote.setCandidate(candidate); + vote.setElection(election); + vote.setUserVoter(userVoter); + assertEquals(voteId, vote.getVoteId()); + assertEquals(code, vote.getCode()); + assertEquals(ip, vote.getIp()); + assertEquals(voteDate, vote.getVoteDate()); + assertEquals(candidate, vote.getCandidate()); + assertEquals(election, vote.getElection()); + assertEquals(userVoter, vote.getUserVoter()); } } diff --git a/elections-ejb/src/test/java/net/lacnic/elections/utils/ObjectsFactory.java b/elections-ejb/src/test/java/net/lacnic/elections/utils/ObjectsFactory.java new file mode 100644 index 0000000..ec4d37d --- /dev/null +++ b/elections-ejb/src/test/java/net/lacnic/elections/utils/ObjectsFactory.java @@ -0,0 +1,344 @@ +package net.lacnic.elections.utils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.joda.time.DateTime; + +import net.lacnic.elections.domain.Auditor; +import net.lacnic.elections.domain.Candidate; +import net.lacnic.elections.domain.Commissioner; +import net.lacnic.elections.domain.Election; +import net.lacnic.elections.domain.ElectionCategory; +import net.lacnic.elections.domain.ElectionEmailTemplate; +import net.lacnic.elections.domain.ElectionLight; +import net.lacnic.elections.domain.Email; +import net.lacnic.elections.domain.UserVoter; +import net.lacnic.elections.domain.Vote; + +public class ObjectsFactory { + + public static Email createEmail() { + + long electionId = 76447L; + Election election = createElection(electionId); + + Email email = new Email(); + email.setEmailId(1L); + email.setRecipients("example@example.com, other@example.com"); + email.setSender("sender@example.com"); + email.setSubject("Asunto del correo"); + email.setBody("Cuerpo del correo con contenido de prueba."); + email.setSent(false); + email.setCreatedDate(new Date()); + email.setTemplateType("NOTIFICATION"); + email.setElection(election); + + return email; + } + + public static Election createElection(long electionId) { + Long migrationId = 54321L; + boolean migrated = true; + Date creationDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + String titleSpanish = "Elección de prueba en español"; + String titleEnglish = "Test Election in English"; + String titlePortuguese = "Eleições de teste em português"; + String linkSpanish = "http://example.com/es"; + String linkEnglish = "http://example.com/en"; + String linkPortuguese = "http://example.com/pt"; + String descriptionSpanish = "Descripción en español"; + String descriptionEnglish = "Description in English"; + String descriptionPortuguese = "Descrição em português"; + int maxCandidates = 5; + boolean votingLinkAvailable = true; + boolean resultLinkAvailable = true; + boolean auditorLinkAvailable = false; + boolean revisionRequest = true; + boolean onlySp = false; + String resultToken = "result-token-123"; + String defaultSender = "noreply@example.com"; + boolean electorsSet = true; + boolean candidatesSet = true; + boolean auditorsSet = false; + boolean randomOrderCandidates = true; + int diffUTC = 3; + boolean closed = false; + String auxStartDate = "25/12/2024"; + String auxStartHour = "10:00"; + String auxEndDate = "26/12/2024"; + String auxEndHour = "18:30"; + + Election election = new Election(electionId); + election.setMigrationId(migrationId); + election.setCategory(ElectionCategory.STATUTORY); + election.setMigrated(migrated); + election.setCreationDate(creationDate); + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + election.setMaxCandidates(maxCandidates); + election.setVotingLinkAvailable(votingLinkAvailable); + election.setResultLinkAvailable(resultLinkAvailable); + election.setAuditorLinkAvailable(auditorLinkAvailable); + election.setRevisionRequest(revisionRequest); + election.setOnlySp(onlySp); + election.setResultToken(resultToken); + election.setDefaultSender(defaultSender); + election.setElectorsSet(electorsSet); + election.setCandidatesSet(candidatesSet); + election.setAuditorsSet(auditorsSet); + election.setRandomOrderCandidates(randomOrderCandidates); + election.setDiffUTC(diffUTC); + election.setClosed(closed); + election.setAuxStartDate(auxStartDate); + election.setAuxStartHour(auxStartHour); + election.setAuxEndDate(auxEndDate); + election.setAuxEndHour(auxEndHour); + election.setCandidates(createListCandidates()); + election.setUserVoters(createUserVoters()); + election.setAuditors(createAuditors()); + election.setElectionTemplates(createElectionEmailTemplatesList()); + election.setVotes(createVotesList()); + + List emails = new ArrayList<>(); + emails.add(new Email()); + election.setEmail(emails); + + return election; + } + + public static List createVotesList() { + + List votes = new ArrayList<>(); + votes.add(createVote()); + + return votes; + } + + private static Vote createVote() { + + Vote vote = new Vote(); + vote.setVoteId(1L); + vote.setCode("123456"); + + return vote; + } + + public static List createElectionEmailTemplatesList() { + + List emailTemplates = new ArrayList<>(); + emailTemplates.add(createElectionEmailTemplate()); + + return emailTemplates; + } + + public static List createListCandidates() { + + List candidates = new ArrayList<>(); + candidates.add(createCandidate()); + + return candidates; + } + + public static UserVoter createUserVoter() { + + long userVoterId = 1L; + Long migrationId = 100L; + boolean voted = true; + String voteToken = "TOKEN123"; + int voteAmount = 3; + String name = "John Doe"; + String mail = "john.doe@example.com"; + String country = "Uruguay"; + String language = "Spanish"; + String orgID = "ORG001"; + Date voteDate = new Date(); + int version = 1; + List votes = new ArrayList<>(); + String codesSummary = "Code1, Code2"; + + UserVoter userVoter = new UserVoter(); + userVoter.setUserVoterId(userVoterId); + userVoter.setMigrationId(migrationId); + userVoter.setElection(new Election()); + userVoter.setVoted(voted); + userVoter.setVoteToken(voteToken); + userVoter.setVoteAmount(voteAmount); + userVoter.setName(name); + userVoter.setMail(mail); + userVoter.setCountry(country); + userVoter.setLanguage(language); + userVoter.setOrgID(orgID); + userVoter.setVoteDate(voteDate); + userVoter.setVersion(version); + userVoter.setVotes(votes); + userVoter.setCodesSummary(codesSummary); + + return userVoter; + } + + public static List createUserVoters() { + + List userVoters = new ArrayList<>(); + userVoters.add(createUserVoter()); + + return userVoters; + } + + public static Auditor createAuditor() { + + Auditor auditor = new Auditor(); + auditor.setAuditorId(1L); + auditor.setName("Auditor 1"); + auditor.setMail("auditor1@example.com"); + + return auditor; + } + + public static List createAuditors() { + + List auditors = new ArrayList<>(); + auditors.add(createAuditor()); + + return auditors; + } + + public static ElectionEmailTemplate createElectionEmailTemplate() { + + ElectionEmailTemplate emailTemplate = new ElectionEmailTemplate(); + emailTemplate.setTemplateType("REMINDER"); + emailTemplate.setSubjectEN("Election Reminder"); + emailTemplate.setBodyEN("Don't forget to vote!"); + + return emailTemplate; + } + + public static Commissioner createCommissioner() { + + Commissioner commissioner = new Commissioner(); + commissioner.setCommissionerId(1L); + commissioner.setName("Juan Perez"); + commissioner.setMail("juan1@example.com"); + + return commissioner; + } + + public static ElectionLight createElectionLight() { + long electionId = 76447L; + boolean migrated = true; + Date startDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + Date endDate = new DateTime(2025, 1, 1, 9, 0).toDate(); + Date creationDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + Date closedDate = new DateTime(2024, 12, 1, 9, 0).toDate(); + + String titleSpanish = "Elección de prueba en español"; + String titleEnglish = "Test Election in English"; + String titlePortuguese = "Eleições de teste em português"; + String linkSpanish = "http://example.com/es"; + String linkEnglish = "http://example.com/en"; + String linkPortuguese = "http://example.com/pt"; + String descriptionSpanish = "Descripción en español"; + String descriptionEnglish = "Description in English"; + String descriptionPortuguese = "Descrição em português"; + int maxCandidates = 5; + boolean votingLinkAvailable = true; + boolean resultLinkAvailable = true; + boolean auditorLinkAvailable = false; + boolean revisionRequest = true; + boolean onlySp = false; + String resultToken = "result-token-123"; + String defaultSender = "noreply@example.com"; + boolean electorsSet = true; + boolean candidatesSet = true; + boolean auditorsSet = false; + boolean randomOrderCandidates = true; + int diffUTC = 3; + boolean closed = false; + + ElectionLight election = new ElectionLight(); + election.setElectionId(electionId); + election.setCategory(ElectionCategory.STATUTORY); + election.setMigrated(migrated); + election.setStartDate(startDate); + election.setEndDate(endDate); + election.setCreationDate(creationDate); + election.setTitleSpanish(titleSpanish); + election.setTitleEnglish(titleEnglish); + election.setTitlePortuguese(titlePortuguese); + election.setLinkSpanish(linkSpanish); + election.setLinkEnglish(linkEnglish); + election.setLinkPortuguese(linkPortuguese); + election.setDescriptionSpanish(descriptionSpanish); + election.setDescriptionEnglish(descriptionEnglish); + election.setDescriptionPortuguese(descriptionPortuguese); + election.setMaxCandidates(maxCandidates); + election.setVotingLinkAvailable(votingLinkAvailable); + election.setResultLinkAvailable(resultLinkAvailable); + election.setAuditorLinkAvailable(auditorLinkAvailable); + election.setRevisionRequest(revisionRequest); + election.setOnlySp(onlySp); + election.setResultToken(resultToken); + election.setDefaultSender(defaultSender); + election.setElectorsSet(electorsSet); + election.setCandidatesSet(candidatesSet); + election.setAuditorsSet(auditorsSet); + election.setRandomOrderCandidates(randomOrderCandidates); + election.setDiffUTC(diffUTC); + election.setClosed(closed); + election.setClosedDate(closedDate); + + return election; + } + + public static Candidate createCandidate() { + + long candidateId = 1L; + String name = "Juan Perez"; + String mail = "juan.perez@mail.com"; + String pictureName = "profile.jpg"; + byte[] pictureInfo = new byte[] { 1, 2, 3 }; + String bioSpanish = "Biografía en español"; + String bioEnglish = "Biography in English"; + String bioPortuguese = "Biografia em português"; + String pictureExtension = "jpg"; + int candidateOrder = 1; + boolean onlySp = false; + String linkSpanish = "linkES"; + String linkEnglish = "linkEN"; + String linkPortuguese = "linkPT"; + Long migrationId = 123L; + List votes = new ArrayList<>(); + + Election election = new Election(200); + Candidate candidate = new Candidate(); + + // Set attributes + candidate.setCandidateId(candidateId); + candidate.setName(name); + candidate.setMail(mail); + candidate.setPictureName(pictureName); + candidate.setPictureInfo(pictureInfo); + candidate.setBioSpanish(bioSpanish); + candidate.setBioEnglish(bioEnglish); + candidate.setBioPortuguese(bioPortuguese); + candidate.setPictureExtension(pictureExtension); + candidate.setCandidateOrder(candidateOrder); + candidate.setOnlySp(onlySp); + candidate.setLinkSpanish(linkSpanish); + candidate.setLinkEnglish(linkEnglish); + candidate.setLinkPortuguese(linkPortuguese); + candidate.setElection(election); + candidate.setMigrationId(migrationId); + candidate.setVotes(votes); + + return candidate; + } +}