// Testing File Page: upload, download, delete, rename
// upload: 第一階段上傳錯誤、第二階段上傳錯誤、改名、改名前後空格、回上一頁、清空
// delete: 第一階段刪除錯誤訊息
// rename: 五種改名介面是否有出現
describe('File Upload etc', () => {
  beforeEach(() => {
    cy.visit('https://REDACTED-HOST/');
    cy.login();
    cy.visit('https://REDACTED-HOST/files');
  });

  // it('Phase one worng file upload.', () => {
  //   cy.contains('div', 'Upload').click();
  //   // 不是 UTF-8
  //   cy.get('input[type="file"]').selectFile('cypress/fixtures/csv/big5.csv');
  //   cy.contains('.swal2-html-container', 'UFT-8');
  //   cy.wait(1000);
  //   cy.closePopup();
  //   // 沒有資料
  //   cy.get('input[type="file"]').selectFile('cypress/fixtures/csv/empty.csv');
  //   cy.contains('.swal2-html-container', 'Need at least one record of data.');
  //   cy.wait(1000);
  //   cy.closePopup();
  //   // 欄位不滿 5 欄
  //   cy.get('input[type="file"]').selectFile('cypress/fixtures/csv/insufficient-columns.csv');
  //   cy.contains('.swal2-html-container', 'Need at least five columns of data.');
  //   cy.wait(1000);
  //   cy.closePopup();
  //   // 不是 csv
  //   cy.get('input[type="file"]').selectFile('cypress/fixtures/csv/favicon.ico');
  //   cy.contains('.swal2-html-container', 'CSV');
  //   cy.wait(1000);
  //   cy.closePopup();
  // });

  // it('Upload Page, rename, reset, back to page', () => {
  //   cy.contains('div', 'Upload').click();
  //   cy.get('input[type="file"]').selectFile('cypress/fixtures/csv/worngFile.csv');
  //   // rename
  //   cy.get('#fileNameInput').type('  is space  ').blur();
  //   cy.get('#fileNameInput').should('have.value', 'worngFile  is space');
  //   cy.get('#fileNameInput').clear().type('  is space  ').blur();
  //   cy.get('#fileNameInput').should('have.value', 'is space');
  //   // reset
  //   cy.get('div[data-type="timestamp"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Timestamp*"]').click(); // 使用 filter 選擇包含特定屬性的元素
  //   cy.get('div[data-type="timestamp"] span').contains('Timestamp*');
  //   cy.get('div[data-type="case id"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Case ID*"]').click();
  //   cy.get('div[data-type="case id"] span').contains('Case ID*');
  //   cy.get('div[data-type="name"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Activity*"]').click();
  //   cy.get('div[data-type="name"] span').contains('Activity*');
  //   cy.get('div[data-type="instance"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Activity Instance ID*"]').click();
  //   cy.get('div[data-type="instance"] span').contains('Activity Instance ID*');
  //   cy.get('div[data-type="status"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Status*"]').click();
  //   cy.get('div[data-type="status"] span').contains('Status*');
  //   cy.contains('.btn', 'Reset').click();
  //   cy.get('div[data-type="timestamp"] span').contains('Not Assigned');
  //   cy.get('div[data-type="case id"] span').contains('Not Assigned');
  //   cy.get('div[data-type="name"] span').contains('Not Assigned');
  //   cy.get('div[data-type="instance"] span').contains('Not Assigned');
  //   cy.get('div[data-type="status"] span').contains('Not Assigned');
  //   // back to page
  //   cy.contains('.btn', 'Cancel').click();
  //   cy.url().should('include', 'files');
  // });

  // it('Phase two worng file upload.', () => {
  //   cy.contains('div', 'Upload').click();
  //   cy.get('input[type="file"]').selectFile('cypress/fixtures/csv/worngFile.csv');
  //   // select
  //   cy.get('div[data-type="timestamp"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Timestamp*"]').click();
  //   cy.get('div[data-type="timestamp"] span').contains('Timestamp*');
  //   cy.get('div[data-type="case id"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Case ID*"]').click();
  //   cy.get('div[data-type="case id"] span').contains('Case ID*');
  //   cy.get('div[data-type="name"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Activity*"]').click();
  //   cy.get('div[data-type="name"] span').contains('Activity*');
  //   cy.get('div[data-type="instance"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Activity Instance ID*"]').click();
  //   cy.get('div[data-type="instance"] span').contains('Activity Instance ID*');
  //   cy.get('div[data-type="status"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Status*"]').click();
  //   cy.get('div[data-type="status"] span').contains('Status*');
  //   // send
  //   cy.contains('.btn', 'Upload').click();
  //   // 'Are you sure?' SweetAlert2 的按鈕設為 display: none，使用 force: true 打開
  //   cy.contains('h2.swal2-title', 'ARE YOU SURE?')
  //   .siblings('.swal2-actions')  // 找到同級的 .swal2-actions
  //   .find('button.swal2-confirm')  // 在 .swal2-actions 中找到 button.swal2-confirm
  //   .click({ force: true });
  //   // Error Message
  //   cy.contains('h2.swal2-title', 'UPLOAD FAILED');
  //   cy.get('div.swal2-html-container').find('li').should('have.length', 5) // 確認有 5 個錯誤訊息項目
  //   cy.get('div.swal2-html-container li').should('contain', 'unregnizable').and('contain', 'Status');
  //   cy.get('div.swal2-html-container li').should('contain', 'missing').and('contain', 'name');
  //   cy.get('div.swal2-html-container').contains('p', 'There are more errors.');
  // });

  // it('Right file upload.', () => {
  //   cy.contains('div', 'Upload').click();
  //   cy.get('input[type="file"]').selectFile('cypress/fixtures/csv/rightFile.csv');
  //   // 斷言按鈕是否禁用
  //   cy.contains('.btn', 'Upload').should('be.disabled');
  //   // select
  //   cy.get('div[data-type="Timestamp"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Timestamp*"]').click();
  //   cy.get('div[data-type="Timestamp"] span').contains('Timestamp*');
  //   cy.get('div[data-type="CaseID"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Case ID*"]').click();
  //   cy.get('div[data-type="CaseID"] span').contains('Case ID*');
  //   cy.get('div[data-type="Activity"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Activity*"]').click();
  //   cy.get('div[data-type="Activity"] span').contains('Activity*');
  //   cy.get('div[data-type="Activity_Instance"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Activity Instance ID*"]').click();
  //   cy.get('div[data-type="Activity_Instance"] span').contains('Activity Instance ID*');
  //   cy.get('div[data-type="Status"]').click();
  //   cy.get('.p-dropdown-item').filter('[aria-label="Status*"]').click();
  //   cy.get('div[data-type="Status"] span').contains('Status*');
  //   // send
  //   cy.contains('.btn', 'Upload').click();
  //   // 'Are you sure?'
  //   cy.contains('h2.swal2-title', 'ARE YOU SURE?').siblings('.swal2-actions').find('button.swal2-confirm').click();
  //   cy.wait(3000);
  //   // 回到 file page
  //   cy.url().should('include', 'files');
  //   // 只選文本內容而不包括子元素的文字
  //   cy.get('table tbody tr:first-child td:first-child')
  //     .invoke('text') // 提取其文字
  //     .should('include', 'rightFile');
  // });

  // it('Donwload file.', () => {
  //   const downloadsFolder = Cypress.config('downloadsFolder');
  //   const path = require('path');
  //   const filename = path.join(downloadsFolder, 'rightFile.csv');

  //   // 選取檔案
  //   cy.get('table tbody tr:first-child td:first-child')
  //     .contains('rightFile')
  //     .rightclick();
  //   cy.get('.p-contextmenu')
  //     .find('li')
  //     .filter(':contains("Download")')
  //     .click();
  //   cy.wait(2000);
  //   // download to '/cypress/downloads'
  //   cy.readFile(filename);
  //   cy.wait(2000);
  // });

  // it('Delete file.', () => {
  //   // select file
  //   cy.get('table tbody tr:first-child td:first-child')
  //     .contains('rightFile') // rightclick 需要 DOM 元素做目標，前面不能階斷言 should
  //     .rightclick();
  //   cy.get('.p-contextmenu')
  //     .find('li')
  //     .filter(':contains("Delete")')
  //     .click();
  //   // delete file
  //   cy.contains('h2.swal2-title', 'Confirm Deletion').siblings('.swal2-actions').find('button.swal2-confirm').click();
  // });
});
