diff --git a/libs/candles-chart/src/lib/candles-menu.spec.tsx b/libs/candles-chart/src/lib/candles-menu.spec.tsx
index 9289581bd..a2964685a 100644
--- a/libs/candles-chart/src/lib/candles-menu.spec.tsx
+++ b/libs/candles-chart/src/lib/candles-menu.spec.tsx
@@ -1,31 +1,83 @@
-import { render, screen } from '@testing-library/react';
+import { render, screen, within } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { CandlesMenu } from './candles-menu';
+import {
+ useCandlesChartSettingsStore,
+ DEFAULT_CHART_SETTINGS,
+} from './use-candles-chart-settings';
+import { Overlay, Study, overlayLabels, studyLabels } from 'pennant';
describe('CandlesMenu', () => {
- it('should render with the correct default studies', async () => {
- render();
-
+ const openDropdown = async () => {
await userEvent.click(
screen.getByRole('button', {
- name: 'Studies',
+ name: 'Indicators',
})
);
- expect(await screen.findByRole('menu')).toBeInTheDocument();
- expect(screen.getByText('Volume')).toHaveAttribute('data-state', 'checked');
- expect(screen.getByText('MACD')).toHaveAttribute('data-state', 'checked');
+ };
+
+ beforeEach(() => {
+ // clear store each time to avoid conditional testing of defaults
+ useCandlesChartSettingsStore.setState({ overlays: [], studies: [] });
});
- it('should render with the correct default overlays', async () => {
+ it.each(Object.values(Overlay))('can set %s overlay', async (overlay) => {
+ render();
+
+ await openDropdown();
+
+ const menu = within(await screen.findByRole('menu'));
+
+ await userEvent.click(menu.getByText(overlayLabels[overlay as Overlay]));
+
+ // re-open the dropdown
+ await openDropdown();
+
+ expect(screen.getByText(overlayLabels[overlay as Overlay])).toHaveAttribute(
+ 'data-state',
+ 'checked'
+ );
+ });
+
+ it.each(Object.values(Study))('can set %s study', async (study) => {
+ render();
+
+ await openDropdown();
+
+ const menu = within(await screen.findByRole('menu'));
+
+ await userEvent.click(menu.getByText(studyLabels[study as Study]));
+
+ // re-open the dropdown
+ await openDropdown();
+
+ expect(screen.getByText(studyLabels[study as Study])).toHaveAttribute(
+ 'data-state',
+ 'checked'
+ );
+ });
+
+ it('should render with the correct default studies and overlays', async () => {
+ useCandlesChartSettingsStore.setState(DEFAULT_CHART_SETTINGS);
+
render();
await userEvent.click(
screen.getByRole('button', {
- name: 'Overlays',
+ name: 'Indicators',
})
);
- expect(await screen.findByRole('menu')).toBeInTheDocument();
- expect(screen.getByText('Moving average')).toHaveAttribute(
+ const menu = within(await screen.findByRole('menu'));
+
+ expect(menu.getByText(studyLabels.volume)).toHaveAttribute(
+ 'data-state',
+ 'checked'
+ );
+ expect(menu.getByText(studyLabels.macd)).toHaveAttribute(
+ 'data-state',
+ 'checked'
+ );
+ expect(menu.getByText(overlayLabels.movingAverage)).toHaveAttribute(
'data-state',
'checked'
);
diff --git a/libs/candles-chart/src/lib/candles-menu.tsx b/libs/candles-chart/src/lib/candles-menu.tsx
index cc5b62e40..06d83fbb3 100644
--- a/libs/candles-chart/src/lib/candles-menu.tsx
+++ b/libs/candles-chart/src/lib/candles-menu.tsx
@@ -107,7 +107,7 @@ export const CandlesMenu = () => {
trigger={
- {t('Overlays')}
+ {t('Indicators')}
}
@@ -132,18 +132,6 @@ export const CandlesMenu = () => {
))}
-
-
-
-
- {t('Studies')}
-
-
- }
- >
-
{Object.values(Study).map((study) => (