diff --git a/opensrp-core/src/test/java/org/smartregister/clientandeventmodel/SubFormDataTest.java b/opensrp-core/src/test/java/org/smartregister/clientandeventmodel/SubFormDataTest.java new file mode 100644 index 000000000..c0bc6900c --- /dev/null +++ b/opensrp-core/src/test/java/org/smartregister/clientandeventmodel/SubFormDataTest.java @@ -0,0 +1,35 @@ +package org.smartregister.clientandeventmodel; + +import org.junit.Assert; +import org.junit.Test; +import org.smartregister.BaseUnitTest; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SubFormDataTest extends BaseUnitTest { + + @Test + public void testConstructorNotNull1() { + List> instanceList = new ArrayList<>(); + Map dataMap = new HashMap<>(); + dataMap.put("key", "value"); + instanceList.add(dataMap); + Assert.assertNotNull(new SubFormData("name", instanceList)); + + } + + @Test + public void testFieldsNotNull() { + List formFields = new ArrayList<>(); + FormField field = new FormField(); + formFields.add(field); + SubFormData data = new SubFormData(); + data.setFields(formFields); + Assert.assertNotNull(data); + Assert.assertNotNull(data.fields()); + + } +} diff --git a/opensrp-core/src/test/java/org/smartregister/domain/form/FormFieldTest.java b/opensrp-core/src/test/java/org/smartregister/domain/form/FormFieldTest.java new file mode 100644 index 000000000..bd2829e3b --- /dev/null +++ b/opensrp-core/src/test/java/org/smartregister/domain/form/FormFieldTest.java @@ -0,0 +1,40 @@ +package org.smartregister.domain.form; + +import org.junit.Assert; +import org.junit.Test; +import org.smartregister.BaseUnitTest; + +public class FormFieldTest extends BaseUnitTest { + + @Test + public void testEqualsShouldReturnTrueForIdenticalObjects() { + FormField formField1 = new FormField("name", "value", "source"); + FormField formField2 = new FormField("name", "value", "source"); + Assert.assertTrue(formField1.equals(formField2)); + } + + @Test + public void testHashCodeNotNull() { + FormField formField = new FormField("name", "value", "source"); + Assert.assertNotNull(formField.hashCode()); + } + + @Test + public void testToStringShouldReturnCorrectData() { + FormField formField = new FormField("name", "value", "source"); + Assert.assertNotNull(formField.toString()); + } + + @Test + public void testSettersShouldSetCorrectValue() { + FormField formField = new FormField("n", "v", "s"); + formField.setName("name"); + formField.setValue("value"); + formField.setSource("source"); + Assert.assertEquals("name", formField.getName()); + Assert.assertEquals("value", formField.value()); + Assert.assertEquals("source", formField.source()); + + } + +} diff --git a/opensrp-core/src/test/java/org/smartregister/domain/form/TestNodeClass.java b/opensrp-core/src/test/java/org/smartregister/domain/form/TestNodeClass.java new file mode 100644 index 000000000..b81f4edfd --- /dev/null +++ b/opensrp-core/src/test/java/org/smartregister/domain/form/TestNodeClass.java @@ -0,0 +1,391 @@ +package org.smartregister.domain.form; + +import org.w3c.dom.DOMException; +import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.w3c.dom.UserDataHandler; + + +public class TestNodeClass implements Node { + @Override + public String getNodeName() { + return null; + } + + @Override + public String getNodeValue() throws DOMException { + return null; + } + + @Override + public void setNodeValue(String nodeValue) throws DOMException { + // Do Nothing + } + + @Override + public short getNodeType() { + return 0; + } + + @Override + public Node getParentNode() { + return null; + } + + @Override + public NodeList getChildNodes() { + return new NodeList() { + @Override + public Node item(int index) { + return new Node() { + @Override + public String getNodeName() { + return null; + } + + @Override + public String getNodeValue() throws DOMException { + return null; + } + + @Override + public void setNodeValue(String nodeValue) throws DOMException { + // Do nothing + } + + @Override + public short getNodeType() { + return ELEMENT_NODE; + } + + @Override + public Node getParentNode() { + return null; + } + + @Override + public NodeList getChildNodes() { + return null; + } + + @Override + public Node getFirstChild() { + return null; + } + + @Override + public Node getLastChild() { + return null; + } + + @Override + public Node getPreviousSibling() { + return null; + } + + @Override + public Node getNextSibling() { + return null; + } + + @Override + public NamedNodeMap getAttributes() { + return null; + } + + @Override + public Document getOwnerDocument() { + return null; + } + + @Override + public Node insertBefore(Node newChild, Node refChild) throws DOMException { + return null; + } + + @Override + public Node replaceChild(Node newChild, Node oldChild) throws DOMException { + return null; + } + + @Override + public Node removeChild(Node oldChild) throws DOMException { + return null; + } + + @Override + public Node appendChild(Node newChild) throws DOMException { + return null; + } + + @Override + public boolean hasChildNodes() { + return false; + } + + @Override + public Node cloneNode(boolean deep) { + return null; + } + + @Override + public void normalize() { + // Do Nothing + } + + @Override + public boolean isSupported(String feature, String version) { + return false; + } + + @Override + public String getNamespaceURI() { + return null; + } + + @Override + public String getPrefix() { + return null; + } + + @Override + public void setPrefix(String prefix) throws DOMException { + // Do Nothing + } + + @Override + public String getLocalName() { + return null; + } + + @Override + public boolean hasAttributes() { + return false; + } + + @Override + public String getBaseURI() { + return null; + } + + @Override + public short compareDocumentPosition(Node other) throws DOMException { + return 0; + } + + @Override + public String getTextContent() throws DOMException { + return null; + } + + @Override + public void setTextContent(String textContent) throws DOMException { + // Do Nothing + } + + @Override + public boolean isSameNode(Node other) { + return false; + } + + @Override + public String lookupPrefix(String namespaceURI) { + return null; + } + + @Override + public boolean isDefaultNamespace(String namespaceURI) { + return false; + } + + @Override + public String lookupNamespaceURI(String prefix) { + return null; + } + + @Override + public boolean isEqualNode(Node arg) { + return false; + } + + @Override + public Object getFeature(String feature, String version) { + return null; + } + + @Override + public Object setUserData(String key, Object data, UserDataHandler handler) { + return null; + } + + @Override + public Object getUserData(String key) { + return null; + } + }; + } + + @Override + public int getLength() { + return 1; + } + }; + } + + @Override + public Node getFirstChild() { + return null; + } + + @Override + public Node getLastChild() { + return null; + } + + @Override + public Node getPreviousSibling() { + return null; + } + + @Override + public Node getNextSibling() { + return null; + } + + @Override + public NamedNodeMap getAttributes() { + return null; + } + + @Override + public Document getOwnerDocument() { + return null; + } + + @Override + public Node insertBefore(Node newChild, Node refChild) throws DOMException { + return null; + } + + @Override + public Node replaceChild(Node newChild, Node oldChild) throws DOMException { + return null; + } + + @Override + public Node removeChild(Node oldChild) throws DOMException { + return null; + } + + @Override + public Node appendChild(Node newChild) throws DOMException { + return null; + } + + @Override + public boolean hasChildNodes() { + return false; + } + + @Override + public Node cloneNode(boolean deep) { + return null; + } + + @Override + public void normalize() { + // Do nothing + } + + @Override + public boolean isSupported(String feature, String version) { + return false; + } + + @Override + public String getNamespaceURI() { + return null; + } + + @Override + public String getPrefix() { + return null; + } + + @Override + public void setPrefix(String prefix) throws DOMException { + // Do nothing + } + + @Override + public String getLocalName() { + return null; + } + + @Override + public boolean hasAttributes() { + return false; + } + + @Override + public String getBaseURI() { + return null; + } + + @Override + public short compareDocumentPosition(Node other) throws DOMException { + return 0; + } + + @Override + public String getTextContent() throws DOMException { + return null; + } + + @Override + public void setTextContent(String textContent) throws DOMException { + // DO nothing + } + + @Override + public boolean isSameNode(Node other) { + return false; + } + + @Override + public String lookupPrefix(String namespaceURI) { + return null; + } + + @Override + public boolean isDefaultNamespace(String namespaceURI) { + return false; + } + + @Override + public String lookupNamespaceURI(String prefix) { + return null; + } + + @Override + public boolean isEqualNode(Node arg) { + return false; + } + + @Override + public Object getFeature(String feature, String version) { + return null; + } + + @Override + public Object setUserData(String key, Object data, UserDataHandler handler) { + return null; + } + + @Override + public Object getUserData(String key) { + return null; + } +} diff --git a/opensrp-core/src/test/java/org/smartregister/util/FormUtilsTest.java b/opensrp-core/src/test/java/org/smartregister/util/FormUtilsTest.java index 070704950..79ad85768 100644 --- a/opensrp-core/src/test/java/org/smartregister/util/FormUtilsTest.java +++ b/opensrp-core/src/test/java/org/smartregister/util/FormUtilsTest.java @@ -1,8 +1,12 @@ package org.smartregister.util; + +import static java.util.Arrays.asList; + import android.content.res.AssetManager; import android.util.Xml; +import org.joda.time.DateTime; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -16,13 +20,26 @@ import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; + import androidx.test.core.app.ApplicationProvider; + +import com.google.gson.Gson; + import org.robolectric.util.ReflectionHelpers; import org.smartregister.BaseUnitTest; import org.smartregister.Context; import org.smartregister.CoreLibrary; +import org.smartregister.clientandeventmodel.Client; +import org.smartregister.clientandeventmodel.Event; +import org.smartregister.clientandeventmodel.SubFormData; import org.smartregister.domain.ANM; import org.smartregister.domain.SyncStatus; +import org.smartregister.domain.form.FormData; +import org.smartregister.domain.form.FormField; +import org.smartregister.domain.form.FormInstance; +import org.smartregister.domain.form.FormSubmission; +import org.smartregister.domain.form.SubForm; +import org.smartregister.domain.form.TestNodeClass; import org.smartregister.repository.DetailsRepository; import org.smartregister.repository.FormDataRepository; import org.smartregister.service.ANMService; @@ -33,7 +50,11 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.util.Collections; import java.util.HashMap; +import java.util.List; + +import timber.log.Timber; /** * Created by kaderchowdhury on 14/11/17. @@ -110,6 +131,7 @@ public InputStream answer(InvocationOnMock invocation) throws Throwable { @Test public void assertgenerateXMLInputForFormWithEntityId() throws Exception { formUtils = new FormUtils(context_); + ReflectionHelpers.setField(formUtils, "theAppContext", context); Mockito.when(context_.getAssets()).thenReturn(assetManager); Mockito.when(assetManager.open(formDefinition)).thenAnswer(new Answer() { @@ -198,4 +220,51 @@ public void getJsonFieldFromArrayShouldReturnObjectWithCorrectNameProperty() thr Assert.assertEquals("Doe", resultJson.getString("value")); } + @Test + public void testPrintEventShouldPrintCompleteEventData() { + MockedStatic timber = Mockito.mockStatic(Timber.class); + Event event = new Event("baseEntityId", "eventId", "birthRegEventType", new DateTime().toDate(), "client", "anm", "location-id", "form-submission-id"); + Assert.assertNotNull(timber); + Assert.assertNotNull(event); + ReflectionHelpers.callInstanceMethod(formUtils, "printEvent", ReflectionHelpers.ClassParameter.from(Event.class, event)); + timber.verify( + () -> Timber.d(Mockito.anyString()), + Mockito.times(3) + ); + timber.close(); + + } + + @Test + public void testPrintClientShouldPrintCompleteClientData() { + MockedStatic timber = Mockito.mockStatic(Timber.class); + Client client = new Client("baseEntityId", "firstName", "middleName", "lastName", new DateTime().toDate(), + new DateTime().toDate(), false, false, "gender"); + Assert.assertNotNull(timber); + Assert.assertNotNull(client); + ReflectionHelpers.callInstanceMethod(formUtils, "printClient", ReflectionHelpers.ClassParameter.from(Client.class, client)); + timber.verify( + () -> Timber.d(Mockito.anyString()), + Mockito.times(3) + ); + timber.close(); + } + + @Test + public void testGetSubFormListShouldReturnCorrectSubform() { + SubForm subForm = new SubForm("sub form name"); + subForm.setFields(Collections.singletonList(new FormField("first_name", "Ephraim Kigamba", "source"))); + FormInstance formInstance = new FormInstance(new FormData("entity", "default", asList(new FormField("field1", "value1", "source1"), new FormField("field2", "value2", "source2")), + Collections.singletonList(subForm)), "1"); + FormSubmission formSubmission = new FormSubmission("1", "2", "FORM", new Gson().toJson(formInstance), "1.0", SyncStatus.PENDING, "1"); + List subForms = ReflectionHelpers.callInstanceMethod(formUtils, "getSubFormList", ReflectionHelpers.ClassParameter.from(FormSubmission.class, formSubmission)); + Assert.assertEquals(1, subForms.size()); + Assert.assertEquals("sub form name", subForms.get(0).getName()); + } + + @Test + public void testHasChildElementShouldReturnTrueIfChildIsElementNode() { + Assert.assertTrue(FormUtils.hasChildElements(new TestNodeClass())); + } + }