| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import React from 'react'
- import PropTypes from 'prop-types'
- import { expect } from 'chai'
- import { render } from '@testing-library/react'
- import useExpandCollapse from '../../../../frontend/js/shared/hooks/use-expand-collapse'
- const sampleContent = (
- <div>
- <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
- <p>Maecenas maximus ultrices sollicitudin.</p>
- <p>Praesent mollis arcu eget molestie viverra.</p>
- <p>Pellentesque eget molestie nisl, non hendrerit lectus.</p>
- </div>
- )
- function ExpandCollapseTestUI({ expandCollapseArgs }) {
- const { expandableProps } = useExpandCollapse(expandCollapseArgs)
- return (
- <>
- <div {...expandableProps}>{sampleContent}</div>
- </>
- )
- }
- ExpandCollapseTestUI.propTypes = {
- expandCollapseArgs: PropTypes.object
- }
- describe('useExpandCollapse', function() {
- describe('custom CSS classes', function() {
- it('supports a custom CSS class', function() {
- const testArgs = {
- classes: {
- container: 'my-custom-class'
- }
- }
- const { container } = render(
- <ExpandCollapseTestUI expandCollapseArgs={testArgs} />
- )
- const elWithCustomCSSClass = container.querySelector('div')
- expect(elWithCustomCSSClass).to.exist
- })
- it('supports an extra custom CSS class for the collapsed state', function() {
- const testArgs = {
- classes: {
- containerCollapsed: 'my-custom-collapsed-class'
- }
- }
- const { container } = render(
- <ExpandCollapseTestUI expandCollapseArgs={testArgs} />
- )
- const elWithCustomCollapsedCSSClass = container.querySelector(
- '.my-custom-collapsed-class'
- )
- expect(elWithCustomCollapsedCSSClass).to.exist
- })
- it('ignores the collapsed CSS class when expanded', function() {
- const testArgs = {
- initiallyExpanded: true,
- classes: {
- containerCollapsed: 'my-custom-collapsed-class'
- }
- }
- const { container } = render(
- <ExpandCollapseTestUI expandCollapseArgs={testArgs} />
- )
- const elWithCustomCollapsedCSSClass = container.querySelector(
- '.my-custom-collapsed-class'
- )
- expect(elWithCustomCollapsedCSSClass).to.not.exist
- })
- })
- describe('height and width support via dimension argument', function() {
- it('defaults to height', function() {
- const { container } = render(<ExpandCollapseTestUI />)
- const expandCollapseEl = container.firstChild
- expect(expandCollapseEl.style.height).to.not.be.empty
- expect(expandCollapseEl.style.width).to.be.empty
- })
- it('supports width', function() {
- const testArgs = {
- dimension: 'width'
- }
- const { container } = render(
- <ExpandCollapseTestUI expandCollapseArgs={testArgs} />
- )
- const expandCollapseEl = container.firstChild
- expect(expandCollapseEl.style.height).to.be.empty
- expect(expandCollapseEl.style.width).to.not.be.empty
- })
- })
- describe('collapsed size support via collapsedSize argument', function() {
- it('defaults to 0px', function() {
- const { container } = render(<ExpandCollapseTestUI />)
- const expandCollapseEl = container.firstChild
- expect(expandCollapseEl.style.height).to.equal('0px')
- })
- it('supports a custom collapsed size', function() {
- const testArgs = {
- collapsedSize: 200
- }
- const { container } = render(
- <ExpandCollapseTestUI expandCollapseArgs={testArgs} />
- )
- const expandCollapseEl = container.firstChild
- expect(expandCollapseEl.style.height).to.equal('200px')
- })
- it('supports a custom collapsed size for width', function() {
- const testArgs = {
- collapsedSize: 200,
- dimension: 'width'
- }
- const { container } = render(
- <ExpandCollapseTestUI expandCollapseArgs={testArgs} />
- )
- const expandCollapseEl = container.firstChild
- expect(expandCollapseEl.style.height).to.be.empty
- expect(expandCollapseEl.style.width).to.equal('200px')
- })
- })
- })
|