diff --git a/ui/src/album/AlbumDatesField.jsx b/ui/src/album/AlbumDatesField.jsx index e4cdeedc..ce130138 100644 --- a/ui/src/album/AlbumDatesField.jsx +++ b/ui/src/album/AlbumDatesField.jsx @@ -10,6 +10,12 @@ export const AlbumDatesField = ({ className, ...rest }) => { const releaseYear = releaseDate?.toString().substring(0, 4) const yearRange = formatRange(record, 'originalYear') || record['maxYear']?.toString() + + // Don't show anything if the year starts with "0" + if (yearRange === '0' || releaseYear?.startsWith('0')) { + return null + } + let label = yearRange if (releaseYear !== undefined && yearRange !== releaseYear) { diff --git a/ui/src/album/AlbumDatesField.test.jsx b/ui/src/album/AlbumDatesField.test.jsx new file mode 100644 index 00000000..9bcd4156 --- /dev/null +++ b/ui/src/album/AlbumDatesField.test.jsx @@ -0,0 +1,112 @@ +import { describe, test, expect, vi } from 'vitest' +import { render } from '@testing-library/react' +import { RecordContextProvider } from 'react-admin' +import { AlbumDatesField } from './AlbumDatesField' +import { formatRange } from '../common/index.js' + +// Mock the formatRange function +vi.mock('../common/index.js', () => ({ + formatRange: vi.fn(), +})) + +describe('AlbumDatesField', () => { + test('renders nothing when yearRange is "0"', () => { + const record = { + maxYear: '0', + releaseDate: '2020-01-01', + } + + vi.mocked(formatRange).mockReturnValue('0') + + const { container } = render( + + + , + ) + + expect(container.firstChild).toBeNull() + }) + + test('renders nothing when releaseYear is "0"', () => { + const record = { + maxYear: '2020', + releaseDate: '0-01-01', + } + + vi.mocked(formatRange).mockReturnValue('2020') + + const { container } = render( + + + , + ) + + expect(container.firstChild).toBeNull() + }) + + test('renders only yearRange when releaseYear is undefined', () => { + const record = { + maxYear: '2020', + } + + vi.mocked(formatRange).mockReturnValue('2020') + + const { container } = render( + + + , + ) + + expect(container.textContent).toBe('2020') + }) + + test('renders both years when they are different', () => { + const record = { + maxYear: '2018', + releaseDate: '2020-01-01', + } + + vi.mocked(formatRange).mockReturnValue('2018') + + const { container } = render( + + + , + ) + + expect(container.textContent).toBe('♫ 2018 · ○ 2020') + }) + + test('renders only yearRange when both years are the same', () => { + const record = { + maxYear: '2020', + releaseDate: '2020-01-01', + } + + vi.mocked(formatRange).mockReturnValue('2020') + + const { container } = render( + + + , + ) + + expect(container.textContent).toBe('2020') + }) + + test('applies className when provided', () => { + const record = { + maxYear: '2020', + } + + vi.mocked(formatRange).mockReturnValue('2020') + + const { container } = render( + + + , + ) + + expect(container.firstChild).toHaveClass('test-class') + }) +})