21720:
[arvados.git] / services / workbench2 / src / views-components / baner / banner.cy.js
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import React from 'react';
6 import { BannerComponent } from './banner';
7 import servicesProvider from 'common/service-provider';
8 import { Provider } from "react-redux";
9 import { ThemeProvider } from "@mui/material";
10 import { CustomTheme } from 'common/custom-theme';
11 import { configureStore } from "store/store";
12 import { createBrowserHistory } from "history";
13 import { createServices } from "services/services";
14
15 describe('<BannerComponent />', () => {
16
17     let props;
18
19     beforeEach(() => {
20         props = {
21             isOpen: true,
22             bannerUUID: undefined,
23             keepWebInlineServiceUrl: '',
24             openBanner: cy.stub(),
25             closeBanner: cy.stub(),
26             classes: {},
27         }
28     });
29
30     const services = createServices("/arvados/v1");
31     const store = configureStore(createBrowserHistory(), services);
32
33     it('renders without crashing', () => {
34         // when
35         cy.mount(
36             <Provider store={store}>
37               <ThemeProvider theme={CustomTheme}>
38                 <BannerComponent {...props} />
39               </ThemeProvider>
40             </Provider>);
41
42         // then
43         cy.get('button').should('exist');
44     });
45
46     it('calls collectionService', () => {
47         // given
48         props.isOpen = true;
49         props.bannerUUID = '123';
50
51         cy.spy(servicesProvider, 'getServices').as('getServices');
52         cy.spy(servicesProvider.getServices().collectionService, 'files').as('files');
53         cy.spy(servicesProvider.getServices().collectionService, 'getFileContents').as('getFileContents');
54
55         // when
56         cy.mount(
57             <Provider store={store}>
58               <ThemeProvider theme={CustomTheme}>
59                 <BannerComponent {...props} />
60               </ThemeProvider>
61             </Provider>);
62
63         // then
64         cy.get('@getServices').should('be.called');
65         cy.get('@files').should('be.called');
66         cy.get('@getFileContents').should('be.called');
67         cy.get('html').should('contain', 'Test banner message');
68     });
69 });
70