test parent navigation
This commit is contained in:
parent
afc61cbd38
commit
3a9116dc3f
3 changed files with 69 additions and 0 deletions
|
|
@ -94,6 +94,7 @@ class ElementsEndpointTest extends TestCase
|
||||||
'longPdfPath' => '/assets/pdfs/baderech-long.pdf',
|
'longPdfPath' => '/assets/pdfs/baderech-long.pdf',
|
||||||
'youtubeUrl' => $sampleYoutubeUrl,
|
'youtubeUrl' => $sampleYoutubeUrl,
|
||||||
],
|
],
|
||||||
|
'parentElement' => null,
|
||||||
'siblingElements' => [
|
'siblingElements' => [
|
||||||
[
|
[
|
||||||
'id' => $element->getId(),
|
'id' => $element->getId(),
|
||||||
|
|
@ -151,6 +152,11 @@ class ElementsEndpointTest extends TestCase
|
||||||
);
|
);
|
||||||
|
|
||||||
$response->assertOk();
|
$response->assertOk();
|
||||||
|
$response->assertJsonPath('parentElement', [
|
||||||
|
'id' => $parentElement->getId(),
|
||||||
|
'title' => 'Baderech HaAvodah',
|
||||||
|
'description' => 'A structured path for growth',
|
||||||
|
]);
|
||||||
$response->assertJsonPath('siblingElements', [
|
$response->assertJsonPath('siblingElements', [
|
||||||
[
|
[
|
||||||
'id' => $firstChildElement->getId(),
|
'id' => $firstChildElement->getId(),
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,7 @@ class ElementControllerTest extends TestCase
|
||||||
'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s',
|
'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s',
|
||||||
$body['element']['youtubeUrl'],
|
$body['element']['youtubeUrl'],
|
||||||
);
|
);
|
||||||
|
$this->assertNull($body['parentElement']);
|
||||||
$this->assertSame([
|
$this->assertSame([
|
||||||
[
|
[
|
||||||
'id' => $firstChildElement->getId(),
|
'id' => $firstChildElement->getId(),
|
||||||
|
|
@ -202,6 +203,11 @@ class ElementControllerTest extends TestCase
|
||||||
|
|
||||||
$this->assertEquals(200, $response->getStatusCode());
|
$this->assertEquals(200, $response->getStatusCode());
|
||||||
$body = json_decode($response->getContent(), true);
|
$body = json_decode($response->getContent(), true);
|
||||||
|
$this->assertSame([
|
||||||
|
'id' => $parentElement->getId(),
|
||||||
|
'title' => 'Baderech HaAvodah',
|
||||||
|
'description' => 'A structured path for growth',
|
||||||
|
], $body['parentElement']);
|
||||||
$this->assertSame([
|
$this->assertSame([
|
||||||
[
|
[
|
||||||
'id' => $firstChildElement->getId(),
|
'id' => $firstChildElement->getId(),
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,63 @@ function loginAsAdmin(): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('element sibling navigation', () => {
|
describe('element sibling navigation', () => {
|
||||||
|
it('navigates public parent elements when one exists', () => {
|
||||||
|
cy.visit('/element/1')
|
||||||
|
cy.contains('h1', 'Baderech HaAvodah').should('be.visible')
|
||||||
|
cy.get('[data-cy="element-parent-link"]').should('not.exist')
|
||||||
|
|
||||||
|
cy.visit('/element/2')
|
||||||
|
cy.contains('h1', '1. Introduction').should('be.visible')
|
||||||
|
cy.get('[data-cy="element-parent-link"]').as('parentLink')
|
||||||
|
cy.get('@parentLink')
|
||||||
|
.should('be.visible')
|
||||||
|
.and('contain.text', 'Parent: Baderech HaAvodah')
|
||||||
|
cy.get('@parentLink').should('have.attr', 'href', '/element/1')
|
||||||
|
cy.get('@parentLink').then((parentLinkElements) => {
|
||||||
|
cy.get('h1').then((headingElements) => {
|
||||||
|
expect(
|
||||||
|
parentLinkElements[0].compareDocumentPosition(headingElements[0])
|
||||||
|
& Node.DOCUMENT_POSITION_FOLLOWING,
|
||||||
|
).to.not.equal(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
cy.get('@parentLink').click()
|
||||||
|
|
||||||
|
cy.location('pathname').should('eq', '/element/1')
|
||||||
|
cy.contains('h1', 'Baderech HaAvodah').should('be.visible')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('navigates admin parent elements when one exists', () => {
|
||||||
|
loginAsAdmin()
|
||||||
|
|
||||||
|
cy.visit('/admin/element/1')
|
||||||
|
cy.get('[data-cy="admin-element-title"]')
|
||||||
|
.should('have.value', 'Baderech HaAvodah')
|
||||||
|
cy.get('[data-cy="admin-parent-link"]').should('not.exist')
|
||||||
|
|
||||||
|
cy.visit('/admin/element/2')
|
||||||
|
cy.get('[data-cy="admin-element-title"]')
|
||||||
|
.should('have.value', '1. Introduction')
|
||||||
|
cy.get('[data-cy="admin-parent-link"]').as('parentLink')
|
||||||
|
cy.get('@parentLink')
|
||||||
|
.should('be.visible')
|
||||||
|
.and('contain.text', 'Parent: Baderech HaAvodah')
|
||||||
|
cy.get('@parentLink').should('have.attr', 'href', '/admin/element/1')
|
||||||
|
cy.get('@parentLink').then((parentLinkElements) => {
|
||||||
|
cy.get('.admin-element-page__heading').then((headingElements) => {
|
||||||
|
expect(
|
||||||
|
parentLinkElements[0].compareDocumentPosition(headingElements[0])
|
||||||
|
& Node.DOCUMENT_POSITION_FOLLOWING,
|
||||||
|
).to.not.equal(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
cy.get('@parentLink').click()
|
||||||
|
|
||||||
|
cy.location('pathname').should('eq', '/admin/element/1')
|
||||||
|
cy.get('[data-cy="admin-element-title"]')
|
||||||
|
.should('have.value', 'Baderech HaAvodah')
|
||||||
|
})
|
||||||
|
|
||||||
it('navigates public same-parent elements with wraparound', () => {
|
it('navigates public same-parent elements with wraparound', () => {
|
||||||
cy.visit('/element/1')
|
cy.visit('/element/1')
|
||||||
cy.contains('h1', 'Baderech HaAvodah').should('be.visible')
|
cy.contains('h1', 'Baderech HaAvodah').should('be.visible')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue