mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 19:01:39 -04:00
Moving FilesRefreshButton and DirectoryRefreshButton out of browser file. Moving file fetching tino FileBrowser. Removing sub-folders from Files display when any parent folder is clicked. Using closed captioning for vtt/srt file icon. Using my own react-semantic-toasts-2 to use toasts in Node 18. Fixing bug where more than the last page was displayed. Upgrading yt-dlp. Fixing sub-folder file selection. Adding rowKey to SortableTable to give React a key for each row. Renaming key to path. Removing duplicate urls. Unifying file modals. Displaying modals for image and text files. Handling refresh loading in FileBrowser. Creating refreshing_directory flag. Removing accidental commit. Sorting by url_count. Using SortableTable on Domains page. Using SortableTable for Channels page. Created new FileBrowser which allows browsing of files in the media directory. Using Node 18 in pi-gen. Creating new FileBrowser to replace outdated react-keyed-file-browser. Returning mimetype with file list. Do not display 'Do not download' on Channel download in Dashboard. Allowing null channel download frequency so user can stop downloading a channel. Bumping version for Node 18. Using my own semantic-ui-offline to avoid pulling Google fonts. Upgrading app docker container to use Node 18. This requires the removal of several npm packages. File browser will require re-write. It now pulls fonts from Google, this will need to be fixed. Testing DownloadsToggle click. Testing trinary states of DownloadsToggle. Installing @testing-library/user-event for testing App.
58 lines
2.2 KiB
JavaScript
58 lines
2.2 KiB
JavaScript
import React from "react";
|
|
import {getByTestId, render, screen} from '@testing-library/react';
|
|
import {DisableDownloadsToggle} from "./Common";
|
|
import {useDownloaders} from "../hooks/customHooks";
|
|
import user from '@testing-library/user-event';
|
|
|
|
jest.mock('../hooks/customHooks', () => ({useDownloaders: jest.fn()}));
|
|
|
|
test('DownloadsToggle is off when loading', async () => {
|
|
useDownloaders.mockImplementation(() => ({on: null}));
|
|
|
|
const {container} = render(<DisableDownloadsToggle/>);
|
|
let toggle = screen.getByRole('checkbox');
|
|
expect(toggle).not.toBeChecked();
|
|
// Disabled while loading.
|
|
expect(toggle).toHaveClass('disabled');
|
|
// Text is "disabled" when downloading is On.
|
|
const label = getByTestId(container, 'toggle-label');
|
|
expect(label).toHaveTextContent('Downloading Disabled');
|
|
});
|
|
|
|
test('DownloadsToggle is off if downloading is Off', async () => {
|
|
useDownloaders.mockImplementation(() => ({on: false}));
|
|
|
|
const {container} = render(<DisableDownloadsToggle/>);
|
|
const toggle = screen.getByRole('checkbox');
|
|
expect(toggle).not.toBeChecked();
|
|
// Not disabled when loaded.
|
|
expect(toggle).not.toHaveClass('disabled');
|
|
// Text is "disabled" when downloading is On.
|
|
const label = getByTestId(container, 'toggle-label');
|
|
expect(label).toHaveTextContent('Downloading Disabled');
|
|
});
|
|
|
|
test('DownloadsToggle is on if downloading is On', async () => {
|
|
useDownloaders.mockImplementation(() => ({on: true}));
|
|
|
|
const {container} = render(<DisableDownloadsToggle/>);
|
|
const toggle = screen.getByRole('checkbox');
|
|
expect(toggle).toBeChecked();
|
|
// Not disabled when loaded.
|
|
expect(toggle).not.toHaveClass('disabled');
|
|
// Text is "enabled" when downloading is On.
|
|
const label = getByTestId(container, 'toggle-label');
|
|
expect(label).toHaveTextContent('Downloading Enabled');
|
|
});
|
|
|
|
test('DownloadsToggle click', async () => {
|
|
const mock = jest.fn();
|
|
useDownloaders.mockImplementation(() => ({on: true, setDownloads: mock}));
|
|
render(<DisableDownloadsToggle/>);
|
|
|
|
// Downloads is toggled when DownloadsToggle is clicked.
|
|
const toggle = screen.getByRole('checkbox');
|
|
user.click(toggle);
|
|
expect(mock).toHaveBeenCalled();
|
|
expect(mock).toHaveBeenLastCalledWith(false);
|
|
})
|