feat: view other users' watchlists (#2959)
* feat: view other users' watchlists * test: add cypress tests * feat(lang): translation keys * refactor: yarn format * fix: manage requests perm is parent of view watchlist permpull/2963/head
parent
950b1712b7
commit
0839718806
@ -0,0 +1,50 @@
|
|||||||
|
describe('User Profile', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.login(Cypress.env('ADMIN_EMAIL'), Cypress.env('ADMIN_PASSWORD'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('opens user profile page from the home page', () => {
|
||||||
|
cy.visit('/');
|
||||||
|
|
||||||
|
cy.get('[data-testid=user-menu]').click();
|
||||||
|
cy.get('[data-testid=user-menu-profile]').click();
|
||||||
|
|
||||||
|
cy.get('h1').should('contain', Cypress.env('ADMIN_EMAIL'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('loads plex watchlist', () => {
|
||||||
|
cy.intercept('/api/v1/user/[0-9]*/watchlist', {
|
||||||
|
fixture: 'watchlist.json',
|
||||||
|
}).as('getWatchlist');
|
||||||
|
// Wait for one of the watchlist movies to resolve
|
||||||
|
cy.intercept('/api/v1/movie/361743').as('getTmdbMovie');
|
||||||
|
|
||||||
|
cy.visit('/profile');
|
||||||
|
|
||||||
|
cy.wait('@getWatchlist');
|
||||||
|
|
||||||
|
const sliderHeader = cy.contains('.slider-header', 'Plex Watchlist');
|
||||||
|
|
||||||
|
sliderHeader.scrollIntoView();
|
||||||
|
|
||||||
|
cy.wait('@getTmdbMovie');
|
||||||
|
// Wait a little longer to make sure the movie component reloaded
|
||||||
|
cy.wait(500);
|
||||||
|
|
||||||
|
sliderHeader
|
||||||
|
.next('[data-testid=media-slider]')
|
||||||
|
.find('[data-testid=title-card]')
|
||||||
|
.first()
|
||||||
|
.trigger('mouseover')
|
||||||
|
.find('[data-testid=title-card-title]')
|
||||||
|
.invoke('text')
|
||||||
|
.then((text) => {
|
||||||
|
cy.contains('.slider-header', 'Plex Watchlist')
|
||||||
|
.next('[data-testid=media-slider]')
|
||||||
|
.find('[data-testid=title-card]')
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
cy.get('[data-testid=media-title]').should('contain', text);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,8 @@
|
|||||||
|
import DiscoverWatchlist from '@app/components/Discover/DiscoverWatchlist';
|
||||||
|
import type { NextPage } from 'next';
|
||||||
|
|
||||||
|
const UserWatchlistPage: NextPage = () => {
|
||||||
|
return <DiscoverWatchlist />;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default UserWatchlistPage;
|
@ -0,0 +1,13 @@
|
|||||||
|
import DiscoverWatchlist from '@app/components/Discover/DiscoverWatchlist';
|
||||||
|
import useRouteGuard from '@app/hooks/useRouteGuard';
|
||||||
|
import { Permission } from '@app/hooks/useUser';
|
||||||
|
import type { NextPage } from 'next';
|
||||||
|
|
||||||
|
const UserRequestsPage: NextPage = () => {
|
||||||
|
useRouteGuard([Permission.MANAGE_REQUESTS, Permission.WATCHLIST_VIEW], {
|
||||||
|
type: 'or',
|
||||||
|
});
|
||||||
|
return <DiscoverWatchlist />;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default UserRequestsPage;
|
Loading…
Reference in new issue