Cypress.on('uncaught:exception', (err, runnable) => {
  // returning false here prevents Cypress from
  // failing the test
  return false
})

describe('test_all', { 'scrollBehavior': false }, () => {
  beforeEach(() => {
    test_login();
  })
  it('test emblem back-end service tenants module', () => {
    test_tenants();
  })
  it('test emblem back-end service articles module', () => {
    test_articles();
  })
  it('test emblem back-end service assets module', () => {
    test_assets();
  }) 
  it('test emblem back-end service code-batch module', () => {
    test_code_batch();
  })
  it('test emblem back-end service code module', () => {
    test_code();
  }) 
  it('test emblem back-end service scan-data module', () => {
    test_scan_data();
  })
})

// 登录
function test_login() {
  cy.visit('/')
  cy.get('#username').type('admin')
  cy.get('#password').type('123456')
  cy.get("#login").click();
  cy.contains("div", '登录成功');
}

// 租户管理测试 
function test_tenants() {
  cy.get("a[href='/tenants']").click();
  // 新增
  cy.get('#add-btn').click();
  cy.get('#username').type("user1");
  cy.get('#display_name').type("测试用户1");
  cy.get('#mobile').type("11111111111");
  cy.get('#password').clear();
  cy.get('#password').type("123456");
  cy.get('#submit-btn').click();
  cy.contains('#username0', 'user1')
  //修改
  cy.wait(2000);
  cy.get('#refresh-btn').click({ force: true });
  cy.get('#edit-btn-0').click({ force: true });
  cy.get('#username').clear({ force: true });
  cy.get('#username').type("user_new");
  cy.get('#display_name').clear();
  cy.get('#display_name').type("测试用户new");
  cy.get('#mobile').clear();
  cy.get('#mobile').type("12111111111");
  cy.get('#password').clear();
  cy.get('#password').type("654321");
  cy.get('#submit-btn').click();
  cy.contains('#username0', 'user_new')
  //删除
  cy.wait(2000);
  cy.get('#refresh-btn').click({ force: true });
  cy.get('#del-btn-0').click({ force: true });
  cy.get('#verify-input').clear();
  cy.get('#verify-input').type("user_new");
  cy.get('#submit-btn').click();
}

// 内容管理测试 
function test_articles() {
  cy.get("a[href='/articles']").click();
  //新增
  cy.get('#add-btn').click({ force: true });
  cy.get('#title').type("article1");
  cy.get('#submit-btn').click();
  cy.contains('#title0', 'article1')
  //修改
  cy.wait(2000);
  cy.get('#refresh-btn').click({ force: true });
  cy.get('#edit-btn-0').click({ force: true });
  cy.get('#title').clear();
  cy.get('#title').type("article2");
  cy.get('#submit-btn').click();
  cy.contains('#title0', 'article2')
  //删除
  cy.wait(2000);
  cy.get('#refresh-btn').click({ force: true });
  cy.get('#del-btn-0').click({ force: true });
  cy.get('#submit-btn').click();
}

// 文件管理测试 
function test_assets() {
  cy.get("a[href='/assets']").click();

  cy.get('.btn-info').click({ force: true });
  cy.get('#search-btn').click({ force: true });
}

// 序列码批次测试
function test_code_batch() {
  // 先新增个用户
  cy.get("a[href='/tenants']").click();
  // 新增
  cy.get('#add-btn').click();
  cy.get('#username').type("Jotaro");
  cy.get('#display_name').type("空条承太郎");
  cy.get('#mobile').type("14111111111");
  cy.get('#password').clear();
  cy.get('#password').type("123456");
  cy.get('#submit-btn').click();
  cy.contains('#username0', 'Jotaro')
  // 切换到序列码模块
  cy.get("a[href='/code-batch']").click();
  //新建
  cy.get('#add-btn').click({ force: true });
  cy.get('#qr_angle').type(5);
  cy.get('#qr_angle_allowed_error').type(1);
  cy.get('#code_prefix').type("CB1前缀");
  cy.get('#description').type("CB1备注");
  cy.get('#is_active').click();
  cy.get('#submit-btn').click();
  cy.contains('#code_prefix0', 'CB1前缀')
  //冻结
  cy.wait(1000);
  cy.get('#handle-btn-0-0').click({ force: true });
  cy.get('#submit-btn').click({ force: true });
  cy.wait(1000);
  cy.get('#refresh-btn').click({ force: true });
  cy.contains('#handle-btn-0-0', '激活')
  //激活
  cy.wait(1000);
  cy.get('#handle-btn-0-0').click({ force: true });
  cy.get('#submit-btn').click({ force: true });
  cy.wait(1000);
  cy.get('#refresh-btn').click({ force: true });
  cy.contains('#handle-btn-0-0', '冻结')
  //绑定租户
  cy.get('#handle-btn-0-1').click({ force: true });
  cy.get('#bind-tenant-select').select('Jotaro')
  cy.get('#submit-btn').click();
  cy.get('#close-btn').click();
  cy.get('#refresh-btn').click({force: true});
  //生成序列码
  cy.get('#handle-btn-0-2').click({ force: true });
  cy.get('.form-control').clear({ force: true })
  cy.get('.form-control').type(20)
  cy.get('.btn').click({ force: true })
  //序列码导入
  cy.get('#handle-btn-0-3').click({ force: true });
  cy.get('.form-control').click({ force: true });
  cy.get('#import-btn').click({ force: true });
  cy.contains('#alert-div', '请选择文件');
  cy.get('#return-btn').click()
  //序列码导出
  cy.get('#handle-btn-0-4').click({ force: true });
  cy.get('#export-btn').click();
  cy.wait(3000);
  cy.get('#download-btn').click();
  cy.get('#close-btn').click();
  cy.get('#return-btn').click();
  //修改
  cy.get('#edit-btn-0').click({ force: true });
  cy.get('#qr_angle').clear();
  cy.get('#qr_angle').type(10);
  cy.get('#code_prefix').clear();
  cy.get('#code_prefix').type('CB1前缀_new');
  cy.get('#submit-btn').click({ force: true });
  cy.get('#refresh-btn').click({ force: true });
  cy.contains('#code_prefix0', 'CB1前缀_new')
  //删除
  cy.get('#del-btn-0').click({ force: true });
  cy.get('#submit-btn').click({ force: true });
  // 最后删除用户
  cy.get("a[href='/tenants']").click();
  cy.get('#del-btn-0').click({ force: true });
  cy.get('#verify-input').clear();
  cy.get('#verify-input').type("Jotaro");
  cy.get('#submit-btn').click();
}

//序列码管理测试
function test_code(){
  cy.get("a[href='/code']").click();
  //查找
  cy.get('#search-input').focus();
  cy.get('#search-input').type(10)
  cy.get('#search-btn').click({force: true});
  cy.contains('.alert-success', '查找关键字：10')
  if(Cypress.$('tbody > tr > td > #code0').length > 0){
    cy.get('tbody > tr > td > #code0').contains('10')
  }
  //清除
  cy.get('#clear-input').click({force: true});
}

//扫码记录测试
function test_scan_data(){
  cy.get("a[href='/scan-data']").click();
  //查找
  cy.get('#search-input').focus();
  cy.get('#search-input').type(10)
  cy.get('#search-btn').click({force: true})
  //批量导出
  cy.get('#batch-export-btn').click({force: true});
  cy.get('p').contains("导出时间长度 (小时)")
  cy.get('#export-hour-span').clear()
  cy.get('#export-hour-span').type(360)
  cy.get('#export-submit-btn').click();
  cy.wait(3000); 
  cy.get('#download-btn').click();
  cy.get('#close-btn').click();
}