From 9109350f2e0d3be56477249173bb4f2cccccbf4e Mon Sep 17 00:00:00 2001 From: tidusjar Date: Mon, 22 Mar 2021 16:48:33 +0000 Subject: [PATCH] Some small fixes, and more automation tests to cover the breaking scenario from earlier --- .../carousel-list/carousel-list.component.ts | 2 +- .../movie-information-panel.component.html | 2 +- .../episode-request.component.html | 6 +- .../page-objects/shared/DiscoverCard.ts | 3 + .../shared/EpisodeRequestModal.ts | 13 ++ .../discover/discover-cards-requests.spec.ts | 208 ++++++++++++++++++ .../tests/discover/discover-cards.spec.ts | 138 ------------ tests/cypress/tests/search/search.spec.ts | 8 +- 8 files changed, 233 insertions(+), 147 deletions(-) create mode 100644 tests/cypress/integration/page-objects/shared/EpisodeRequestModal.ts create mode 100644 tests/cypress/tests/discover/discover-cards-requests.spec.ts diff --git a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts index 1c39f000d..ca8dfd44f 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts +++ b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts @@ -292,7 +292,7 @@ export class CarouselListComponent implements OnInit { const tempResults = []; this.tvShows.forEach(m => { tempResults.push({ - available: m.available, + available: m.fullyAvailable, posterPath: m.backdropPath ? `https://image.tmdb.org/t/p/w500/${m.backdropPath}` : "../../../images/default_tv_poster.png", requested: m.requested, title: m.title, diff --git a/src/Ombi/ClientApp/src/app/media-details/components/movie/panels/movie-information-panel.component.html b/src/Ombi/ClientApp/src/app/media-details/components/movie/panels/movie-information-panel.component.html index 636e275c5..2268f96cb 100644 --- a/src/Ombi/ClientApp/src/app/media-details/components/movie/panels/movie-information-panel.component.html +++ b/src/Ombi/ClientApp/src/app/media-details/components/movie/panels/movie-information-panel.component.html @@ -2,7 +2,7 @@
- {{movie.voteAverage | number:'1.0-1'}}/10 + {{movie.voteAverage | number:'1.0-1'}}/10
- - -
diff --git a/tests/cypress/integration/page-objects/shared/DiscoverCard.ts b/tests/cypress/integration/page-objects/shared/DiscoverCard.ts index 415356e41..be126cd27 100644 --- a/tests/cypress/integration/page-objects/shared/DiscoverCard.ts +++ b/tests/cypress/integration/page-objects/shared/DiscoverCard.ts @@ -1,7 +1,10 @@ +import { EpisodeRequestModal } from "./EpisodeRequestModal"; export class DiscoverCard { private id: string; private movie: boolean; + + episodeRequestModal = new EpisodeRequestModal(); constructor(id: string, movie: boolean) { this.id = id; this.movie = movie; diff --git a/tests/cypress/integration/page-objects/shared/EpisodeRequestModal.ts b/tests/cypress/integration/page-objects/shared/EpisodeRequestModal.ts new file mode 100644 index 000000000..c0b9869d0 --- /dev/null +++ b/tests/cypress/integration/page-objects/shared/EpisodeRequestModal.ts @@ -0,0 +1,13 @@ + +export class EpisodeRequestModal { + + get allSeasonsButton(): Cypress.Chainable { + return cy.get(`#episodeModalAllSeasons`); + } + get firstSeasonButton(): Cypress.Chainable { + return cy.get(`#episodeModalFirstSeason`); + } + get latestSeasonButton(): Cypress.Chainable { + return cy.get(`#episodeModalLatestSeason`); + } +} diff --git a/tests/cypress/tests/discover/discover-cards-requests.spec.ts b/tests/cypress/tests/discover/discover-cards-requests.spec.ts new file mode 100644 index 000000000..9a6c16e1b --- /dev/null +++ b/tests/cypress/tests/discover/discover-cards-requests.spec.ts @@ -0,0 +1,208 @@ +import { discoverPage as Page } from "@/integration/page-objects"; + +describe("Discover Cards Requests Tests", () => { + beforeEach(() => { + cy.login(); + }); + + it("Not requested movie allows us to request", () => { + window.localStorage.setItem("DiscoverOptions2", "2"); + cy.intercept("GET", "**/search/Movie/Popular/**", (req) => { + req.reply((res) => { + const body = res.body; + const movie = body[0]; + movie.available = false; + movie.approved = false; + movie.requested = false; + + body[0] = movie; + res.send(body); + }); + }).as("cardsResponse"); + + Page.visit(); + + cy.wait("@cardsResponse").then((res) => { + const body = JSON.parse(res.response.body); + var expectedId = body[0].id; + var title = body[0].title; + + const card = Page.popularCarousel.getCard(expectedId, true); + card.verifyTitle(title); + card.requestButton.should("exist"); + // Not visible until hover + card.requestButton.should("not.be.visible"); + cy.wait(500) + card.topLevelCard.realHover(); + + card.requestButton.should("be.visible"); + card.requestButton.click(); + + cy.verifyNotification("has been successfully added!"); + + card.requestButton.should("not.be.visible"); + card.availabilityText.should('have.text','Pending'); + card.statusClass.should('have.class','requested'); + }); + }); + + it("Available movie does not allow us to request", () => { + window.localStorage.setItem("DiscoverOptions2", "2"); + cy.intercept("GET", "**/search/Movie/Popular/**", (req) => { + req.reply((res) => { + const body = res.body; + const movie = body[1]; + movie.available = true; + movie.approved = false; + movie.requested = false; + + body[1] = movie; + res.send(body); + }); + }).as("cardsResponse"); + + Page.visit(); + + cy.wait("@cardsResponse").then((res) => { + const body = JSON.parse(res.response.body); + var expectedId = body[1].id; + var title = body[1].title; + + const card = Page.popularCarousel.getCard(expectedId, true); + card.verifyTitle(title); + card.topLevelCard.realHover(); + + card.requestButton.should("not.exist"); + card.availabilityText.should('have.text','Available'); + card.statusClass.should('have.class','available'); + }); + }); + + it("Requested movie does not allow us to request", () => { + window.localStorage.setItem("DiscoverOptions2", "2"); + cy.intercept("GET", "**/search/Movie/Popular/**", (req) => { + req.reply((res) => { + const body = res.body; + const movie = body[1]; + movie.available = false; + movie.approved = false; + movie.requested = true; + + body[1] = movie; + res.send(body); + }); + }).as("cardsResponse"); + + Page.visit(); + + cy.wait("@cardsResponse").then((res) => { + const body = JSON.parse(res.response.body); + var expectedId = body[1].id; + var title = body[1].title; + + const card = Page.popularCarousel.getCard(expectedId, true); + card.verifyTitle(title); + + card.topLevelCard.realHover(); + + card.requestButton.should("not.exist"); + card.availabilityText.should('have.text','Pending'); + card.statusClass.should('have.class','requested'); + }); + }); + + it("Approved movie does not allow us to request", () => { + window.localStorage.setItem("DiscoverOptions2", "2"); + cy.intercept("GET", "**/search/Movie/Popular/**", (req) => { + req.reply((res) => { + const body = res.body; + const movie = body[1]; + movie.available = false; + movie.approved = true; + movie.requested = true; + + body[1] = movie; + res.send(body); + }); + }).as("cardsResponse"); + + Page.visit(); + + cy.wait("@cardsResponse").then((res) => { + const body = JSON.parse(res.response.body); + var expectedId = body[1].id; + var title = body[1].title; + + const card = Page.popularCarousel.getCard(expectedId, true); + card.verifyTitle(title); + card.topLevelCard.realHover(); + + card.requestButton.should("not.exist"); + card.availabilityText.should('have.text','Approved'); + card.statusClass.should('have.class','approved'); + }); + }); + + it("Available TV does not allow us to request", () => { + cy.intercept("GET", "**/search/Tv/popular/**", (req) => { + req.reply((res) => { + const body = res.body; + const tv = body[1]; + tv.fullyAvailable = true; + + body[1] = tv; + res.send(body); + }); + }).as("cardsResponse"); + window.localStorage.setItem("DiscoverOptions2", "3"); + + Page.visit(); + + cy.wait("@cardsResponse").then((res) => { + const body = JSON.parse(res.response.body); + var expectedId = body[1].id; + var title = body[1].title; + + const card = Page.popularCarousel.getCard(expectedId, true); + card.verifyTitle(title); + card.topLevelCard.realHover(); + + card.requestButton.should("not.exist"); + card.availabilityText.should('have.text','Available'); + card.statusClass.should('have.class','available'); + }); + }); + + it.only("Not available TV does not allow us to request", () => { + cy.intercept("GET", "**/search/Tv/popular/**", (req) => { + req.reply((res) => { + const body = res.body; + const tv = body[3]; + tv.fullyAvailable = false; + + body[3] = tv; + res.send(body); + }); + }).as("cardsResponse"); + window.localStorage.setItem("DiscoverOptions2", "3"); + + Page.visit(); + + cy.wait("@cardsResponse").then((res) => { + const body = JSON.parse(res.response.body); + var expectedId = body[3].id; + var title = body[3].title; + + const card = Page.popularCarousel.getCard(expectedId, false); + card.verifyTitle(title); + card.topLevelCard.realHover(); + + card.requestButton.should("be.visible"); + card.requestButton.click(); + const modal = card.episodeRequestModal; + + modal.latestSeasonButton.click(); + cy.verifyNotification("has been added successfully") + }); + }); +}); diff --git a/tests/cypress/tests/discover/discover-cards.spec.ts b/tests/cypress/tests/discover/discover-cards.spec.ts index 865840d0c..3f8dd4cb2 100644 --- a/tests/cypress/tests/discover/discover-cards.spec.ts +++ b/tests/cypress/tests/discover/discover-cards.spec.ts @@ -64,142 +64,4 @@ describe("Discover Cards Tests", () => { cy.wait("@moviePopular"); cy.wait("@tvPopular"); }); - - it("Not requested movie allows us to request", () => { - window.localStorage.setItem("DiscoverOptions2", "2"); - cy.intercept("GET", "**/search/Movie/Popular/**", (req) => { - req.reply((res) => { - const body = res.body; - const movie = body[0]; - movie.available = false; - movie.approved = false; - movie.requested = false; - - body[0] = movie; - res.send(body); - }); - }).as("cardsResponse"); - - Page.visit(); - - cy.wait("@cardsResponse").then((res) => { - const body = JSON.parse(res.response.body); - var expectedId = body[0].id; - var title = body[0].title; - - const card = Page.popularCarousel.getCard(expectedId, true); - card.verifyTitle(title); - card.requestButton.should("exist"); - // Not visible until hover - card.requestButton.should("not.be.visible"); - cy.wait(500) - card.topLevelCard.realHover(); - - card.requestButton.should("be.visible"); - card.requestButton.click(); - - cy.verifyNotification("has been successfully added!"); - - card.requestButton.should("not.be.visible"); - card.availabilityText.should('have.text','Pending'); - card.statusClass.should('have.class','requested'); - }); - }); - - it("Available movie does not allow us to request", () => { - window.localStorage.setItem("DiscoverOptions2", "2"); - cy.intercept("GET", "**/search/Movie/Popular/**", (req) => { - req.reply((res) => { - const body = res.body; - const movie = body[1]; - movie.available = true; - movie.approved = false; - movie.requested = false; - - body[1] = movie; - res.send(body); - }); - }).as("cardsResponse"); - - Page.visit(); - - cy.wait("@cardsResponse").then((res) => { - const body = JSON.parse(res.response.body); - var expectedId = body[1].id; - var title = body[1].title; - - const card = Page.popularCarousel.getCard(expectedId, true); - card.verifyTitle(title); - card.topLevelCard.realHover(); - - card.requestButton.should("not.exist"); - card.availabilityText.should('have.text','Available'); - card.statusClass.should('have.class','available'); - }); - }); - - it("Requested movie does not allow us to request", () => { - window.localStorage.setItem("DiscoverOptions2", "2"); - cy.intercept("GET", "**/search/Movie/Popular/**", (req) => { - req.reply((res) => { - const body = res.body; - const movie = body[1]; - movie.available = false; - movie.approved = false; - movie.requested = true; - - body[1] = movie; - res.send(body); - }); - }).as("cardsResponse"); - - Page.visit(); - - cy.wait("@cardsResponse").then((res) => { - const body = JSON.parse(res.response.body); - var expectedId = body[1].id; - var title = body[1].title; - - const card = Page.popularCarousel.getCard(expectedId, true); - card.verifyTitle(title); - - card.topLevelCard.realHover(); - - card.requestButton.should("not.exist"); - card.availabilityText.should('have.text','Pending'); - card.statusClass.should('have.class','requested'); - }); - - it("Approved movie does not allow us to request", () => { - window.localStorage.setItem("DiscoverOptions2", "2"); - cy.intercept("GET", "**/search/Movie/Popular/**", (req) => { - req.reply((res) => { - const body = res.body; - const movie = body[1]; - movie.available = false; - movie.approved = true; - movie.requested = true; - - body[1] = movie; - res.send(body); - }); - }).as("cardsResponse"); - - Page.visit(); - - cy.wait("@cardsResponse").then((res) => { - const body = JSON.parse(res.response.body); - var expectedId = body[1].id; - var title = body[1].title; - - const card = Page.popularCarousel.getCard(expectedId, true); - card.verifyTitle(title); - card.topLevelCard.realHover(); - - card.requestButton.should("not.be.visible"); - card.availabilityText.should('have.text','Approved'); - card.statusClass.should('have.class','approved'); - }); - }); - }); }); diff --git a/tests/cypress/tests/search/search.spec.ts b/tests/cypress/tests/search/search.spec.ts index a332645d3..35711abc0 100644 --- a/tests/cypress/tests/search/search.spec.ts +++ b/tests/cypress/tests/search/search.spec.ts @@ -8,14 +8,14 @@ describe("Search Tests", () => { it("Single result when TV Search Only", () => { Page.navbar.searchFilter.applyFilter(true, false, false); - Page.visit("Game Of Thrones"); + Page.visit("Dexters Laboratory"); cy.wait('@searchResponse'); - const card = Page.getCard('1399', false); + const card = Page.getCard('4229', false); card.topLevelCard.realHover(); - card.title.should('have.text', 'Game of Thrones'); - card.overview.contains('noble'); + card.title.should('have.text', "Dexter's Laboratory"); + card.overview.contains('Cartoon Network'); card.requestType.contains('Tv Show'); card.requestButton.should('exist'); });