package uk.ac.ox.zoo.seeg.abraid.mp.common.service.core;
import org.junit.Before;
import org.junit.Test;
import uk.ac.ox.zoo.seeg.abraid.mp.common.dao.AlertDao;
import uk.ac.ox.zoo.seeg.abraid.mp.common.dao.FeedDao;
import uk.ac.ox.zoo.seeg.abraid.mp.common.dao.ProvenanceDao;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.Alert;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.Feed;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.Provenance;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.ProvenanceNames;
import java.util.Arrays;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.*;
/**
* Tests the AlertService class.
*
* Copyright (c) 2014 University of Oxford
*/
public class AlertServiceTest {
private AlertService alertService;
private AlertDao alertDao;
private FeedDao feedDao;
private ProvenanceDao provenanceDao;
@Before
public void setUp() {
alertDao = mock(AlertDao.class);
feedDao = mock(FeedDao.class);
provenanceDao = mock(ProvenanceDao.class);
alertService = new AlertServiceImpl(alertDao, feedDao, provenanceDao);
}
@Test
public void getAlertByHealthMapAlertId() {
// Arrange
Alert alert = new Alert();
int healthMapAlertId = 123;
when(alertDao.getByHealthMapAlertId(healthMapAlertId)).thenReturn(alert);
// Act
Alert testAlert = alertService.getAlertByHealthMapAlertId(healthMapAlertId);
// Assert
assertThat(testAlert).isSameAs(alert);
}
@Test
public void getFeedsByProvenanceName() {
// Arrange
List<Feed> feeds = Arrays.asList(new Feed());
String provenanceName = ProvenanceNames.HEALTHMAP;
when(feedDao.getByProvenanceName(provenanceName)).thenReturn(feeds);
// Act
List<Feed> testFeeds = alertService.getFeedsByProvenanceName(provenanceName);
// Assert
assertThat(testFeeds).isSameAs(feeds);
}
@Test
public void saveFeed() {
// Arrange
Feed feed = new Feed();
// Act
alertService.saveFeed(feed);
// Assert
verify(feedDao).save(eq(feed));
}
@Test
public void getProvenanceByName() {
// Arrange
Provenance provenance = new Provenance();
String name = "Provenance name";
when(provenanceDao.getByName(name)).thenReturn(provenance);
// Act
Provenance testProvenance = alertService.getProvenanceByName(name);
// Assert
assertThat(testProvenance).isSameAs(provenance);
}
@Test
public void saveProvenance() {
// Arrange
Provenance provenance = new Provenance();
// Act
alertService.saveProvenance(provenance);
// Assert
verify(provenanceDao).save(eq(provenance));
}
}