Skip to content

Commit a263b6c

Browse files
committed
fix skipped tests
1 parent c184b9f commit a263b6c

File tree

2 files changed

+76
-71
lines changed

2 files changed

+76
-71
lines changed

__tests__/Parallax.test.tsx

Lines changed: 57 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,9 @@ describe('Expect the <Parallax> component', () => {
5858
);
5959
});
6060

61-
// fix this
62-
it.skip('to create an element in the controller on mount', () => {
61+
it('to create an element in the controller on mount', () => {
6362
const controller = ParallaxController.init({ scrollAxis: VERTICAL });
64-
controller.createElement = jest.fn();
63+
controller.createElement = jest.fn(controller.createElement);
6564

6665
render(
6766
<MockProvider controllerMock={controller}>
@@ -72,18 +71,8 @@ describe('Expect the <Parallax> component', () => {
7271
);
7372

7473
expect(controller.createElement).toBeCalledWith({
75-
elInner: (
76-
<div className="parallax-inner">
77-
<div />
78-
</div>
79-
),
80-
elOuter: (
81-
<div className="parallax-outer">
82-
<div className="parallax-inner">
83-
<div />
84-
</div>
85-
</div>
86-
),
74+
elInner: expect.any(HTMLElement),
75+
elOuter: expect.any(HTMLElement),
8776
props: { disabled: false, x0: 0, x1: 0, y0: -100, y1: 100 },
8877
});
8978
});
@@ -104,72 +93,85 @@ describe('Expect the <Parallax> component', () => {
10493
expect(controller.removeElementById).toBeCalledWith(element.id);
10594
});
10695

107-
// fix this
108-
it.skip('to update an element in the controller when receiving relevant new props', () => {
96+
it('to update an element in the controller when receiving relevant new props', () => {
10997
const controller = ParallaxController.init({ scrollAxis: VERTICAL });
11098
controller.updateElementPropsById = jest.fn();
11199

112-
class StateChanger extends React.Component {
113-
state = { disabled: false };
114-
render() {
115-
return <Parallax {...this.state} />;
116-
}
100+
function Wrapper(props) {
101+
return (
102+
<MockProvider controllerMock={controller}>
103+
{props.children}
104+
</MockProvider>
105+
);
117106
}
118107

119-
let stateInstance;
120-
render(
121-
<MockProvider controllerMock={controller}>
122-
<StateChanger ref={(ref) => (stateInstance = ref)} />
123-
</MockProvider>
124-
);
108+
const { rerender } = render(<Parallax disabled={true} />, {
109+
wrapper: Wrapper,
110+
});
125111

126-
const testProps = {
127-
disabled: true,
128-
x: [100, -100],
129-
y: [-100, 100],
130-
};
112+
rerender(<Parallax disabled={false} x={[100, -100]} y={[-100, 100]} />);
131113

132-
// trigger an update
133-
stateInstance.setState(testProps);
134114
const element = controller.getElements()[0];
135115

136116
expect(controller.updateElementPropsById).toBeCalledWith(element.id, {
137-
disabled: true,
117+
disabled: false,
138118
x0: 100,
139119
x1: -100,
140120
y0: -100,
141121
y1: 100,
142122
});
143123

144-
// should not be called again
145-
stateInstance.setState({
146-
...testProps,
147-
foo: false,
148-
bar: true,
124+
const newProps = { disabled: false, x: [-40, -60], y: [10, 80] };
125+
126+
rerender(
127+
<Parallax disabled={newProps.disabled} x={newProps.x} y={newProps.y} />
128+
);
129+
130+
expect(controller.updateElementPropsById).toBeCalledWith(element.id, {
131+
disabled: false,
132+
x0: -40,
133+
x1: -60,
134+
y0: 10,
135+
y1: 80,
149136
});
150137

151-
expect(controller.updateElementPropsById).toHaveBeenCalledTimes(1);
138+
// only update with valid props
139+
rerender(
140+
<Parallax
141+
disabled={newProps.disabled}
142+
x={newProps.x}
143+
y={newProps.y}
144+
// @ts-expect-error
145+
nope="bad"
146+
/>
147+
);
148+
149+
expect(controller.updateElementPropsById).toHaveBeenCalledTimes(2);
152150
});
153-
// fix this
154-
it.skip('to reset styles on an element if the disabled prop is true', () => {
151+
152+
it('to reset styles on an element if the disabled prop is true', () => {
155153
const controller = ParallaxController.init({ scrollAxis: VERTICAL });
156154
controller.resetElementStyles = jest.fn();
157155

158-
class StateChanger extends React.Component {
159-
state = { disabled: false };
160-
render() {
161-
return <Parallax {...this.state} />;
162-
}
156+
function Wrapper(props) {
157+
return (
158+
<MockProvider controllerMock={controller}>
159+
{props.children}
160+
</MockProvider>
161+
);
163162
}
164163

165-
let stateInstance;
166-
render(
167-
<MockProvider controllerMock={controller}>
168-
<StateChanger ref={(ref) => (stateInstance = ref)} />
169-
</MockProvider>
164+
const offX = [100, -100];
165+
const offY = [100, -100];
166+
167+
const { rerender } = render(
168+
<Parallax disabled={false} x={offX} y={offY} />,
169+
{
170+
wrapper: Wrapper,
171+
}
170172
);
171173

172-
stateInstance.setState({ disabled: true });
174+
rerender(<Parallax disabled={true} x={offX} y={offY} />);
173175

174176
expect(controller.resetElementStyles).toBeCalled();
175177
});

__tests__/ParallaxProvider.test.tsx

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import React from 'react';
44
import ReactDOM from 'react-dom';
55

6+
import { render } from '@testing-library/react';
67
import { ParallaxProvider } from '../src/components/ParallaxProvider';
78
import { ParallaxController } from '../src/classes/ParallaxController';
9+
import { useController } from '../src/hooks/useController';
810

911
describe('A <ParallaxProvider>', () => {
1012
it('to render children', () => {
@@ -29,21 +31,21 @@ describe('A <ParallaxProvider>', () => {
2931
expect(child).toBeCalled();
3032
});
3133

32-
it.skip('to pass the controller context', () => {
33-
// const node = document.createElement('div');
34-
// let parallaxController;
35-
// const ContextChecker = withController((props) => {
36-
// parallaxController = props.parallaxController;
37-
// return null;
38-
// });
39-
// ReactDOM.render(
40-
// <ParallaxProvider>
41-
// <ContextChecker />
42-
// </ParallaxProvider>,
43-
// node
44-
// );
45-
// // Expected methods and state
46-
// expect(parallaxController).toBeInstanceOf(ParallaxController);
34+
it('to pass the controller context', () => {
35+
let parallaxController;
36+
37+
const ContextChecker = () => {
38+
parallaxController = useController();
39+
return null;
40+
};
41+
42+
render(
43+
<ParallaxProvider>
44+
<ContextChecker />
45+
</ParallaxProvider>
46+
);
47+
// Expected methods and state
48+
expect(parallaxController).toBeInstanceOf(ParallaxController);
4749
});
4850

4951
it('to destroy the controller when unmounting', () => {
@@ -98,8 +100,9 @@ describe('A <ParallaxProvider>', () => {
98100
expect(spy).toBeCalledWith(el);
99101
});
100102

103+
// NOTE: I think this test can be removed
101104
it('to always create a new instance when re-mounting', () => {
102-
// the provider isn't gauranteed to be destroyed before re-instantiated
105+
// the provider isn't guaranteed to be destroyed before re-instantiated
103106
// in a route change.
104107

105108
// this test asserts the controller on the provider will still be

0 commit comments

Comments
 (0)