mirror of
https://github.com/go-vikunja/vikunja.git
synced 2026-04-26 07:05:32 +00:00
- Add missing task loading API intercepts to project-view-gantt.spec.ts (8 tests) - Add missing API intercepts to project-history.spec.ts (7 project visits) - Add missing API intercepts to filter-persistence.spec.ts (4 tests) - Ensure all task loading endpoints are covered: - **/api/v1/projects/*/views/*/tasks** (when viewId provided) - **/api/v1/projects/*/tasks** (fallback when viewId missing) - **/api/v1/tasks/all** (when projectId is null/undefined) - All tests now wait for API responses with 30s timeout - Intercepts set BEFORE navigation to prevent timing issues 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
70 lines
2.4 KiB
TypeScript
70 lines
2.4 KiB
TypeScript
import {createFakeUserAndLogin} from '../../support/authenticateUser'
|
|
|
|
import {ProjectFactory} from '../../factories/project'
|
|
import {prepareProjects} from './prepareProjects'
|
|
import {ProjectViewFactory} from '../../factories/project_view'
|
|
|
|
describe('Project History', () => {
|
|
createFakeUserAndLogin()
|
|
prepareProjects()
|
|
|
|
it('should show a project history on the home page', () => {
|
|
cy.intercept('GET', '**/api/v1/projects/*/views/*/tasks**').as('loadTasks')
|
|
cy.intercept('GET', '**/api/v1/projects/*/tasks**').as('loadTasks')
|
|
cy.intercept('GET', '**/api/v1/tasks/all**').as('loadTasks')
|
|
cy.intercept(Cypress.env('API_URL') + '/projects*').as('loadProjectArray')
|
|
cy.intercept(Cypress.env('API_URL') + '/projects/*').as('loadProject')
|
|
|
|
const projects = ProjectFactory.create(7)
|
|
ProjectViewFactory.truncate()
|
|
projects.forEach(p => ProjectViewFactory.create(1, {
|
|
id: p.id,
|
|
project_id: p.id,
|
|
}, false))
|
|
|
|
cy.visit('/')
|
|
cy.wait('@loadProjectArray')
|
|
cy.get('body')
|
|
.should('not.contain', 'Last viewed')
|
|
|
|
cy.visit(`/projects/${projects[0].id}/${projects[0].id}`)
|
|
cy.wait('@loadProject')
|
|
cy.wait('@loadTasks', {timeout: 30000})
|
|
cy.visit(`/projects/${projects[1].id}/${projects[1].id}`)
|
|
cy.wait('@loadProject')
|
|
cy.wait('@loadTasks', {timeout: 30000})
|
|
cy.visit(`/projects/${projects[2].id}/${projects[2].id}`)
|
|
cy.wait('@loadProject')
|
|
cy.wait('@loadTasks', {timeout: 30000})
|
|
cy.visit(`/projects/${projects[3].id}/${projects[3].id}`)
|
|
cy.wait('@loadProject')
|
|
cy.wait('@loadTasks', {timeout: 30000})
|
|
cy.visit(`/projects/${projects[4].id}/${projects[4].id}`)
|
|
cy.wait('@loadProject')
|
|
cy.wait('@loadTasks', {timeout: 30000})
|
|
cy.visit(`/projects/${projects[5].id}/${projects[5].id}`)
|
|
cy.wait('@loadProject')
|
|
cy.wait('@loadTasks', {timeout: 30000})
|
|
cy.visit(`/projects/${projects[6].id}/${projects[6].id}`)
|
|
cy.wait('@loadProject')
|
|
cy.wait('@loadTasks', {timeout: 30000})
|
|
|
|
// cy.visit('/')
|
|
// Not using cy.visit here to work around the redirect issue fixed in #1337
|
|
cy.get('nav.menu.top-menu a')
|
|
.contains('Overview')
|
|
.click()
|
|
|
|
cy.get('body')
|
|
.should('contain', 'Last viewed')
|
|
cy.get('[data-cy="projectCardGrid"]')
|
|
.should('not.contain', projects[0].title)
|
|
.should('contain', projects[1].title)
|
|
.should('contain', projects[2].title)
|
|
.should('contain', projects[3].title)
|
|
.should('contain', projects[4].title)
|
|
.should('contain', projects[5].title)
|
|
.should('contain', projects[6].title)
|
|
})
|
|
})
|