Add test for MediaSidebar
This commit is contained in:
parent
fb261cc299
commit
11c26cd68e
|
@ -66,6 +66,7 @@ export const SHARE_ALBUM_QUERY = gql`
|
||||||
url
|
url
|
||||||
}
|
}
|
||||||
exif {
|
exif {
|
||||||
|
id
|
||||||
camera
|
camera
|
||||||
maker
|
maker
|
||||||
lens
|
lens
|
||||||
|
@ -76,6 +77,10 @@ export const SHARE_ALBUM_QUERY = gql`
|
||||||
focalLength
|
focalLength
|
||||||
flash
|
flash
|
||||||
exposureProgram
|
exposureProgram
|
||||||
|
coordinates {
|
||||||
|
latitude
|
||||||
|
longitude
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,11 +7,15 @@ import * as authentication from '../../helpers/authentication'
|
||||||
|
|
||||||
jest.mock('../../helpers/authentication.ts')
|
jest.mock('../../helpers/authentication.ts')
|
||||||
|
|
||||||
|
const authToken = authentication.authToken as jest.Mock<
|
||||||
|
ReturnType<typeof authentication.authToken>
|
||||||
|
>
|
||||||
|
|
||||||
describe('AuthorizedRoute component', () => {
|
describe('AuthorizedRoute component', () => {
|
||||||
const AuthorizedComponent = () => <div>authorized content</div>
|
const AuthorizedComponent = () => <div>authorized content</div>
|
||||||
|
|
||||||
test('not logged in', async () => {
|
test('not logged in', async () => {
|
||||||
authentication.authToken.mockImplementation(() => null)
|
authToken.mockImplementation(() => null)
|
||||||
|
|
||||||
render(
|
render(
|
||||||
<MemoryRouter initialEntries={['/']}>
|
<MemoryRouter initialEntries={['/']}>
|
||||||
|
@ -24,7 +28,7 @@ describe('AuthorizedRoute component', () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
test('logged in', async () => {
|
test('logged in', async () => {
|
||||||
authentication.authToken.mockImplementation(() => 'token-here')
|
authToken.mockImplementation(() => 'token-here')
|
||||||
|
|
||||||
render(
|
render(
|
||||||
<MemoryRouter initialEntries={['/']}>
|
<MemoryRouter initialEntries={['/']}>
|
|
@ -12,6 +12,7 @@ import {
|
||||||
resetAlbumCover,
|
resetAlbumCover,
|
||||||
resetAlbumCoverVariables,
|
resetAlbumCoverVariables,
|
||||||
} from './__generated__/resetAlbumCover'
|
} from './__generated__/resetAlbumCover'
|
||||||
|
import { authToken } from '../../helpers/authentication'
|
||||||
|
|
||||||
const RESET_ALBUM_COVER_MUTATION = gql`
|
const RESET_ALBUM_COVER_MUTATION = gql`
|
||||||
mutation resetAlbumCover($albumID: ID!) {
|
mutation resetAlbumCover($albumID: ID!) {
|
||||||
|
@ -62,6 +63,11 @@ export const SidebarPhotoCover = ({ cover_id }: SidebarPhotoCoverProps) => {
|
||||||
setButtonDisabled(false)
|
setButtonDisabled(false)
|
||||||
}, [cover_id])
|
}, [cover_id])
|
||||||
|
|
||||||
|
// hide when not authenticated
|
||||||
|
if (!authToken()) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SidebarSection>
|
<SidebarSection>
|
||||||
<SidebarSectionTitle>
|
<SidebarSectionTitle>
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
import React from 'react'
|
||||||
|
import { render, screen } from '@testing-library/react'
|
||||||
|
import { MockedProvider } from '@apollo/client/testing'
|
||||||
|
import MediaSidebar, { MediaSidebarMedia } from './MediaSidebar'
|
||||||
|
import { MediaType } from '../../../__generated__/globalTypes'
|
||||||
|
import { MemoryRouter } from 'react-router'
|
||||||
|
|
||||||
|
import * as authentication from '../../../helpers/authentication'
|
||||||
|
|
||||||
|
jest.mock('../../../helpers/authentication.ts')
|
||||||
|
|
||||||
|
const authToken = authentication.authToken as jest.Mock<
|
||||||
|
ReturnType<typeof authentication.authToken>
|
||||||
|
>
|
||||||
|
|
||||||
|
describe('MediaSidebar', () => {
|
||||||
|
const media: MediaSidebarMedia = {
|
||||||
|
__typename: 'Media',
|
||||||
|
id: '6867',
|
||||||
|
title: '122A6069.jpg',
|
||||||
|
type: MediaType.Photo,
|
||||||
|
thumbnail: {
|
||||||
|
__typename: 'MediaURL',
|
||||||
|
url: 'http://localhost:4001/photo/thumbnail.jpg',
|
||||||
|
width: 1024,
|
||||||
|
height: 839,
|
||||||
|
},
|
||||||
|
highRes: {
|
||||||
|
__typename: 'MediaURL',
|
||||||
|
url: 'http://localhost:4001/photo/highres.jpg',
|
||||||
|
width: 5322,
|
||||||
|
height: 4362,
|
||||||
|
},
|
||||||
|
videoWeb: null,
|
||||||
|
album: {
|
||||||
|
__typename: 'Album',
|
||||||
|
id: '2294',
|
||||||
|
title: 'album_name',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
test('render sample image, unauthorized', () => {
|
||||||
|
authToken.mockImplementation(() => null)
|
||||||
|
|
||||||
|
render(
|
||||||
|
<MockedProvider mocks={[]} addTypename={false}>
|
||||||
|
<MemoryRouter>
|
||||||
|
<MediaSidebar media={media} />
|
||||||
|
</MemoryRouter>
|
||||||
|
</MockedProvider>
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(screen.getByText('122A6069.jpg')).toBeInTheDocument()
|
||||||
|
expect(screen.getByRole('img')).toHaveAttribute(
|
||||||
|
'src',
|
||||||
|
'http://localhost:4001/photo/highres.jpg'
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(
|
||||||
|
screen.queryByText('Set as album cover photo')
|
||||||
|
).not.toBeInTheDocument()
|
||||||
|
expect(screen.queryByText('Sharing options')).not.toBeInTheDocument()
|
||||||
|
})
|
||||||
|
|
||||||
|
test('render sample image, authorized', () => {
|
||||||
|
authToken.mockImplementation(() => 'token-here')
|
||||||
|
|
||||||
|
render(
|
||||||
|
<MockedProvider mocks={[]} addTypename={false}>
|
||||||
|
<MemoryRouter>
|
||||||
|
<MediaSidebar media={media} />
|
||||||
|
</MemoryRouter>
|
||||||
|
</MockedProvider>
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(screen.getByText('122A6069.jpg')).toBeInTheDocument()
|
||||||
|
expect(screen.getByRole('img')).toHaveAttribute(
|
||||||
|
'src',
|
||||||
|
'http://localhost:4001/photo/highres.jpg'
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(screen.getByText('Set as album cover photo')).toBeInTheDocument()
|
||||||
|
expect(screen.getByText('Album path')).toBeInTheDocument()
|
||||||
|
|
||||||
|
screen.debug()
|
||||||
|
})
|
||||||
|
})
|
|
@ -1,13 +1,15 @@
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import { render, screen } from '@testing-library/react'
|
import { render, screen } from '@testing-library/react'
|
||||||
import ExifDetails from './MediaSidebarExif'
|
import ExifDetails from './MediaSidebarExif'
|
||||||
|
import { MediaSidebarMedia } from './MediaSidebar'
|
||||||
|
import { MediaType } from '../../../__generated__/globalTypes'
|
||||||
|
|
||||||
describe('ExifDetails', () => {
|
describe('ExifDetails', () => {
|
||||||
test('without EXIF information', async () => {
|
test('without EXIF information', async () => {
|
||||||
const media = {
|
const media: MediaSidebarMedia = {
|
||||||
id: '1730',
|
id: '1730',
|
||||||
title: 'media_name.jpg',
|
title: 'media_name.jpg',
|
||||||
type: 'Photo',
|
type: MediaType.Photo,
|
||||||
exif: {
|
exif: {
|
||||||
id: '0',
|
id: '0',
|
||||||
camera: null,
|
camera: null,
|
||||||
|
@ -20,6 +22,7 @@ describe('ExifDetails', () => {
|
||||||
focalLength: null,
|
focalLength: null,
|
||||||
flash: null,
|
flash: null,
|
||||||
exposureProgram: null,
|
exposureProgram: null,
|
||||||
|
coordinates: null,
|
||||||
__typename: 'MediaEXIF',
|
__typename: 'MediaEXIF',
|
||||||
},
|
},
|
||||||
__typename: 'Media',
|
__typename: 'Media',
|
||||||
|
@ -37,13 +40,14 @@ describe('ExifDetails', () => {
|
||||||
expect(screen.queryByText('ISO')).not.toBeInTheDocument()
|
expect(screen.queryByText('ISO')).not.toBeInTheDocument()
|
||||||
expect(screen.queryByText('Focal length')).not.toBeInTheDocument()
|
expect(screen.queryByText('Focal length')).not.toBeInTheDocument()
|
||||||
expect(screen.queryByText('Flash')).not.toBeInTheDocument()
|
expect(screen.queryByText('Flash')).not.toBeInTheDocument()
|
||||||
|
expect(screen.queryByText('Coordinates')).not.toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
test('with EXIF information', async () => {
|
test('with EXIF information', async () => {
|
||||||
const media = {
|
const media: MediaSidebarMedia = {
|
||||||
id: '1730',
|
id: '1730',
|
||||||
title: 'media_name.jpg',
|
title: 'media_name.jpg',
|
||||||
type: 'Photo',
|
type: MediaType.Photo,
|
||||||
exif: {
|
exif: {
|
||||||
id: '1666',
|
id: '1666',
|
||||||
camera: 'Canon EOS R',
|
camera: 'Canon EOS R',
|
||||||
|
@ -56,6 +60,11 @@ describe('ExifDetails', () => {
|
||||||
focalLength: 24,
|
focalLength: 24,
|
||||||
flash: 9,
|
flash: 9,
|
||||||
exposureProgram: 3,
|
exposureProgram: 3,
|
||||||
|
coordinates: {
|
||||||
|
__typename: 'Coordinates',
|
||||||
|
latitude: 41.40338,
|
||||||
|
longitude: 2.17403,
|
||||||
|
},
|
||||||
__typename: 'MediaEXIF',
|
__typename: 'MediaEXIF',
|
||||||
},
|
},
|
||||||
__typename: 'Media',
|
__typename: 'Media',
|
||||||
|
@ -94,5 +103,8 @@ describe('ExifDetails', () => {
|
||||||
|
|
||||||
expect(screen.getByText('Flash')).toBeInTheDocument()
|
expect(screen.getByText('Flash')).toBeInTheDocument()
|
||||||
expect(screen.getByText('On, Fired')).toBeInTheDocument()
|
expect(screen.getByText('On, Fired')).toBeInTheDocument()
|
||||||
|
|
||||||
|
expect(screen.getByText('Coordinates')).toBeInTheDocument()
|
||||||
|
expect(screen.getByText('41.40338, 2.17403')).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
})
|
})
|
Loading…
Reference in New Issue