|
- describe("Deep linking feature", () => {
- describe("in Swagger 2", () => {
- const swagger2BaseUrl = "/?deepLinking=true&url=/documents/features/deep-linking.swagger.yaml"
-
- describe("regular Operation", () => {
- OperationDeeplinkTestFactory({
- baseUrl: swagger2BaseUrl,
- elementToGet: ".opblock-get",
- correctElementId: "operations-myTag-myOperation",
- correctFragment: "#/myTag/myOperation",
- correctHref: "#/myTag/myOperation"
- })
- })
-
- describe("Operation with whitespace in tag+id", () => {
- const elementToGet = ".opblock-post"
- const correctFragment = "#/my%20Tag/my%20Operation"
-
- OperationDeeplinkTestFactory({
- baseUrl: swagger2BaseUrl,
- elementToGet,
- correctElementId: "operations-my_Tag-my_Operation",
- correctFragment,
- correctHref: "#/my%20Tag/my%20Operation"
- })
-
- const legacyFragment = "#/my_Tag/my_Operation"
-
- it("should expand the operation when reloaded and provided the legacy fragment", () => {
- cy.visit(`${swagger2BaseUrl}${legacyFragment}`)
- .reload()
- .get(`${elementToGet}.is-open`)
- .should("exist")
- })
-
- it.skip("should rewrite to the correct fragment when provided the legacy fragment", () => {
- cy.visit(`${swagger2BaseUrl}${legacyFragment}`)
- .reload()
- .window()
- .should("have.deep.property", "location.hash", correctFragment)
- })
- })
-
- describe("Operation with underscores in tag+id", () => {
- OperationDeeplinkTestFactory({
- baseUrl: swagger2BaseUrl,
- elementToGet: ".opblock-patch",
- correctElementId: "operations-underscore_Tag-underscore_Operation",
- correctFragment: "#/underscore_Tag/underscore_Operation",
- correctHref: "#/underscore_Tag/underscore_Operation"
- })
- })
-
- describe("Operation with UTF-16 characters", () => {
- OperationDeeplinkTestFactory({
- baseUrl: swagger2BaseUrl,
- elementToGet: ".opblock-head",
- correctElementId: "operations-шеллы-пошел",
- correctFragment: "#/%D1%88%D0%B5%D0%BB%D0%BB%D1%8B/%D0%BF%D0%BE%D1%88%D0%B5%D0%BB",
- correctHref: "#/шеллы/пошел"
- })
- })
-
- describe("Operation with no operationId", () => {
- OperationDeeplinkTestFactory({
- baseUrl: swagger2BaseUrl,
- elementToGet: ".opblock-put",
- correctElementId: "operations-tagTwo-put_noOperationId",
- correctFragment: "#/tagTwo/put_noOperationId",
- correctHref: "#/tagTwo/put_noOperationId"
- })
- })
-
- describe("regular Tag", () => {
- TagDeeplinkTestFactory({
- isTagCase: true,
- baseUrl: swagger2BaseUrl,
- elementToGet: `.opblock-tag[data-tag="myTag"][data-is-open="true"]`,
- correctElementId: "operations-tag-myTag",
- correctFragment: "#/myTag",
- correctHref: "#/myTag"
- })
- })
-
- describe("Tag with whitespace", () => {
- TagDeeplinkTestFactory({
- isTagCase: true,
- baseUrl: swagger2BaseUrl,
- elementToGet: `.opblock-tag[data-tag="my Tag"][data-is-open="true"]`,
- correctElementId: "operations-tag-my_Tag",
- correctFragment: "#/my%20Tag",
- correctHref: "#/my%20Tag"
- })
- })
- })
- describe("in OpenAPI 3", () => {
- const openAPI3BaseUrl = "/?deepLinking=true&url=/documents/features/deep-linking.openapi.yaml"
-
- describe("regular Operation", () => {
- OperationDeeplinkTestFactory({
- baseUrl: openAPI3BaseUrl,
- elementToGet: ".opblock-get",
- correctElementId: "operations-myTag-myOperation",
- correctFragment: "#/myTag/myOperation",
- correctHref: "#/myTag/myOperation"
- })
- })
-
- describe("Operation with whitespace in tag+id", () => {
- const elementToGet = ".opblock-post"
- const correctFragment = "#/my%20Tag/my%20Operation"
-
- OperationDeeplinkTestFactory({
- baseUrl: openAPI3BaseUrl,
- elementToGet: ".opblock-post",
- correctElementId: "operations-my_Tag-my_Operation",
- correctFragment,
- correctHref: "#/my%20Tag/my%20Operation"
- })
-
- const legacyFragment = "#/my_Tag/my_Operation"
-
- it("should expand the operation when reloaded and provided the legacy fragment", () => {
- cy.visit(`${openAPI3BaseUrl}${legacyFragment}`)
- .reload()
- .get(`${elementToGet}.is-open`)
- .should("exist")
- })
-
-
- it.skip("should rewrite to the correct fragment when provided the legacy fragment", () => {
- cy.visit(`${openAPI3BaseUrl}${legacyFragment}`)
- .reload()
- .window()
- .should("have.deep.property", "location.hash", correctFragment)
- })
- })
-
- describe("Operation with underscores in tag+id", () => {
- OperationDeeplinkTestFactory({
- baseUrl: openAPI3BaseUrl,
- elementToGet: ".opblock-patch",
- correctElementId: "operations-underscore_Tag-underscore_Operation",
- correctFragment: "#/underscore_Tag/underscore_Operation",
- correctHref: "#/underscore_Tag/underscore_Operation"
- })
- })
-
- describe("Operation with UTF-16 characters", () => {
- OperationDeeplinkTestFactory({
- baseUrl: openAPI3BaseUrl,
- elementToGet: ".opblock-head",
- correctElementId: "operations-шеллы-пошел",
- correctFragment: "#/%D1%88%D0%B5%D0%BB%D0%BB%D1%8B/%D0%BF%D0%BE%D1%88%D0%B5%D0%BB",
- correctHref: "#/шеллы/пошел"
- })
- })
-
- describe("Operation with no operationId", () => {
- OperationDeeplinkTestFactory({
- baseUrl: openAPI3BaseUrl,
- elementToGet: ".opblock-put",
- correctElementId: "operations-tagTwo-put_noOperationId",
- correctFragment: "#/tagTwo/put_noOperationId",
- correctHref: "#/tagTwo/put_noOperationId"
- })
- })
-
- describe("regular Tag", () => {
- TagDeeplinkTestFactory({
- isTagCase: true,
- baseUrl: openAPI3BaseUrl,
- elementToGet: `.opblock-tag[data-tag="myTag"][data-is-open="true"]`,
- correctElementId: "operations-tag-myTag",
- correctFragment: "#/myTag",
- correctHref: "#/myTag"
- })
- })
-
- describe("Tag with whitespace", () => {
- TagDeeplinkTestFactory({
- isTagCase: true,
- baseUrl: openAPI3BaseUrl,
- elementToGet: `.opblock-tag[data-tag="my Tag"][data-is-open="true"]`,
- correctElementId: "operations-tag-my_Tag",
- correctFragment: "#/my%20Tag",
- correctHref: "#/my%20Tag"
- })
- })
- })
- })
-
- function OperationDeeplinkTestFactory({ baseUrl, elementToGet, correctElementId, correctFragment, correctHref }) {
- it("should generate a correct element ID", () => {
- cy.visit(baseUrl)
- .get(elementToGet)
- .should("have.id", correctElementId)
- })
-
- it("should add the correct element fragment to the URL when expanded", () => {
- cy.visit(baseUrl)
- .get(elementToGet)
- .click()
- cy.location().should((loc) => {
- expect(loc.hash).to.eq(correctFragment)
- })
- })
-
- it("should provide an anchor link that has the correct fragment as href", () => {
- cy.visit(baseUrl)
- .get(elementToGet)
- .find("a")
- .should("have.attr", "href", correctHref)
- .click()
- cy.location().should((loc) => {
- expect(loc.hash).to.eq(correctFragment)
- })
- })
-
- it("should expand the operation when reloaded", () => {
- cy.visit(`${baseUrl}${correctFragment}`)
- .get(`${elementToGet}.is-open`)
- .should("exist")
- })
-
- it("should retain the correct fragment when reloaded", () => {
- cy.visit(`${baseUrl}${correctFragment}`)
- .reload()
- .should("exist")
- cy.location().should((loc) => {
- expect(loc.hash).to.eq(correctFragment)
- })
- })
-
- it("should expand a tag with docExpansion disabled", () => {
- cy.visit(`${baseUrl}&docExpansion=none${correctFragment}`)
- .get(`.opblock-tag-section.is-open`)
- .should("have.length", 1)
- })
-
- it("should expand an operation with docExpansion disabled", () => {
- cy.visit(`${baseUrl}&docExpansion=none${correctFragment}`)
- .get(`.opblock.is-open`)
- .should("have.length", 1)
- })
- }
-
- function TagDeeplinkTestFactory({ baseUrl, elementToGet, correctElementId, correctFragment, correctHref, isTagCase = false }) {
- it("should generate a correct element ID", () => {
- cy.visit(baseUrl)
- .get(elementToGet)
- .should("have.id", correctElementId)
- })
-
- it("should add the correct element fragment to the URL when expanded", () => {
- cy.visit(baseUrl)
- .get(elementToGet)
- .click()
- .click() // tags need two clicks because they're expanded by default
- cy.location().should((loc) => {
- expect(loc.hash).to.eq(correctFragment)
- })
- })
-
- it("should provide an anchor link that has the correct fragment as href", () => {
- cy.visit(baseUrl)
- .get(elementToGet)
- .find("a")
- .should("have.attr", "href", correctHref)
- })
-
- it("should expand the tag when reloaded", () => {
- cy.visit(`${baseUrl}${correctFragment}`)
- .get(`${elementToGet}[data-is-open="true"]`)
- .should("exist")
- })
-
- it("should retain the correct fragment when reloaded", () => {
- cy.visit(`${baseUrl}${correctFragment}`)
- .reload()
- .should("exist")
- cy.location().should((loc) => {
- expect(loc.hash).to.eq(correctFragment)
- })
- })
-
- it("should expand a tag with docExpansion disabled", () => {
- cy.visit(`${baseUrl}&docExpansion=none${correctFragment}`)
- .get(`.opblock-tag-section.is-open`)
- .should("have.length", 1)
- })
- }
|