package com.processpuzzle.artifact.domain; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import com.processpuzzle.artifact.service.ArtifactService; import com.processpuzzle.artifact.service.FindArtifactRequest; import com.processpuzzle.artifact.service.FindArtifactResponse; import com.processpuzzle.commons.persistence.UnitOfWork; import com.processpuzzle.litest.template.ArtifactServiceTestEnvironment; import com.processpuzzle.litest.template.ArtifactServiceTestFixture; public class CommonArtifactServiceTestFixture extends ArtifactServiceTestFixture<ArtifactService>{ public static final Integer ARTIFACT_ID = 111; public static final String ARTIFACT_NAME = "Test Artifact"; public static final String REQUESTED_VIEW_NAME = "Custom form view"; private Artifact<?> mockArtifact; @SuppressWarnings("unchecked") private ArtifactView mockArtifactView; private ArtifactService artifactService; private FindArtifactResponse mockFindArtifactViewResponse; private FindArtifactRequest mockFindArtifactRequest; //Constructors public CommonArtifactServiceTestFixture( ArtifactServiceTestEnvironment<ArtifactService, ?> testEnvironment ) { super( testEnvironment ); } //Public accessors, mutators public FindArtifactResponse getExpectedResponseForFindById() { return mockFindArtifactViewResponse; } public FindArtifactRequest getRequestForFindAll() { return mockFindArtifactRequest; } public FindArtifactRequest getRequestForFindById() { return mockFindArtifactRequest; } public Artifact<?> getMockArtifact() { return mockArtifact; } public ArtifactView<?> getMockArtifactView() { return mockArtifactView; } //Protected, private helper methods @Override protected void configureAfterSutInstantiation() { mockFindArtifactViewResponse = mock( FindArtifactResponse.class ); } @Override protected void configureBeforeSutInstantiation() { super.configureBeforeSutInstantiation(); stubArtifact(); stubArtifactRequest(); stubArtifactRepository(); } @Override protected ArtifactService instantiateSUT() { artifactService = new ArtifactService(); return artifactService; } @Override protected void releaseResources() { } @SuppressWarnings("unchecked") private void stubArtifact() { mockArtifact = mock( Artifact.class ); mockArtifactView = mock( PropertyView.class ); when( mockArtifactView.getParentArtifact() ).thenReturn( (Artifact)mockArtifact ); when( mockArtifact.getName() ).thenReturn( ARTIFACT_NAME ); when( mockArtifact.findViewByName( REQUESTED_VIEW_NAME )).thenReturn( mockArtifactView ); when( mockArtifact.getDefaultView() ).thenReturn( (ArtifactView)mockArtifactView ); } @SuppressWarnings("unchecked") private void stubArtifactRepository() { DefaultArtifactRepository artifactRepository = mockApplicationContextFixture.getMockDefaultArtifactRepository(); when( artifactRepository.findById( any( UnitOfWork.class ), eq( ARTIFACT_ID ))).thenReturn( (Artifact) mockArtifact ); } private void stubArtifactRequest() { mockFindArtifactRequest = mock( FindArtifactRequest.class ); when( mockFindArtifactRequest.getId() ).thenReturn( ARTIFACT_ID ); when( mockFindArtifactRequest.getRequestedViewName() ).thenReturn( REQUESTED_VIEW_NAME ); } }