package pl.com.bottega.documentmanagement.api;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import pl.com.bottega.documentmanagement.domain.Document;
import pl.com.bottega.documentmanagement.domain.DocumentNumber;
import pl.com.bottega.documentmanagement.domain.Employee;
import pl.com.bottega.documentmanagement.domain.EmployeeId;
import pl.com.bottega.documentmanagement.domain.repositories.DocumentRepository;
import pl.com.bottega.documentmanagement.domain.repositories.EmployeeRepository;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
/**
* Created by maciuch on 18.08.16.
*/
@RunWith(MockitoJUnitRunner.class)
public class ReadingConfirmatorTest {
private ReadingConfirmator readingConfirmator;
@Mock
private DocumentRepository documentRepository;
@Mock
private EmployeeRepository employeeRepository;
@Mock
private UserManager userManager;
@Mock
private DocumentNumber documentNumber;
@Mock
private Document document;
@Mock
private Employee employee, otherEmployee;
@Mock
private EmployeeId otherEmployeeId;
@Before
public void setUp() throws Exception {
readingConfirmator = new ReadingConfirmator(documentRepository, employeeRepository, userManager);
}
@Test
public void shouldConfirmDocument() {
//given
when(documentRepository.load(documentNumber)).thenReturn(document);
when(userManager.currentEmployee()).thenReturn(employee);
//when
readingConfirmator.confirm(documentNumber);
//then
verify(document).confirm(employee);
}
@Test
public void shouldConfirmDocumentForOtherEmployee() {
//given
when(documentRepository.load(documentNumber)).thenReturn(document);
when(userManager.currentEmployee()).thenReturn(employee);
when(employeeRepository.findByEmployeeId(otherEmployeeId)).thenReturn(otherEmployee);
//when
readingConfirmator.confirm(documentNumber, otherEmployeeId);
//then
verify(document).confirm(employee, otherEmployee);
}
}