const module = require('../../fixtures/module.json');

describe('Survey', () => {
  beforeEach(() => {
    cy.setup();
  });

  it('should display and fill out the survey', () => {
    let answer = null;

    cy.mockGraphqlOps({
      operations: {
        MeQuery: {
          me: {
            permissions: [],
          }
        },
        ModuleQuery: variables => ({module}),
        SurveyQuery: () => ({
          survey: {
            id: 'U3VydmV5Tm9kZTox',
            title: 'Test',
            data: '{"pages": [{"name": "Seite 1", "elements": [{"name": "Fall 1", "type": "panel", "title": "Fall 1", "elements": [{"name": "A: Max gibt ihr das Geld und muss das Billardspiel absagen.", "type": "text", "placeHolder": "Passende Tugenden erfassen...", "correctAnswer": "Triss"}, {"name": "question2", "type": "text", "title": "B: Max gibt ihr das Geld nicht und geht Billard spielen.", "placeHolder": "Passende Tugenden erfassen...", "correctAnswer": "Jaskier"}], "description": "Max hat Ende Monat noch Fr. 20.\\u2013 \\u00fcbrig, die er gespart hat, um mit seinem besten Kumpel, der ein halbes Jahr im Ausland verweilte, Billard spielen zu gehen. Doch dann bittet ihn seine j\\u00fcngere Schwester um Geld. Sie hat ein unverhofftes Date mit einem jungen Mann, in den sie sich bereits vor Monaten unsterblich verliebt hat. Leider ist ihr Kontostand aber bereits auf Null."}]}, {"name": "Seite 2", "elements": [{"name": "panel1", "type": "panel", "title": "Fall 2", "elements": [{"name": "question1", "type": "text", "title": "A: Silvio bringt seinen Mitfahrer in Sicherheit.", "placeHolder": "Passende Tugenden erfassen...", "correctAnswer": "Yennefer", "useDisplayValuesInTitle": false}, {"name": "question3", "type": "text", "title": "B: Silvio sperrt die Strasse ab.", "placeHolder": "Passende Tugenden erfassen...", "correctAnswer": "Geralt"}], "description": "Auf der Autobahn brennt ein Lastwagen, der jederzeit explodieren kann. Silvio, dem Fahrer, bleiben nur noch wenige Minuten: Entweder bringt er seinen ohnm\\u00e4chtig gewordenen Mitfahrer in Sicherheit oder er sperrt die Strasse ab, die nach wie vor dicht befahren wird."}]}], "completeText": "Abschliessen", "showQuestionNumbers": "off"}',
            module: {
              id: 'TW9kdWxlTm9kZToxNw==',
              __typename: 'ModuleNode'
            },
            answer,
            __typename: 'SurveyNode'
          },

        }),
        UpdateAnswer: variables => {
          answer = variables.input.answer;
          return {
            updateAnswer: {
              answer,
              __typename: 'UpdateAnswerPayload'
            }
          };
        },
        ModuleSolutions: {
          module: {
            solutionsEnabled: false
          }
        }
      }
    });

    cy.visit('/survey/U3VydmV5Tm9kZTox');

    cy.get('.survey__panel-title').should('contain', 'Fall 1');

    cy.get('#sq_100i').type('Wohlwollen');
    cy.get('#sq_101i').type('Demut');

    cy.get('[value="Speichern & Weiter"]').click();

    cy.get('#sq_102i').type('Keuschheit');
    cy.get('#sq_103i').type('Geduld');

    cy.get('[value=Abschliessen]').click();

    cy.visit('/survey/U3VydmV5Tm9kZTox');

    cy.get('#sq_100i').should('have.value', 'Wohlwollen');
  });
});
