Skip to content

Commit

Permalink
Fix #10127: update tests for react-redux (#10142)
Browse files Browse the repository at this point in the history
Updates tests relying on 'render' returning a reference to enable
react-redux 7.x upwards (where some components become stateless and render
no longer returns a reference, even though it was successful)

On Behalf of DB Systel

Co-authored-by: Florian Kellner <florian.fl.kellner@deutschebahn.com>
  • Loading branch information
fkellner and Florian Kellner committed Aug 29, 2024
1 parent 7049fa2 commit 4985551
Show file tree
Hide file tree
Showing 12 changed files with 306 additions and 239 deletions.
25 changes: 15 additions & 10 deletions web/client/components/app/__tests__/StandardAppComponent-test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,21 @@ describe('StandardAppComponent', () => {
setTimeout(done);
});

it('creates a default app', () => {
it('creates a default app', (done) => {
const store = {
dispatch: () => {},
subscribe: () => {},
getState: () => ({})
};
const app = ReactDOM.render(<Provider store={store}><StandardAppComponent/></Provider>, document.getElementById("container"));
expect(app).toExist();
const container = document.getElementById("container");
expect(container.innerHTML).toNotExist();
ReactDOM.render(<Provider store={store}><StandardAppComponent/></Provider>, container, () => {
expect(container.innerHTML).toExist();
done();
});
});

it('creates a default app with plugins', () => {
it('creates a default app with plugins', (done) => {
const plugins = {
MyPlugin
};
Expand All @@ -54,11 +58,12 @@ describe('StandardAppComponent', () => {
subscribe: () => {},
getState: () => ({})
};
const app = ReactDOM.render(<Provider store={store}><StandardAppComponent plugins={plugins} pluginsConfig={{desktop: ['My']}} /></Provider>, document.getElementById("container"));
expect(app).toExist();

const dom = ReactDOM.findDOMNode(app);

expect(dom.getElementsByClassName('MyPlugin').length).toBe(1);
const container = document.getElementById("container");
expect(container.innerHTML).toNotExist();
ReactDOM.render(<Provider store={store}><StandardAppComponent plugins={plugins} pluginsConfig={{desktop: ['My']}} /></Provider>, container, () => {
expect(container.innerHTML).toExist();
expect(container.getElementsByClassName('MyPlugin').length).toBe(1);
done();
});
});
});
16 changes: 9 additions & 7 deletions web/client/components/app/__tests__/StandardContainer-test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ describe('StandardContainer', () => {
});


it('creates a default app with component and plugins', () => {
it('creates a default app with component and plugins', (done) => {
const plugins = {
MyPlugin: {}
};
Expand All @@ -63,11 +63,13 @@ describe('StandardContainer', () => {
const componentConfig = {
component: mycomponent
};

const app = ReactDOM.render(<Provider store={store}><StandardContainer plugins={plugins} componentConfig={componentConfig}/></Provider>, document.getElementById("container"));
expect(app).toExist();
const dom = ReactDOM.findDOMNode(app);
expect(dom.getElementsByClassName('mycomponent').length).toBe(1);
expect(dom.getElementsByClassName('MyPlugin').length).toBe(1);
const container = document.getElementById("container");
expect(container.innerHTML).toNotExist();
ReactDOM.render(<Provider store={store}><StandardContainer plugins={plugins} componentConfig={componentConfig}/></Provider>, container, () => {
expect(container.innerHTML).toExist();
expect(container.getElementsByClassName('mycomponent').length).toBe(1);
expect(container.getElementsByClassName('MyPlugin').length).toBe(1);
done();
});
});
});
90 changes: 49 additions & 41 deletions web/client/components/app/__tests__/StandardRouter-test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ describe('StandardRouter', () => {
setTimeout(done);
});

it('creates a default router app', () => {
it('creates a default router app', (done) => {
const store = {
dispatch: () => {},
subscribe: () => {
Expand All @@ -58,11 +58,15 @@ describe('StandardRouter', () => {
unsubscribe: () => {},
getState: () => ({})
};
const app = ReactDOM.render(<Provider store={store}><StandardRouter/></Provider>, document.getElementById("container"));
expect(app).toExist();
const container = document.getElementById("container");
expect(container.innerHTML).toNotExist();
ReactDOM.render(<Provider store={store}><StandardRouter/></Provider>, container, () => {
expect(container.innerHTML).toExist();
done();
});
});

it('creates a default router app with pages', () => {
it('creates a default router app with pages', (done) => {
const store = {
dispatch: () => {},
subscribe: () => {
Expand All @@ -75,14 +79,16 @@ describe('StandardRouter', () => {
path: '/',
component: mycomponent
}];
const app = ReactDOM.render(<Provider store={store}><StandardRouter pages={pages}/></Provider>, document.getElementById("container"));
expect(app).toExist();
const dom = ReactDOM.findDOMNode(app);

expect(dom.getElementsByClassName('mycomponent').length).toBe(1);
const container = document.getElementById("container");
expect(container.innerHTML).toNotExist();
ReactDOM.render(<Provider store={store}><StandardRouter pages={pages}/></Provider>, container, () => {
expect(container.innerHTML).toExist();
expect(container.getElementsByClassName('mycomponent').length).toBe(1);
done();
});
});

it('creates a default router app with pages and plugins', () => {
it('creates a default router app with pages and plugins', (done) => {
const plugins = {
MyPlugin: {}
};
Expand All @@ -99,15 +105,16 @@ describe('StandardRouter', () => {
path: '/',
component: mycomponent
}];
const app = ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages}/></Provider>, document.getElementById("container"));
expect(app).toExist();

const dom = ReactDOM.findDOMNode(app);

expect(dom.getElementsByClassName('MyPlugin').length).toBe(1);
const container = document.getElementById("container");
expect(container.innerHTML).toNotExist();
ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages}/></Provider>, container, () => {
expect(container.innerHTML).toExist();
expect(container.getElementsByClassName('MyPlugin').length).toBe(1);
done();
});
});

it('if we dont wait for theme no spinner is shown', () => {
it('if we dont wait for theme no spinner is shown', (done) => {
const plugins = {
MyPlugin: {}
};
Expand All @@ -124,14 +131,15 @@ describe('StandardRouter', () => {
path: '/',
component: mycomponent
}];
const app = ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages} loadAfterTheme={false}/></Provider>, document.getElementById("container"));
expect(app).toExist();

const dom = ReactDOM.findDOMNode(app);

expect(dom.getElementsByClassName('_ms2_init_spinner').length).toBe(0);
const container = document.getElementById("container");
expect(container.innerHTML).toNotExist();
ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages} loadAfterTheme={false}/></Provider>, container, () => {
expect(container.innerHTML).toExist();
expect(container.getElementsByClassName('_ms2_init_spinner').length).toBe(0);
done();
});
});
it('if we wait for theme no spinner is shown if the theme is already loaded', () => {
it('if we wait for theme no spinner is shown if the theme is already loaded', (done) => {
const plugins = {
MyPlugin: {}
};
Expand All @@ -148,14 +156,15 @@ describe('StandardRouter', () => {
path: '/',
component: mycomponent
}];
const app = ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages} loadAfterTheme themeLoaded/></Provider>, document.getElementById("container"));
expect(app).toExist();

const dom = ReactDOM.findDOMNode(app);

expect(dom.getElementsByClassName('_ms2_init_spinner').length).toBe(0);
const container = document.getElementById("container");
expect(container.innerHTML).toNotExist();
ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages} loadAfterTheme themeLoaded/></Provider>, container, () => {
expect(container.innerHTML).toExist();
expect(container.getElementsByClassName('_ms2_init_spinner').length).toBe(0);
done();
});
});
it('if we wait for theme spinner is shown if the theme is not already loaded', () => {
it('if we wait for theme spinner is shown if the theme is not already loaded', (done) => {
const plugins = {
MyPlugin: {}
};
Expand All @@ -172,12 +181,13 @@ describe('StandardRouter', () => {
path: '/',
component: mycomponent
}];
const app = ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages} loadAfterTheme themeLoaded={false} /></Provider>, document.getElementById("container"));
expect(app).toExist();

const dom = ReactDOM.findDOMNode(app);

expect(dom.getElementsByClassName('_ms2_init_spinner').length).toBe(1);
const container = document.getElementById("container");
expect(container.innerHTML).toNotExist();
ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages} loadAfterTheme themeLoaded={false} /></Provider>, container, () => {
expect(container.innerHTML).toExist();
expect(container.getElementsByClassName('_ms2_init_spinner').length).toBe(1);
done();
});
});
it('if we wait for theme onThemeLoaded is called when theme is loaded', (done) => {
const plugins = {
Expand All @@ -196,11 +206,10 @@ describe('StandardRouter', () => {
path: '/',
component: mycomponent
}];
const app = ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages} version="VERSION" themeCfg={{
ReactDOM.render(<Provider store={store}><StandardRouter plugins={plugins} pages={pages} version="VERSION" themeCfg={{
theme: "default",
path: "base/web/client/test-resources/themes"
}} loadAfterTheme themeLoaded={false} onThemeLoaded={done}/></Provider>, document.getElementById("container"));
expect(app).toExist();
});

it('if we wait for theme onThemeLoaded is called when theme custom is loaded', (done) => {
Expand All @@ -220,7 +229,7 @@ describe('StandardRouter', () => {
path: '/',
component: mycomponent
}];
const app = ReactDOM.render(
ReactDOM.render(
<Provider store={store}>
<StandardRouter plugins={plugins} pages={pages} version="VERSION" themeCfg={{
theme: "custom",
Expand All @@ -230,6 +239,5 @@ describe('StandardRouter', () => {
done();
}} />
</Provider>, document.getElementById("container"));
expect(app).toExist();
});
});
Loading

0 comments on commit 4985551

Please sign in to comment.