class DistrictAlertUtils {

    public static String buildDistrictwiseAlert(List<DistrictwiseData> deltas, List<DistrictwiseData> dailies) {
        AtomicReference<String> alertText = new AtomicReference<>("");
        deltas.forEach(delta -> buildDistrictDeltaAlertLine(alertText, delta));
        if (alertText.get().isEmpty() || "\n".equalsIgnoreCase(alertText.get())) {
            LOG.info("No useful update to alert on. Skipping...");
            return "";
        }
//        buildDistrictSummaryAlertBlock(alertText, deltas, dailies);
        LOG.info("Districtwise alert text generated:\n{}", alertText.get());
        return alertText.get();
    }

}

class DistrictAlertUtilsTest {

    @Test
    public void testBuildDistrictwiseAlert() {

        List<DistrictwiseData> deltas = asList(
                new DistrictwiseData("Maharashtra", "Mumbai", "120", "90", "5", "9", "12", "3", "1", "")
        );
        List<DistrictwiseData> dailies = asList(
                new DistrictwiseData("Maharashtra", "Mumbai", "25", "40", "12", "3", "11", "23", "4", "")
        );
        AtomicReference<String> alertText = new AtomicReference<>();

        String expected = "12 new cases, 1 death, 3 recoveries in Mumbai\n";
        String actual = buildDistrictwiseAlert(deltas, dailies);

        assertEquals(expected, actual);
    }

}