package com.processpuzzle.artifact.service;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.*;
import org.junit.Ignore;
import org.junit.Test;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
import com.processpuzzle.artifact.domain.ArtifactView;
import com.processpuzzle.artifact.domain.CommonArtifactServiceTestFixture;
import com.processpuzzle.artifact.domain.DefaultArtifactRepository;
import com.processpuzzle.commons.persistence.UnitOfWork;
import com.processpuzzle.litest.template.ArtifactServiceTestTemplate;
import com.processpuzzle.sharedfixtures.domaintier.DomainTierTestConfiguration;
import com.processpuzzle.user_session.domain.UserRequestManager;
public class ArtifactServiceTest extends ArtifactServiceTestTemplate<ArtifactService, CommonArtifactServiceTestFixture> {
private ProcessPuzzleContext applicationContext;
private DefaultArtifactRepository artifactRepository;
private FindArtifactResponse response;
@SuppressWarnings( "unchecked" )
private ArtifactView returnedView;
public ArtifactServiceTest() {
super( DomainTierTestConfiguration.FIXTURE_CONTAINER_DEFINITION_PATH );
}
@Override
public void beforeEachTest() {
super.beforeEachTest();
applicationContext = UserRequestManager.getInstance().getApplicationContext();
artifactRepository = applicationContext.getRepository( DefaultArtifactRepository.class );
}
@Test
public void findById_ReturnsAResponseObject() {
invokeFindById();
assertThat( response, notNullValue() );
assertThat( response, instanceOf( FindArtifactResponse.class ) );
}
@SuppressWarnings( { "static-access", "unchecked" } )
@Test
public void findById_ReturnsRequestedView() {
invokeFindById();
ArtifactView expectedView = templatedFixture.getMockArtifact().findViewByName( templatedFixture.REQUESTED_VIEW_NAME );
assertThat( returnedView, equalTo( expectedView ) );
}
@SuppressWarnings( "unchecked" )
@Test
public void findById_ReturnsDefaultViewIfNotSpecifiedInRequest() {
FindArtifactRequest request = templatedFixture.getRequestForFindById();
request.setRequestedViewName( null );
returnedView = sut.findById( request ).getArtfifactView();
ArtifactView expectedDefaultView = templatedFixture.getMockArtifact().getDefaultView();
assertThat( returnedView, equalTo( expectedDefaultView ) );
}
@Test
public void findById_UsesArtifactRepository() {
invokeFindById();
Integer id = templatedFixture.getRequestForFindById().getId();
verify( artifactRepository ).findById( any( UnitOfWork.class ), eq( id ) );
}
@Ignore
@Test
public void findAll_ReturnsCoolectionOfViews() {
invokeFindAll();
}
private void invokeFindAll() {
response = sut.findAll( templatedFixture.getRequestForFindAll() );
assertThat( response.getNumberOfArtifact(), equalTo( 3 ) );
}
private void invokeFindById() {
response = sut.findById( templatedFixture.getRequestForFindById() );
returnedView = response.getArtfifactView();
}
}