@@ -2,55 +2,81 @@ import React from 'react';
22import { render , act , screen } from '@testing-library/react' ;
33import '@testing-library/jest-dom/extend-expect' ;
44
5- import { mockViewport } from '../src/mocks/viewport' ;
5+ import { mockViewport , mockViewportForTestGroup } from '../src/mocks/viewport' ;
66
77import CustomUseMedia from '../example/viewport/custom-use-media/CustomUseMedia' ;
88
99const VIEWPORT_DESKTOP = { width : '1440px' , height : '900px' } ;
1010const VIEWPORT_MOBILE = { width : '320px' , height : '568px' } ;
1111
12- describe ( 'It renders correctly on server, desktop and mobile' , ( ) => {
13- it ( 'works on the server' , ( ) => {
14- render ( < CustomUseMedia /> ) ;
12+ describe ( 'mockViewport' , ( ) => {
13+ describe ( 'It renders correctly on server, desktop and mobile' , ( ) => {
14+ it ( 'works on the server' , ( ) => {
15+ render ( < CustomUseMedia /> ) ;
1516
16- expect ( screen . getByText ( 'server' ) ) . toBeInTheDocument ( ) ;
17- } ) ;
17+ expect ( screen . getByText ( 'server' ) ) . toBeInTheDocument ( ) ;
18+ } ) ;
1819
19- it ( 'works on desktop' , ( ) => {
20- const viewport = mockViewport ( VIEWPORT_DESKTOP ) ;
20+ it ( 'works on desktop' , ( ) => {
21+ const viewport = mockViewport ( VIEWPORT_DESKTOP ) ;
2122
22- render ( < CustomUseMedia /> ) ;
23+ render ( < CustomUseMedia /> ) ;
2324
24- expect ( screen . getByText ( 'desktop' ) ) . toBeInTheDocument ( ) ;
25+ expect ( screen . getByText ( 'desktop' ) ) . toBeInTheDocument ( ) ;
2526
26- viewport . cleanup ( ) ;
27- } ) ;
27+ viewport . cleanup ( ) ;
28+ } ) ;
2829
29- it ( 'works on mobile' , ( ) => {
30- const viewport = mockViewport ( VIEWPORT_MOBILE ) ;
30+ it ( 'works on mobile' , ( ) => {
31+ const viewport = mockViewport ( VIEWPORT_MOBILE ) ;
3132
32- render ( < CustomUseMedia /> ) ;
33+ render ( < CustomUseMedia /> ) ;
3334
34- expect ( screen . getByText ( 'not desktop' ) ) . toBeInTheDocument ( ) ;
35+ expect ( screen . getByText ( 'not desktop' ) ) . toBeInTheDocument ( ) ;
3536
36- viewport . cleanup ( ) ;
37- } ) ;
37+ viewport . cleanup ( ) ;
38+ } ) ;
39+
40+ it ( 'works on desktop and mobile, even if we change the viewport description' , ( ) => {
41+ const viewport = mockViewport ( VIEWPORT_DESKTOP ) ;
3842
39- it ( 'works on desktop and mobile, even if we change the viewport description' , ( ) => {
40- const viewport = mockViewport ( VIEWPORT_DESKTOP ) ;
43+ render ( < CustomUseMedia /> ) ;
4144
42- render ( < CustomUseMedia /> ) ;
45+ expect ( screen . getByText ( 'desktop' ) ) . toBeInTheDocument ( ) ;
46+ expect ( screen . queryByText ( 'not desktop' ) ) . not . toBeInTheDocument ( ) ;
4347
44- expect ( screen . getByText ( 'desktop' ) ) . toBeInTheDocument ( ) ;
45- expect ( screen . queryByText ( 'not desktop' ) ) . not . toBeInTheDocument ( ) ;
48+ act ( ( ) => {
49+ viewport . set ( VIEWPORT_MOBILE ) ;
50+ } ) ;
4651
47- act ( ( ) => {
48- viewport . set ( VIEWPORT_MOBILE ) ;
52+ expect ( screen . getByText ( 'not desktop' ) ) . toBeInTheDocument ( ) ;
53+ expect ( screen . queryByText ( 'desktop' ) ) . not . toBeInTheDocument ( ) ;
54+
55+ viewport . cleanup ( ) ;
4956 } ) ;
57+ } ) ;
58+ } ) ;
59+
60+ describe ( 'mockViewportForTestGroup' , ( ) => {
61+ describe ( 'Desktop' , ( ) => {
62+ mockViewportForTestGroup ( VIEWPORT_DESKTOP ) ;
63+
64+ it ( 'works on desktop and mobile, even if we change the viewport description' , ( ) => {
65+ render ( < CustomUseMedia /> ) ;
66+
67+ expect ( screen . getByText ( 'desktop' ) ) . toBeInTheDocument ( ) ;
68+ expect ( screen . queryByText ( 'not desktop' ) ) . not . toBeInTheDocument ( ) ;
69+ } ) ;
70+ } ) ;
5071
51- expect ( screen . getByText ( 'not desktop' ) ) . toBeInTheDocument ( ) ;
52- expect ( screen . queryByText ( 'desktop' ) ) . not . toBeInTheDocument ( ) ;
72+ describe ( 'Mobile' , ( ) => {
73+ mockViewportForTestGroup ( VIEWPORT_MOBILE ) ;
5374
54- viewport . cleanup ( ) ;
75+ it ( 'works on desktop and mobile, even if we change the viewport description' , ( ) => {
76+ render ( < CustomUseMedia /> ) ;
77+
78+ expect ( screen . getByText ( 'not desktop' ) ) . toBeInTheDocument ( ) ;
79+ expect ( screen . queryByText ( 'desktop' ) ) . not . toBeInTheDocument ( ) ;
80+ } ) ;
5581 } ) ;
5682} ) ;
0 commit comments