// Imports
import { Worker } from "rabbiteer";
import evt from "../../sockets/events.js";
// Class
export default class TestResultsWorker extends Worker {
  constructor(skio) {
    super("TestResults");
    this.skio = skio;
  }

  /* Example Test Result
 {
   testName: “SomeTest”,
   testClass: “SomeClass”,
   testMethod: “SomeMethod”,
   testType: “API/UI”,
   testTimestamp: 123893024,
   origin: “TestSuite”,
   failed: true,
   failedMessage: “Some Failure”,
   screenshotUrl: “https://screenshot”,
   expectedScreenshotUrl: “https://expected”
   consoleLogUrl: “https://consolelog”
}
*/
  onMessage(testResult) {
    const { pipelineData, pipelineTriggers, pipelineDelay } = testResult;
    const pipelineTrigger = { pipelineData, pipelineTriggers, pipelineDelay };
    // Alter to start next test
    // TODO the delay should be autopopulated either by the suite, or filled in by the server
    if (pipelineTriggers)
      return this.pipelineTrigger(
        pipelineTrigger,
        testResult.pipelineDashboardSocket
      );
    this.pipelineClose(testResult.pipelineDashboardSocket);
  }

  pipelineTrigger(pipelineTrigger, socketId) {
    pipelineTrigger.pipelineDelay = 1000 * 5;
    this.skio.to(socketId).emit(evt.PPL_TRG, pipelineTrigger);
  }

  pipelineClose(socketId) {
    this.skio.to(socketId).emit(evt.PPL_CLS);
  }
}
