import React from 'react'
import renderWithTheme from '../../tests/helpers/renderWithTheme'
import { Position } from './grid'
import { Layout, useLayout } from './Layout'
const LayoutItem = ({ role, order, ...position }: { role: string; order?: number } & Position) => {
const layoutClass = useLayout(role, position, order)
return (
test
)
}
beforeAll(() => {
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: jest.fn().mockImplementation((query) => ({
matches: false,
media: query,
onchange: null,
addListener: jest.fn(),
removeListener: jest.fn(),
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn(),
})),
})
})
describe('useLayout tests', () => {
describe('Grid', () => {
test('Header classes and role', async () => {
const { getByTestId } = renderWithTheme(
)
const testElement = getByTestId('test-component')
expect(testElement.classList.contains('cactus-layout-header')).toBe(true)
expect(testElement.classList.contains('cactus-grid-header')).toBe(true)
const style = window.getComputedStyle(testElement)
expect(style.gridColumn).toBe('3')
})
test('Content component classes and role', async () => {
const { getByTestId } = renderWithTheme(
)
const testElement = getByTestId('test-component')
expect(testElement.classList.contains('cactus-layout-testComponent')).toBe(true)
expect(testElement.classList.contains('cactus-grid-component')).toBe(true)
const style = window.getComputedStyle(testElement)
expect(style.gridColumn).toBe('1')
expect(style.gridRow).toBe('1')
expect(style.display).toBe('block')
})
})
describe('Fixed', () => {
test('Fixed bottom classes and role', async () => {
const { container, getByTestId } = renderWithTheme(
)
expect(getByTestId('test-component').classList.contains('cactus-layout-bottom')).toBe(true)
expect(getByTestId('test-component').classList.contains('cactus-fixed-bottom')).toBe(true)
const testElement = container.querySelector('.cactus-layout-bottom')
const style = window.getComputedStyle(testElement as Element)
expect(style.position).toBe('fixed')
expect(style.left).toBe('0px')
expect(style.right).toBe('0px')
expect(style.bottom).toBe('0px')
})
test('Fixed right classes and role', async () => {
const { container, getByTestId } = renderWithTheme(
)
expect(getByTestId('test-component').classList.contains('cactus-layout-right')).toBe(true)
expect(getByTestId('test-component').classList.contains('cactus-fixed-right')).toBe(true)
const testElement = container.querySelector('.cactus-layout-right')
const style = window.getComputedStyle(testElement as Element)
expect(style.position).toBe('fixed')
expect(style.right).toBe('0px')
expect(style.bottom).toBe('0px')
expect(style.display).toBe('block')
expect(style.width).toBe('20px')
})
})
})