describe('Docs (文档)', () => {
  beforeEach(() => {
    cy.visit('/docs', {
      onBeforeLoad(win) {
        win.localStorage.setItem('sp_login_expires', String(Date.now() + 86400000))
      }
    })
    cy.get('header').should('be.visible')
  })

  it('shows docs page with header', () => {
    cy.contains('个人文档').should('be.visible')
    cy.contains('随手记会自动识别内容').should('be.visible')
  })

  it('shows add document button', () => {
    cy.get('.btn-accent').should('contain', '新建文档')
  })

  it('opens new document form', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.edit-panel').should('be.visible')
    cy.contains('文档名称').should('be.visible')
    cy.contains('图标').should('be.visible')
    cy.contains('关键词').should('be.visible')
    cy.contains('提取规则').should('be.visible')
  })

  it('creates a document', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.edit-panel input').first().type('读书记录')
    cy.get('.emoji-pick').contains('📖').click()
    cy.get('.edit-panel input').eq(1).type('读完,看完')
    cy.get('.btn-accent').contains('保存').click()
    cy.get('.doc-card').should('contain', '读书记录')
    cy.get('.doc-card').should('contain', '📖')
  })

  it('shows 0 entries for new document', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.edit-panel input').first().type('空文档')
    cy.get('.btn-accent').contains('保存').click()
    cy.get('.doc-card').contains('空文档').parent().should('contain', '0 条')
  })

  it('opens document detail on click', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.edit-panel input').first().type('详情测试')
    cy.get('.btn-accent').contains('保存').click()
    cy.get('.doc-card').contains('详情测试').click()
    cy.get('.overlay.open').should('be.visible')
    cy.get('.panel').should('contain', '详情测试')
  })

  it('closes document detail', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.edit-panel input').first().type('关闭测试')
    cy.get('.btn-accent').contains('保存').click()
    cy.get('.doc-card').contains('关闭测试').click()
    cy.get('.btn-close').contains('关闭').click()
    cy.get('.overlay.open').should('not.exist')
  })

  it('edits a document from detail view', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.edit-panel input').first().type('编辑前')
    cy.get('.btn-accent').contains('保存').click()
    cy.get('.doc-card').contains('编辑前').click()
    cy.get('.btn-close').contains('编辑').click()
    cy.get('.edit-panel input').first().clear().type('编辑后')
    cy.get('.btn-accent').contains('保存').click()
    cy.get('.doc-card').should('contain', '编辑后')
  })

  it('deletes a document from detail view', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.edit-panel input').first().type('待删除文档')
    cy.get('.btn-accent').contains('保存').click()
    cy.get('.doc-card').contains('待删除文档').click()
    cy.get('.btn-close').contains('删除').click()
    cy.get('.doc-card').should('not.contain', '待删除文档')
  })

  it('cancel button closes form without saving', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.edit-panel input').first().type('取消测试')
    cy.get('.btn-close').contains('取消').click()
    cy.get('.edit-panel').should('not.exist')
    cy.get('.doc-card').should('not.contain', '取消测试')
  })

  it('emoji picker works', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.emoji-pick').should('have.length.gte', 10)
    cy.get('.emoji-pick').contains('🌙').click()
    cy.get('.emoji-pick').contains('🌙').should('have.class', 'active')
  })

  it('extract rule dropdown has options', () => {
    cy.get('.btn-accent').contains('新建文档').click()
    cy.get('.edit-panel select option').should('have.length', 3)
    cy.get('.edit-panel select').select('sleep')
    cy.get('.edit-panel select').should('have.value', 'sleep')
  })
})
