Skip to content

Commit

Permalink
#785 | Fix bug (code review comment) and add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
1t5j0y committed Oct 25, 2024
1 parent 0a34c4c commit ef6eed6
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,14 @@ public Optional<AddressLevel> findByAddressMap(Map<String, String> addressMap) {
}

String typeHierarchyForAddressMap = addressLevels.stream().map(al -> String.valueOf(al.getTypeId())).collect(Collectors.joining("."));
String lineageForAddressMap = addressLevels.stream().map(al -> String.valueOf(al.getId())).collect(Collectors.joining("."));

TreeSet<String> addressLevelTypeHierarchies = locationHierarchyService.fetchAndFilterHierarchies();
if (addressLevelTypeHierarchies.stream().anyMatch(hierarchy -> hierarchy.contains(typeHierarchyForAddressMap))) {
return Optional.of(addressLevels.get(addressLevels.size() - 1));
AddressLevel matchedAddressLevel = addressLevels.get(addressLevels.size() - 1);
if (matchedAddressLevel.getLineage().equals(lineageForAddressMap)) {
return Optional.of(matchedAddressLevel);
}
}
return Optional.empty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
import org.springframework.test.context.jdbc.Sql;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

import static org.junit.Assert.assertEquals;

Expand Down Expand Up @@ -45,4 +47,44 @@ public void getTitleLineages() {
assertEquals("karnataka, bangalore", titleLineages.get(bangalore.getId()));
assertEquals("kerala, kochi", titleLineages.get(kochi.getId()));
}

@Test
public void findByAddressMap() {
testDataSetupService.setupOrganisation();
AddressLevelType grandParent = addressLevelTypeRepository.save(new AddressLevelTypeBuilder().withUuid("GP").name("GP").level(3d).build());
AddressLevelType parent = addressLevelTypeRepository.save(new AddressLevelTypeBuilder().withUuid("Parent").name("Parent").parent(grandParent).level(2d).build());
AddressLevelType child = addressLevelTypeRepository.save(new AddressLevelTypeBuilder().withUuid("Child").name("Child").parent(parent).level(1d).build());

AddressLevel gp1AddressLevel = testLocationService.save(new AddressLevelBuilder().withUuid("gp1").title("gp1").type(grandParent).build());
AddressLevel parent1AddressLevel = testLocationService.save(new AddressLevelBuilder().withUuid("parent1").title("parent1").type(parent).parent(gp1AddressLevel).build());
AddressLevel child1AddressLevel = testLocationService.save(new AddressLevelBuilder().withUuid("child1").title("child1").type(child).parent(parent1AddressLevel).build());
AddressLevel gp2AddressLevel = testLocationService.save(new AddressLevelBuilder().withUuid("gp2").title("gp2").type(grandParent).build());
AddressLevel parent2AddressLevel = testLocationService.save(new AddressLevelBuilder().withUuid("parent2").title("parent2").type(parent).parent(gp2AddressLevel).build());
AddressLevel child2AddressLevel = testLocationService.save(new AddressLevelBuilder().withUuid("child2").title("child2").type(child).parent(parent2AddressLevel).build());
Map<String, String> addressLevelMap = new HashMap<>();

//valid hierarchy
addressLevelMap.put(parent.getName(), parent1AddressLevel.getTitle());
addressLevelMap.put(child.getName(), child1AddressLevel.getTitle());
addressLevelMap.put(grandParent.getName(), gp1AddressLevel.getTitle());
assertEquals(child1AddressLevel, addressLevelService.findByAddressMap(addressLevelMap).get());

//valid locations in valid hierarchy but not related
addressLevelMap.put(grandParent.getName(), gp2AddressLevel.getTitle());
assertEquals(Optional.empty(), addressLevelService.findByAddressMap(addressLevelMap));
addressLevelMap.put(child.getName(), child2AddressLevel.getTitle());
assertEquals(Optional.empty(), addressLevelService.findByAddressMap(addressLevelMap));

addressLevelMap.put(parent.getName(), parent2AddressLevel.getTitle());
assertEquals(child2AddressLevel, addressLevelService.findByAddressMap(addressLevelMap).get());

//case insensitive
addressLevelMap.remove(parent.getName());
addressLevelMap.put(parent.getName().toUpperCase(), parent2AddressLevel.getTitle().toUpperCase());
assertEquals(child2AddressLevel, addressLevelService.findByAddressMap(addressLevelMap).get());

//partial hierarchy
addressLevelMap.remove(grandParent.getName());
assertEquals(Optional.empty(), addressLevelService.findByAddressMap(addressLevelMap));
}
}

0 comments on commit ef6eed6

Please sign in to comment.