// Copyright (C) The Arvados Authors. All rights reserved.
//
// SPDX-License-Identifier: AGPL-3.0
import React from 'react';
import { mount, configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import { Provider } from 'react-redux';
import { combineReducers, createStore } from 'redux';
import SharingDialogComponent, {
SharingDialogComponentProps,
} from './sharing-dialog-component';
import {
extractUuidObjectType,
ResourceObjectType
} from 'models/resource';
configure({ adapter: new Adapter() });
describe("", () => {
let props: SharingDialogComponentProps;
let store;
beforeEach(() => {
const initialAuthState = {
config: {
keepWebServiceUrl: 'http://example.com/',
keepWebInlineServiceUrl: 'http://*.collections.example.com/',
clusterConfig: {
Users: {
AnonymousUserToken: ""
}
}
}
}
store = createStore(combineReducers({
auth: (state: any = initialAuthState, action: any) => state,
}));
props = {
open: true,
loading: false,
saveEnabled: false,
sharedResourceUuid: 'zzzzz-4zz18-zzzzzzzzzzzzzzz',
privateAccess: true,
sharingURLsNr: 2,
sharingURLsDisabled: false,
onClose: jest.fn(),
onSave: jest.fn(),
onCreateSharingToken: jest.fn(),
refreshPermissions: jest.fn(),
};
});
it("show sharing urls tab on collections when not disabled", () => {
expect(props.sharingURLsDisabled).toBe(false);
expect(props.sharingURLsNr).toBe(2);
expect(extractUuidObjectType(props.sharedResourceUuid) === ResourceObjectType.COLLECTION).toBe(true);
let wrapper = mount();
expect(wrapper.html()).toContain('Sharing URLs (2)');
// disable Sharing URLs UI
props.sharingURLsDisabled = true;
wrapper = mount();
expect(wrapper.html()).not.toContain('Sharing URLs');
});
it("does not show sharing urls on non-collection resources", () => {
props.sharedResourceUuid = 'zzzzz-j7d0g-0123456789abcde';
expect(extractUuidObjectType(props.sharedResourceUuid) === ResourceObjectType.COLLECTION).toBe(false);
expect(props.sharingURLsDisabled).toBe(false);
let wrapper = mount();
expect(wrapper.html()).not.toContain('Sharing URLs');
});
});