package org.ei.drishti.web.controller;
import org.ei.drishti.common.util.HttpAgent;
import org.ei.drishti.common.util.HttpResponse;
import org.ei.drishti.domain.ANMDetail;
import org.ei.drishti.domain.ANMDetails;
import org.ei.drishti.domain.DrishtiUser;
import org.ei.drishti.dto.ANMDTO;
import org.ei.drishti.dto.LocationDTO;
import org.ei.drishti.dto.register.ANMDetailDTO;
import org.ei.drishti.dto.register.ANMDetailsDTO;
import org.ei.drishti.service.ANMDetailsService;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
public class ANMDetailsControllerTest {
@Mock
private ANMDetailsService service;
@Mock
private HttpAgent httpAgent;
@Mock
private UserController userController;
@Mock
private DrishtiUser user;
private ANMDetailsController controller;
@Before
public void setUp() throws Exception {
initMocks(this);
controller = new ANMDetailsController(service, "http://dristhi_site_url", "http://dristhi_reporting_url/anms", userController, httpAgent);
}
@Test
public void shouldGetANCDetailsForAllANMs() throws Exception {
when(httpAgent.get("http://dristhi_reporting_url/anms?anm-id=bhe1")).
thenReturn(new HttpResponse(true,
"[\n" +
" {\n" +
" \"identifier\": \"bhe1\",\n" +
" \"name\": \"Elizebeth D'souza\",\n" +
" \"location\": {\n" +
" \"sub_center\": \"bherya_a\",\n" +
" \"phc\": \"Bherya\",\n" +
" \"taluka\": \"K.R. Nagar\",\n" +
" \"district\": \"Mysore\",\n" +
" \"state\": \"Karnataka\"\n" +
" }\n" +
" }\n" +
"]"));
ANMDetails expectedANMDetails = new ANMDetails(asList(new ANMDetail("bhe1", "Elizebeth D'souza",
new LocationDTO("bherya_a", "Bherya", "K.R. Nagar", "Mysore", "Karnataka"), 1, 2, 3, 4, 5)));
DrishtiUser drishtiUser = new DrishtiUser("bhe1", "1", "salt", asList(""), true);
when(userController.currentUser()).thenReturn(drishtiUser);
when(service.anmDetails(asList(new ANMDTO("bhe1", "Elizebeth D'souza", new LocationDTO("bherya_a", "Bherya", "K.R. Nagar", "Mysore", "Karnataka")))))
.thenReturn(expectedANMDetails);
ResponseEntity<ANMDetailsDTO> response = controller.allANMs();
assertEquals(new ANMDetailsDTO(asList(new ANMDetailDTO("bhe1", "Elizebeth D'souza",
new LocationDTO("bherya_a", "Bherya", "K.R. Nagar", "Mysore", "Karnataka"), 1, 2, 3, 4, 5))), response.getBody());
assertEquals(HttpStatus.OK, response.getStatusCode());
assertTrue(response.getHeaders().containsKey("Access-Control-Allow-Origin"));
assertEquals("http://dristhi_site_url", response.getHeaders().getFirst("Access-Control-Allow-Origin"));
}
}