// Copyright (C) The Arvados Authors. All rights reserved.
//
// SPDX-License-Identifier: AGPL-3.0
import React from 'react';
import { configure, shallow, mount } from "enzyme";
import { BannerComponent } from './banner';
import { Button } from "@material-ui/core";
import Adapter from "enzyme-adapter-react-16";
import servicesProvider from '../../common/service-provider';
configure({ adapter: new Adapter() });
jest.mock('../../common/service-provider', () => ({
getServices: jest.fn(),
}));
describe('', () => {
let props;
beforeEach(() => {
props = {
isOpen: false,
bannerUUID: undefined,
keepWebInlineServiceUrl: '',
openBanner: jest.fn(),
closeBanner: jest.fn(),
classes: {} as any,
}
});
it('renders without crashing', () => {
// when
const banner = shallow();
// then
expect(banner.find(Button)).toHaveLength(1);
});
it('calls collectionService', () => {
// given
props.isOpen = true;
props.bannerUUID = '123';
const mocks = {
collectionService: {
files: jest.fn(() => ({ then: (callback) => callback([{ name: 'banner.html' }]) })),
getFileContents: jest.fn(() => ({ then: (callback) => callback('
Test
') }))
}
};
(servicesProvider.getServices as any).mockImplementation(() => mocks);
// when
const banner = mount();
// then
expect(servicesProvider.getServices).toHaveBeenCalled();
expect(mocks.collectionService.files).toHaveBeenCalled();
expect(mocks.collectionService.getFileContents).toHaveBeenCalled();
expect(banner.html()).toContain('Test
');
});
});