describe("评卷页面-裁切图", () => {
  beforeEach(() => {
    cy.networkStub();
    cy.visit("/");
    cy.clock();
  });

  it("裁切图显示", () => {
    cy.wait(4000)
      .get(".mark-body-container .single-image-container")
      .should("exist");
  });

  it("键盘选择鼠标分数成功", () => {
    cy.wait(1000)
      .get(".mark-body-container")
      .get("body")
      .type("1")
      .trigger("click", {
        clientX: 200,
        clientY: 350,
      })
      .get(".cursor-border")
      .should("contain", "1");
  });

  it("键盘选择鼠标分数失败", () => {
    cy.wait(1000)
      .get(".mark-body-container")
      .get("body")
      .type("1.47")
      .trigger("click", {
        clientX: 200,
        clientY: 350,
      })
      .get(".cursor-border")
      .should("contain", "1.4");
  });

  it("裁切图点击-分数增加", () => {
    // 任务开始渲染了
    cy.get(".single-image-container");
    cy.tick(10000);
    // 等待遮罩层消除
    cy.get('[data-test="status-spin"]').should("not.exist");

    cy.get(".mark-body-container")
      .scrollTo(0, 0)
      .get("body")
      .type("1")
      .click(200, 300)
      .tick(3500)
      .get("body")
      .type("2")
      .click(300, 500)
      .tick(3500)
      .get(".single-image-container:nth(2)")
      .scrollIntoView()
      .get("body")
      .type("3")
      .click(400, 200)
      .tick(500);
    cy.get(".score-container").should("have.length", 3);

    cy.get(".total-score span span").contains("6");
  });

  it("裁切图点击-分数轨迹过近", () => {
    // 任务开始渲染了
    cy.get(".single-image-container");
    cy.tick(10000);
    // 等待遮罩层消除
    cy.get('[data-test="status-spin"]').should("not.exist");

    cy.get(".mark-body-container")
      .scrollTo(0, 0)
      .get("body")
      .type("1")
      .click(200, 300)
      .tick(1500)
      .get("body")
      .type("2")
      .click(205, 305)
      .tick(500);
    cy.get(".score-container").should("have.length", 1);

    cy.get(".total-score span span").contains("1");
  });

  it("裁切图点击-分数在有效区域外", () => {
    // 任务开始渲染了
    cy.get(".single-image-container");
    cy.tick(10000);
    // 等待遮罩层消除
    cy.get('[data-test="status-spin"]').should("not.exist");

    cy.get("body .mark-body-container")
      .scrollTo(0, 0)
      .get("body")
      .type("3")
      .click(900, 200)
      // 要给点时间页面计算动画
      .wait(500);

    cy.get("body .mark-body-container .score-container").should(
      "have.length",
      0
    );
  });

  it("清除本题分数", () => {
    // 任务开始渲染了
    cy.get(".single-image-container");
    cy.tick(10000);
    // 等待遮罩层消除
    cy.get('[data-test="status-spin"]').should("not.exist");

    cy.get("body .mark-body-container")
      .scrollTo(0, 0)
      .get("body")
      .type("3")
      .click(200, 200)
      .tick(1500)
      .get("body")
      .type("2")
      .click(200, 300)
      .tick(500);

    cy.get('[data-test="clear-score"]').click();
    cy.tick(500);
    cy.get("body .mark-body-container .score-container").should(
      "have.length",
      0
    );
  });
});
