describe('API Health', () => {
  it('GET /api/notes returns array', () => {
    cy.request('/api/notes').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/todos returns array', () => {
    cy.request('/api/todos').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/inbox returns array', () => {
    cy.request('/api/inbox').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/reminders returns array', () => {
    cy.request('/api/reminders').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/goals returns array', () => {
    cy.request('/api/goals').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/checklists returns array', () => {
    cy.request('/api/checklists').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/sleep returns array', () => {
    cy.request('/api/sleep').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/gym returns array', () => {
    cy.request('/api/gym').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/period returns array', () => {
    cy.request('/api/period').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/docs returns array', () => {
    cy.request('/api/docs').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/bugs returns array', () => {
    cy.request('/api/bugs').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/reviews returns array', () => {
    cy.request('/api/reviews').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/schedule-modules returns array', () => {
    cy.request('/api/schedule-modules').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/schedule-slots returns array', () => {
    cy.request('/api/schedule-slots').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/weekly-template returns array', () => {
    cy.request('/api/weekly-template').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/health-items returns array', () => {
    cy.request('/api/health-items?type=health').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/health-plans returns array', () => {
    cy.request('/api/health-plans?type=health').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/health-checks returns array', () => {
    cy.request('/api/health-checks?type=health').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/backups returns array', () => {
    cy.request('/api/backups').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.be.an('array')
    })
  })

  it('GET /api/sleep-buddy returns buddy data', () => {
    cy.request('/api/sleep-buddy').then(res => {
      expect(res.status).to.eq(200)
      expect(res.body).to.have.property('users')
      expect(res.body).to.have.property('notifications')
    })
  })

  it('POST /api/login rejects wrong password', () => {
    cy.request({
      method: 'POST',
      url: '/api/login',
      body: { hash: 'wrong_hash' },
      failOnStatusCode: false,
    }).then(res => {
      expect(res.status).to.eq(401)
    })
  })
})
