Files
ReadMeABook/tests/components/requests/StatusBadge.test.tsx
T
kikootwo 6f8ac86a43 Add skip-unreleased auto-search feature
Introduce an indexer-wide option to skip automatic searches for books with future release dates (config key: `indexer.skip_unreleased`, default ON). Adds a GET/PUT admin API for indexer options, a UI toggle on the Indexers settings tab (persisted on save), and persistence of a request-level releaseDate in the Prisma schema.

Adds a new request status `awaiting_release` and wires it through constants, UI components (StatusBadge, RequestCard, RecentRequestsTable, Audiobook card/modal, RequestActions), API request flows (bookdate swipe, request creation, manual search, request PATCHs, request listing groups), and services. Implements a pure release-date utility (isUnreleased / shouldSkipAutoSearch) and updates background processors: monitor-rss-feeds (skip matches but do not mutate status), retry-missing-torrents (drives bidirectional transitions between awaiting_search and awaiting_release and queues searches when appropriate), and request-creator/bookdate swipe (gate initial auto-search). Adds tests for the swipe gate and other related test updates. Logs transitions and gate decisions for observability.
2026-05-15 15:35:01 -04:00

34 lines
1.2 KiB
TypeScript

/**
* Component: Status Badge Tests
* Documentation: documentation/frontend/components.md
*/
// @vitest-environment jsdom
import React from 'react';
import { render, screen } from '@testing-library/react';
import { describe, expect, it } from 'vitest';
import { StatusBadge } from '@/components/requests/StatusBadge';
describe('StatusBadge', () => {
it('uses the initializing label for zero-progress downloads', () => {
render(<StatusBadge status="downloading" progress={0} />);
expect(screen.getByText('Initializing...')).toBeInTheDocument();
});
it('falls back to the raw status when unknown', () => {
render(<StatusBadge status="custom_status" />);
expect(screen.getByText('custom_status')).toBeInTheDocument();
});
it('renders the awaiting_release label with teal styling', () => {
render(<StatusBadge status="awaiting_release" />);
const badge = screen.getByText('Awaiting Release');
expect(badge).toBeInTheDocument();
expect(badge.className).toContain('bg-teal-100');
expect(badge.className).toContain('text-teal-800');
expect(badge.className).toContain('dark:bg-teal-900');
expect(badge.className).toContain('dark:text-teal-200');
});
});