Merge branch 'mmw/JAL-4199-web-services-testing' into mmw/bug/JAL-4241-annotation...
[jalview.git] / test / jalview / ws2 / actions / alignment / AlignmentActionTest.java
index 1725045..d7ef20b 100644 (file)
@@ -1,5 +1,6 @@
 package jalview.ws2.actions.alignment;
 
+import static jalview.testutils.Matchers.matchesSequenceString;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.hasProperty;
@@ -22,9 +23,6 @@ import java.util.concurrent.TimeUnit;
 
 import javax.help.UnsupportedOperationException;
 
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
 import org.mockito.ArgumentCaptor;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.DataProvider;
@@ -36,6 +34,7 @@ import jalview.datamodel.SequenceI;
 import jalview.gui.AlignViewport;
 import jalview.viewmodel.AlignmentViewport;
 import jalview.ws.params.ParamDatastoreI;
+import jalview.ws2.actions.PollingTaskExecutor;
 import jalview.ws2.actions.api.TaskEventListener;
 import jalview.ws2.api.Credentials;
 import jalview.ws2.api.JobStatus;
@@ -137,9 +136,9 @@ public class AlignmentActionTest
     verify(mockClient).submit(argument.capture(), eq(List.of()), eq(Credentials.empty()));
     assertThat(argument.getValue(),
         contains(
-            matchesSequence("ASTVLITOPDCMMQEGGST"),
-            matchesSequence("ASCGLITOMMQEGGST"),
-            matchesSequence("ASTVLOPDTMMQEL")));
+            matchesSequenceString("ASTVLITOPDCMMQEGGST"),
+            matchesSequenceString("ASCGLITOMMQEGGST"),
+            matchesSequenceString("ASTVLOPDTMMQEL")));
   }
 
   @Test(
@@ -158,9 +157,9 @@ public class AlignmentActionTest
     verify(mockClient).submit(argument.capture(), eq(List.of()), eq(Credentials.empty()));
     assertThat(argument.getValue(),
         contains(
-            matchesSequence("----ASTVLITOPDCMMQEGGST-"),
-            matchesSequence("-ASCGLITO------MMQEGGST-"),
-            matchesSequence("AS--TVL--OPDTMMQEL------")));
+            matchesSequenceString("----ASTVLITOPDCMMQEGGST-"),
+            matchesSequenceString("-ASCGLITO------MMQEGGST-"),
+            matchesSequenceString("AS--TVL--OPDTMMQEL------")));
   }
 
   @Test(
@@ -179,36 +178,9 @@ public class AlignmentActionTest
     verify(mockListener).taskCompleted(any(), argument.capture());
     var alignmentResult = argument.getValue().getAlignment();
     assertThat(alignmentResult, hasProperty("sequences", contains(
-        matchesSequence("ASTV-LITOPDCMMQEGGST----"),
-        matchesSequence("ASC-GLITO---MMQEGGST----"),
-        matchesSequence("ASTV-L--OPDTMMQE--L-----"))));
-  }
-
-  protected static Matcher<SequenceI> matchesSequence(String sequence)
-  {
-    return new TypeSafeMatcher<SequenceI>()
-    {
-      @Override
-      public boolean matchesSafely(SequenceI obj)
-      {
-        if (!(obj instanceof SequenceI))
-          return false;
-        var seq = (SequenceI) obj;
-        return seq.getSequenceAsString().equals(sequence);
-      }
-
-      @Override
-      public void describeTo(Description description)
-      {
-        description.appendText("a sequence ").appendValue(sequence);
-      }
-
-      @Override
-      public void describeMismatchSafely(SequenceI item, Description description)
-      {
-        description.appendText("was ").appendValue(item.getSequenceAsString());
-      }
-    };
+        matchesSequenceString("ASTV-LITOPDCMMQEGGST----"),
+        matchesSequenceString("ASC-GLITO---MMQEGGST----"),
+        matchesSequenceString("ASTV-L--OPDTMMQE--L-----"))));
   }
 
   protected TaskEventListener<AlignmentResult> performAction(
@@ -222,12 +194,16 @@ public class AlignmentActionTest
       return null;
     })
         .when(listener).taskCompleted(any(), any());
-    action.perform(viewport, List.of(), Credentials.empty(), listener);
+    var executor = PollingTaskExecutor.fromPool(viewport.getServiceExecutor());
+    var task = action.createTask(viewport, List.of(), Credentials.empty());
+    task.addTaskEventListener(listener);
+    var cancellable = executor.submit(task);
     try
     {
       latch.await(100, TimeUnit.MILLISECONDS);
     } catch (InterruptedException e)
     {
+      cancellable.cancel(true);
     }
     return listener;
   }