// 每一 describe 就是一個測試套件
// 每一 it 就是一個測試命令
describe('Save Log and Filter', ()=>{
  beforeEach(() => {
    cy.visit('https://REDACTED-HOST/files');
    cy.login();
    cy.visit('https://REDACTED-HOST/files');
  });

  it('save log', () => {
    // enter log
    cy.url().should('include', 'files');
    // cy.contains('.fileName', 'random').dblclick(); // 選取 'random' log 檔
    cy.get('table tr')
      .filter(':contains("Log")') // 選擇 type Log
      .filter(':contains("random")') // 選擇 random log 檔
      .dblclick(); // 對選中的 tr 執行雙擊
    cy.contains('h2', 'DISCOVER'); // 斷言在 Discover 頁
    cy.url().should('include', 'discover/map/log'); // 斷言在 discover/map/log/:id 路徑
    cy.wait(3000)

    // select radio
    cy.get('#iconFilter').click(); // 選取 Filter sidebar
    cy.get('input#Sequence0').should('be.checked'); // 選取 Radio 'Sequence'
    cy.contains('label', 'Have activity(s)') // 選取 Radio 'Have activity(s)'
      .prev(2)
      .find('input')
      .should('have.attr', 'type', 'radio') // select the previous element
      .should('be.checked'); // confirm it's type radio (optional)

    // select table item
    cy.get('.allCheckboxAct') // 選取 all select
      .find('input')
      .should('not.be.visible').check({ force: true}).should('be.checked'); // 打開隱藏項目並選取

    // click Alpay and click Alppy All
    cy.contains('button', 'Apply').click();
    cy.get('#tabFunnel').click();
    cy.contains('.p-timeline', 'Sequence');
    cy.contains('button', 'Apply All').click();

    // Save log
    cy.contains('button', 'Save').click();
    cy.contains('.swal2-title', 'SAVE NEW FILTER');
    cy.contains('button', 'OK').click();
    cy.contains('#swal2-validation-message', 'You need to write something!'); // 不輸入要跳驗證
    cy.get('.swal2-input').clear().type('random-E2Etesting');
    cy.contains('button', 'OK').click();
    cy.contains('#swal2-html-container', 'random-E2Etesting');

    // 回到 Files 檢查是否有新增 Filter 'random-E2Etesting'.
    cy.visit('https://REDACTED-HOST/files');
    cy.url().should('include', 'files');
    cy.contains('.fileName', 'random-E2Etesting');
  });

  it('save filter', () => {
    // enter log
    cy.url().should('include', 'files');
    cy.contains('.fileName', 'random-E2Etesting').dblclick(); // 選取 'random' log 檔
    cy.contains('h2', 'DISCOVER'); // 斷言在 Discover 頁
    cy.url().should('include', 'discover/map/filter'); // 斷言在 discover/map/filter/:id 路徑
    cy.wait(3000)

    // Delete All
    cy.get('#iconFilter').click(); // 選取 Filter sidebar
    cy.get('#tabFunnel').click();
    cy.contains('button', 'Delete All').click();

    // select radio
    cy.get('#tabFilter').click();
    cy.get('input#Sequence0').should('be.checked'); // 選取 Radio 'Sequence'
    cy.contains('label', 'Have activity(s)') // 選取 Radio 'Have activity(s)'
      .prev(2)
      .find('input')
      .should('have.attr', 'type', 'radio') // select the previous element
      .should('be.checked'); // confirm it's type radio (optional)

    // select table item
    cy.get('.allCheckboxAct') // 選取 all select
      .find('input')
      .should('not.be.visible').check({ force: true}).should('be.checked'); // 打開隱藏項目並選取

    // click Alpay and click Alppy All
    cy.contains('button', 'Apply').click();
    cy.get('#tabFunnel').click();
    cy.contains('.p-timeline', 'Sequence');
    cy.contains('button', 'Apply All').click();

    // save filter
    cy.contains('button', 'Save').click();
    cy.contains('#swal2-html-container', 'random-E2Etesting');
  });

  it('no save log', () => {
    // enter log
    cy.url().should('include', 'files');
    // cy.contains('.fileName', 'random').dblclick(); // 選取 'random' log 檔
    cy.get('table tr')
      .filter(':contains("Log")') // 選擇 type Log
      .filter(':contains("random")') // 選擇 random log 檔
      .dblclick(); // 對選中的 tr 執行雙擊
    cy.contains('h2', 'DISCOVER'); // 斷言在 Discover 頁
    cy.url().should('include', 'discover/map/log'); // 斷言在 discover/map/log/:id 路徑
    cy.wait(3000)

    // select radio
    cy.get('#iconFilter').click(); // 選取 Filter sidebar
    cy.get('input#Sequence0').should('be.checked'); // 選取 Radio 'Sequence'
    cy.contains('label', 'Have activity(s)') // 選取 Radio 'Have activity(s)'
      .prev(2)
      .find('input')
      .should('have.attr', 'type', 'radio') // select the previous element
      .should('be.checked'); // confirm it's type radio (optional)

    // select table item
    cy.get('.allCheckboxAct') // 選取 all select
      .find('input')
      .should('not.be.visible').check({ force: true}).should('be.checked'); // 打開隱藏項目並選取

    // click Alpay and click Alppy All
    cy.contains('button', 'Apply').click();
    cy.get('#tabFunnel').click();
    cy.contains('.p-timeline', 'Sequence');
    cy.contains('button', 'Apply All').click();
    cy.wait(3000)

    cy.get('#backPage').click();
    cy.contains('.swal2-title', 'SAVE YOUR FILTER');
    cy.contains('button', 'No').click();
    cy.url().should('include', 'files');
  })
});
