// Copyright (C) The Arvados Authors. All rights reserved.
//
// SPDX-License-Identifier: AGPL-3.0
import React from "react";
import { mount, configure } from "enzyme";
import { ConditionalTabs, TabData } from "./conditional-tabs";
import Adapter from 'enzyme-adapter-react-16';
import { Tab } from "@material-ui/core";
configure({ adapter: new Adapter() });
describe("", () => {
let tabs: TabData[] = [];
beforeEach(() => {
tabs = [{
show: true,
label: "Tab1",
content:
Content1
,
},{
show: false,
label: "Tab2",
content: Content2
,
},{
show: true,
label: "Tab3",
content: Content3
,
}];
});
it("renders visible tabs", () => {
// given
const tabContainer = mount();
// expect 2 visible tabs
expect(tabContainer.find(Tab)).toHaveLength(2);
expect(tabContainer.find(Tab).at(0).text()).toBe("Tab1");
expect(tabContainer.find(Tab).at(1).text()).toBe("Tab3");
expect(tabContainer.find('div#content').text()).toBe("Content1");
// Show second tab
tabs[1].show = true;
tabContainer.setProps({ tabs: tabs });
// Expect 3 visible tabs
expect(tabContainer.find(Tab)).toHaveLength(3);
expect(tabContainer.find(Tab).at(0).text()).toBe("Tab1");
expect(tabContainer.find(Tab).at(1).text()).toBe("Tab2");
expect(tabContainer.find(Tab).at(2).text()).toBe("Tab3");
expect(tabContainer.find('div#content').text()).toBe("Content1");
});
it("resets selected tab on tab visibility change", () => {
// given
const tabContainer = mount();
// Expext second tab to be Tab3
expect(tabContainer.find(Tab).at(1).text()).toBe("Tab3");
// Click on Tab3
tabContainer.find(Tab).at(1).simulate('click');
expect(tabContainer.find('div#content').text()).toBe("Content3");
// when Tab2 becomes visible
tabs[1].show = true;
tabContainer.setProps({ tabs: tabs });
// Selected tab resets
expect(tabContainer.find('div#content').text()).toBe("Content1");
});
});