package pipe.controllers;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import pipe.historyActions.annotation.ChangeAnnotationText;
import pipe.utilities.transformers.Contains;
import uk.ac.imperial.pipe.models.petrinet.Annotation;
import javax.swing.event.UndoableEditListener;
import javax.swing.undo.UndoableEdit;
import static org.mockito.Matchers.argThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class AnnotationControllerTest {
AnnotationController controller;
@Mock
Annotation annotation;
@Mock
UndoableEditListener listener;
@Before
public void setUp() {
controller = new AnnotationController(annotation, listener);
}
@Test
public void changesAnnotationText() {
String changedText = "This text has changed";
controller.setText(changedText);
verify(annotation).setText(changedText);
}
@Test
public void createsAnUndoItem() {
String existingText = "This is the existing text";
String changedText = "This text has changed";
when(annotation.getText()).thenReturn(existingText);
controller.setText(changedText);
UndoableEdit changeTextEdit = new ChangeAnnotationText(annotation, existingText, changedText);
verify(listener).undoableEditHappened(argThat(Contains.thisAction(changeTextEdit)));
}
}