Skip to content

Commit

Permalink
avniproject/avni-webapp#1306 - fixed scenarios in BulkLocationCreator…
Browse files Browse the repository at this point in the history
…IntegrationTest
  • Loading branch information
petmongrels committed Aug 22, 2024
1 parent 5d07ce8 commit 711c250
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.avni.server.importer.batch.csv.writer;

import org.avni.server.common.AbstractControllerIntegrationTest;
import org.avni.server.domain.AddressLevel;

import static org.junit.Assert.assertNotNull;

public abstract class BaseCSVImportTest extends AbstractControllerIntegrationTest {
protected String[] header(String... cells) {
return cells;
}

protected String[] dataRow(String... cells) {
return cells;
}

protected String[] lineage(String ... lineage) {
return lineage;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.avni.server.importer.batch.csv.writer;

import org.avni.server.common.AbstractControllerIntegrationTest;
import org.avni.server.dao.LocationRepository;
import org.avni.server.domain.AddressLevel;
import org.avni.server.domain.AddressLevelType;
Expand All @@ -15,7 +14,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.jdbc.Sql;

import java.util.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.UUID;

import static org.avni.server.importer.batch.csv.writer.BulkLocationCreator.LocationTypesHeaderError;
import static org.avni.server.importer.batch.csv.writer.BulkLocationCreator.UnknownHeadersErrorMessage;
Expand All @@ -24,7 +26,7 @@

@Sql(value = {"/tear-down.sql"}, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
@Sql(value = {"/tear-down.sql"}, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
public class BulkLocationCreatorIntegrationTest extends AbstractControllerIntegrationTest {
public class BulkLocationCreatorIntegrationTest extends BaseCSVImportTest {
@Autowired
private TestDataSetupService testDataSetupService;
@Autowired
Expand Down Expand Up @@ -58,12 +60,14 @@ private static int newLocationsCreated(int count) {
return count;
}

private static String[] header(String ... cells) {
return cells;
private void lineageExists(String ... lineage) {
AddressLevel address = this.locationRepository.findByTitleLineageIgnoreCase(String.join(".", lineage)).get();
assertNotNull(address);
}

private static String[] dataRow(String ... cells) {
return cells;
private void locationHasAttribute(String[] lineage, String concept) {
AddressLevel address = this.locationRepository.findByTitleLineageIgnoreCase(String.join(".", lineage)).get();
assertNotNull(address.getLocationProperties().get(concept));
}

private void treatAsDescriptor(String[] headers, String ... additionalHeaders) {
Expand Down Expand Up @@ -91,20 +95,6 @@ private void failure(String[] headers, String[] cells, String errorMessage) {
assertEquals(before, after);
}

private String[] lineage(String ... lineage) {
return lineage;
}

private void lineageExists(String ... lineage) {
AddressLevel address = this.locationRepository.findByTitleLineageIgnoreCase(String.join(".", lineage)).get();
assertNotNull(address);
}

private void locationHasAttribute(String[] lineage, String concept) {
AddressLevel address = this.locationRepository.findByTitleLineageIgnoreCase(String.join(".", lineage)).get();
assertNotNull(address.getLocationProperties().get(concept));
}

@Test
@Ignore
public void shouldCreate() {
Expand Down Expand Up @@ -163,11 +153,34 @@ public void shouldCreate() {
dataRow("Bihar", "Vaishali", "Block 4", "23.45,43.86", "not an answer to this concept"),
"");

// in random steps
success(header("State", "District", "Block", "GPS coordinates", " Coded Concept", "Text Concept"),
dataRow("Bihar", "Vaishali", "Block 5", "23.45,43.86", " Answer 1", "any text"),
newLocationsCreated(1));
locationHasAttribute(lineage("Bihar", "Vaishali", "Block 5"), "Coded Concept");
locationHasAttribute(lineage("Bihar", "Vaishali", "Block 5"), "Text Concept");
// end


// without full hierarchy
success(header("State", "District", "Block", "GPS coordinates"),
dataRow("Bihar", "District 1", " ", "23.45,43.85"), newLocationsCreated(1));
lineageExists("Bihar", "District 1");

success(header("State", "District", "Block", "GPS coordinates"),
dataRow(" ", " ", "Block11", "23.45,43.85"), newLocationsCreated(1));
dataRow("State 2", "District 1", " ", "23.45,43.85"), newLocationsCreated(2));
lineageExists("State 2", "District 1");

success(header("State", "District", "Block", "GPS coordinates"),
dataRow("Bihar", "District1", "Block11"), newLocationsCreated(1));
lineageExists("Bihar", "District1", "Block11");
dataRow("State 3", " ", " ", "23.45,43.85"), newLocationsCreated(1));
lineageExists("State 3");
// end


// if in random steps
failure(header("State", "District", "Block", "GPS coordinates"),
dataRow(" ", " ", "Block11", "23.45,43.85"), "");
failure(header("State", "District", "Block", "GPS coordinates"),
dataRow(" ", " District 11", "Block11", "23.45,43.85"), "");
// end
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package org.avni.server.importer.batch.csv.writer;

import org.avni.server.common.AbstractControllerIntegrationTest;
import org.avni.server.domain.AddressLevelType;
import org.avni.server.domain.ConceptDataType;
import org.avni.server.domain.factory.AddressLevelTypeBuilder;
import org.avni.server.service.builder.TestConceptService;
import org.avni.server.service.builder.TestDataSetupService;
import org.junit.Ignore;
import org.junit.Test;
Expand All @@ -14,9 +15,11 @@

@Sql(value = {"/tear-down.sql"}, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
@Sql(value = {"/tear-down.sql"}, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
public class BulkLocationEditorIntegrationTest extends AbstractControllerIntegrationTest {
public class BulkLocationEditorIntegrationTest extends BaseCSVImportTest {
@Autowired
private TestDataSetupService testDataSetupService;
@Autowired
private TestConceptService testConceptService;

@Test
@Ignore
Expand All @@ -26,6 +29,8 @@ public void shouldEdit() {
AddressLevelType district = new AddressLevelTypeBuilder().name("District").level(3d).withUuid(UUID.randomUUID()).build();
AddressLevelType state = new AddressLevelTypeBuilder().name("State").level(4d).withUuid(UUID.randomUUID()).build();
testDataSetupService.saveLocationTypes(Arrays.asList(block, district, state));
testConceptService.createCodedConcept("Coded Concept", "Answer 1", "Answer 2");
testConceptService.createConcept("Text Concept", ConceptDataType.Text);

setUser(organisationData.getUser().getUsername());
}
Expand Down

0 comments on commit 711c250

Please sign in to comment.