|
1 | 1 | /* eslint-disable global-require, react/prop-types, react/no-find-dom-node, react/no-multi-comp, react/prefer-stateless-function */ |
2 | | - |
| 2 | +/** |
| 3 | + * This tests are testing a common behavior for dynamic styles between HOC and hooks interfaces. |
| 4 | + */ |
3 | 5 | import expect from 'expect.js' |
4 | 6 | import * as React from 'react' |
5 | 7 | import TestRenderer from 'react-test-renderer' |
6 | 8 | import {stripIndent} from 'common-tags' |
7 | 9 |
|
8 | | -import {JssProvider, SheetsRegistry} from '../src' |
| 10 | +import {JssProvider, SheetsRegistry, ThemeProvider} from '../src' |
9 | 11 |
|
10 | 12 | const createGenerateId = () => { |
11 | 13 | let counter = 0 |
@@ -562,5 +564,59 @@ export default ({createStyledComponent}) => { |
562 | 564 | expect(passedProps.color).to.equal('rgb(255, 0, 0)') |
563 | 565 | expect(passedProps.height).to.equal(20) |
564 | 566 | }) |
| 567 | + |
| 568 | + it('should render multiple elements with applied media query and theme function', () => { |
| 569 | + const theme: Object = { |
| 570 | + background: 'yellow', |
| 571 | + background2: 'red' |
| 572 | + } |
| 573 | + |
| 574 | + const styles = themeObj => ({ |
| 575 | + wrapper: () => ({ |
| 576 | + padding: 40, |
| 577 | + background: themeObj.background, |
| 578 | + textAlign: 'left', |
| 579 | + '@media (min-width: 1024px)': { |
| 580 | + backgroundColor: themeObj.background2 |
| 581 | + } |
| 582 | + }) |
| 583 | + }) |
| 584 | + |
| 585 | + MyComponent = createStyledComponent(styles) |
| 586 | + |
| 587 | + const a = [1, 2] |
| 588 | + TestRenderer.create( |
| 589 | + <JssProvider registry={registry} generateId={createGenerateId()}> |
| 590 | + <ThemeProvider theme={theme}> |
| 591 | + {a.map(item => ( |
| 592 | + <MyComponent key={item} /> |
| 593 | + ))} |
| 594 | + </ThemeProvider> |
| 595 | + </JssProvider> |
| 596 | + ) |
| 597 | + expect(registry.toString()).to.be(stripIndent` |
| 598 | + .wrapper-0 {} |
| 599 | + .wrapper-d0-1 { |
| 600 | + padding: 40px; |
| 601 | + background: yellow; |
| 602 | + text-align: left; |
| 603 | + } |
| 604 | + @media (min-width: 1024px) { |
| 605 | + .wrapper-d0-1 { |
| 606 | + background-color: red; |
| 607 | + } |
| 608 | + } |
| 609 | + .wrapper-d1-2 { |
| 610 | + padding: 40px; |
| 611 | + background: yellow; |
| 612 | + text-align: left; |
| 613 | + } |
| 614 | + @media (min-width: 1024px) { |
| 615 | + .wrapper-d1-2 { |
| 616 | + background-color: red; |
| 617 | + } |
| 618 | + } |
| 619 | + `) |
| 620 | + }) |
565 | 621 | }) |
566 | 622 | } |
0 commit comments