Skip to content

Commit

Permalink
Merge branch 'main' into labl-on-side
Browse files Browse the repository at this point in the history
  • Loading branch information
sebald committed Nov 14, 2022
2 parents 6664652 + 91e7cd7 commit 2df9cbf
Show file tree
Hide file tree
Showing 4 changed files with 202 additions and 19 deletions.
18 changes: 0 additions & 18 deletions packages/components/src/Checkbox/Context.ts

This file was deleted.

10 changes: 10 additions & 0 deletions packages/components/src/Columns/Columns.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,13 @@ test('supports stretching to full height', () => {
const container = screen.getByTestId(/columns/);
expect(container).toHaveStyle(`height: 100%`);
});

test('does work with non react elements', () => {
render(
<Columns columns={[1]} data-testid="columns">
hello
</Columns>
);
const container = screen.getByTestId(/columns/);
expect(container).toHaveTextContent('hello');
});
2 changes: 1 addition & 1 deletion packages/components/src/Columns/Columns.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export const Columns = ({
flexGrow: columns[idx],
}}
>
{isValidElement(child) ? cloneElement(child) : null}
{isValidElement(child) ? cloneElement(child) : child}
</Box>
))}
</Box>
Expand Down
191 changes: 191 additions & 0 deletions packages/components/src/Overlay/overlay.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
/* eslint-disable testing-library/no-node-access */
import React from 'react';
import { render, screen } from '@testing-library/react';
import { OverlayProvider } from '@react-aria/overlays';
import { ThemeProvider } from '@marigold/system';
import { Overlay } from './Overlay';
import { Popover } from './Popover';
import { Underlay } from './Underlay';

const theme = {
colors: {
black: '#212529',
white: '#f8f9fa',
pink: '#fcc2d7',
},
space: {
none: 0,
small: 4,
large: 10,
},
components: {
Underlay: {
variant: {
one: {
bg: 'pink',
},
},
size: {
small: {
p: 'small',
},
},
},
},
};

// Overlay tests
// ---------------
test('renders open overlay', () => {
render(
<OverlayProvider>
<Overlay data-testid="overlay" open>
<div>something</div>
</Overlay>
</OverlayProvider>
);

const overlay = screen.getByTestId('overlay');
expect(overlay).toBeInTheDocument();
});

test('overlay is per default closed', () => {
render(
<OverlayProvider data-testid="overlay">
<Overlay>
<div>something</div>
</Overlay>
</OverlayProvider>
);

const overlay = screen.getByTestId('overlay').firstChild;
expect(overlay).not.toBeInTheDocument();
});

test('overlay has children', () => {
render(
<OverlayProvider>
<Overlay data-testid="overlay" open>
<div>something</div>
</Overlay>
</OverlayProvider>
);

const overlay = screen.getByTestId('overlay');
expect(overlay).toBeInTheDocument();
expect(overlay.firstChild).toHaveTextContent('something');
});

test('overlay has container', () => {
render(
<OverlayProvider>
<Overlay data-testid="overlay" open>
<div>something</div>
</Overlay>
</OverlayProvider>
);

const overlay = screen.getByTestId('overlay');
expect(overlay).toBeInTheDocument();
expect(overlay).toBeInstanceOf(HTMLDivElement);
});

// Popover tests
// ---------------
test('renders open popover', () => {
render(
<OverlayProvider>
<Popover data-testid="popover" open>
<div>something</div>
</Popover>
</OverlayProvider>
);

const popover = screen.getByTestId('popover');
expect(popover).toBeInTheDocument();
});

test('popover is per default closed', () => {
render(
<OverlayProvider data-testid="popover">
<Popover>
<div>something</div>
</Popover>
</OverlayProvider>
);

const popover = screen.getByTestId('popover').firstChild;
expect(popover).not.toBeInTheDocument();
});

test('forwards ref', () => {
const ref = React.createRef<HTMLInputElement>();
render(
<OverlayProvider>
<Popover data-testid="popover" open ref={ref}>
<div>something</div>
</Popover>
</OverlayProvider>
);

expect(ref.current).toBeInstanceOf(HTMLDivElement);
});

test('popover has children', () => {
render(
<OverlayProvider>
<Overlay data-testid="overlay" open>
<div>something</div>
</Overlay>
</OverlayProvider>
);

const popover = screen.getByTestId('overlay');
expect(popover).toBeInTheDocument();
expect(popover.firstChild).toBeInTheDocument();
});

// Underlay tests
// ---------------
test('renders underlay', () => {
render(
<OverlayProvider>
<Underlay data-testid="underlay">
<div>something</div>
</Underlay>
</OverlayProvider>
);

const underlay = screen.getByTestId('underlay');
expect(underlay).toBeInTheDocument();
});

test('underlay supports variant', () => {
render(
<ThemeProvider theme={theme}>
<OverlayProvider>
<Underlay data-testid="underlay" variant="one">
<div>something</div>
</Underlay>
</OverlayProvider>
</ThemeProvider>
);

const underlay = screen.getByTestId('underlay');
expect(underlay).toHaveStyle(`background-color: ${theme.colors.pink}`);
});

test('underlay supports size', () => {
render(
<ThemeProvider theme={theme}>
<OverlayProvider>
<Underlay data-testid="underlay" size="small">
<div>something</div>
</Underlay>
</OverlayProvider>
</ThemeProvider>
);

const underlay = screen.getByTestId('underlay');
expect(underlay).toHaveStyle(`padding: ${theme.space.small}px`);
});

0 comments on commit 2df9cbf

Please sign in to comment.