package uk.ac.ox.zoo.seeg.abraid.mp.publicsite.domain; import org.joda.time.DateTime; import org.junit.Test; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.Expert; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.ValidatorDiseaseGroup; import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Tests for JsonExpertFull. * Copyright (c) 2014 University of Oxford */ public class JsonExpertFullTest { @Test public void constructorBindsFieldsCorrectly() { // Arrange Expert mockExpert = mock(Expert.class); when(mockExpert.getId()).thenReturn(321); when(mockExpert.getEmail()).thenReturn("expected email"); when(mockExpert.getWeighting()).thenReturn(4.56); when(mockExpert.getVisibilityApproved()).thenReturn(true); when(mockExpert.isAdministrator()).thenReturn(true); when(mockExpert.isSeegMember()).thenReturn(true); when(mockExpert.getCreatedDate()).thenReturn(new DateTime(0)); when(mockExpert.getUpdatedDate()).thenReturn(new DateTime(1)); when(mockExpert.getValidatorDiseaseGroups()).thenReturn(Arrays.asList( new ValidatorDiseaseGroup("foo"), new ValidatorDiseaseGroup("bar") )); int expectedOccurrenceReviews = 0; int expectedExtentReviews = 0; DateTime expectedLastReviewDate = DateTime.now(); // Act JsonExpertFull result = new JsonExpertFull(mockExpert, expectedOccurrenceReviews, expectedExtentReviews, expectedLastReviewDate); // Assert assertThat(result.getId()).isEqualTo(mockExpert.getId()); assertThat(result.getEmail()).isEqualTo(mockExpert.getEmail()); assertThat(result.getWeighting()).isEqualTo(mockExpert.getWeighting()); assertThat(result.getVisibilityApproved()).isEqualTo(mockExpert.getVisibilityApproved()); assertThat(result.isAdministrator()).isEqualTo(mockExpert.isAdministrator()); assertThat(result.isSEEGMember()).isEqualTo(mockExpert.isSeegMember()); assertThat(result.getCreatedDate()).isEqualTo(mockExpert.getCreatedDate()); assertThat(result.getUpdatedDate()).isEqualTo(mockExpert.getUpdatedDate()); assertThat(result.getDiseaseOccurrenceReviewCount()).isEqualTo(expectedOccurrenceReviews); assertThat(result.getAdminUnitReviewCount()).isEqualTo(expectedExtentReviews); assertThat(result.getLastReviewDate()).isEqualTo(expectedLastReviewDate); assertThat(result.getDiseaseInterestNames()).isEqualTo(Arrays.asList("foo", "bar")); } @Test public void hasTheFieldsFromJsonExpertDetailsButNullDiseaseInterests() { // Arrange Expert mockExpert = mock(Expert.class); when(mockExpert.getName()).thenReturn("expected name"); when(mockExpert.getJobTitle()).thenReturn("expected job"); when(mockExpert.getInstitution()).thenReturn("expected institution"); when(mockExpert.getVisibilityRequested()).thenReturn(true); when(mockExpert.getValidatorDiseaseGroups()).thenReturn(Arrays.asList( new ValidatorDiseaseGroup(1, "foo"), new ValidatorDiseaseGroup(2, "foo2") )); // Act JsonExpertFull result = new JsonExpertFull(mockExpert, 0, 0, null); // Assert assertThat(result.getName()).isEqualTo(mockExpert.getName()); assertThat(result.getJobTitle()).isEqualTo(mockExpert.getJobTitle()); assertThat(result.getInstitution()).isEqualTo(mockExpert.getInstitution()); assertThat(result.getVisibilityRequested()).isEqualTo(mockExpert.getVisibilityRequested()); assertThat(result.getDiseaseInterests()).isNull(); } }