import {mountWithTheme, shallow} from 'sentry-test/enzyme';
import {Client} from 'app/api';
import PlatformPicker from 'app/components/platformPicker';
describe('PlatformPicker', function () {
beforeEach(function () {
this.stubbedApiRequest = jest.spyOn(Client.prototype, 'request');
});
afterEach(function () {
Client.prototype.request.mockRestore();
});
describe('render()', function () {
const baseProps = {
platform: '',
setPlatform: () => {},
location: {query: {}},
};
it('should only render Mobile platforms under Mobile tab', function () {
const props = {
...baseProps,
};
const wrapper = shallow();
wrapper.setState({category: 'mobile'});
const filteredPlatforms = wrapper
.find('PlatformCard')
.map(node => node.prop('platform').id);
expect(filteredPlatforms).not.toContain('java');
expect(filteredPlatforms).toContain('apple-ios');
expect(filteredPlatforms).toContain('react-native');
});
it('should render renderPlatformList with Python when filtered with py', function () {
const props = {
...baseProps,
};
const wrapper = shallow();
wrapper.setState({category: 'all', filter: 'py'});
const filteredPlatforms = wrapper
.find('PlatformCard')
.map(node => node.prop('platform').id);
expect(filteredPlatforms).not.toContain('java');
expect(filteredPlatforms).toContain('python-flask');
});
it('should render renderPlatformList with Native when filtered with c++ alias', function () {
const props = {
...baseProps,
};
const wrapper = shallow();
wrapper.setState({category: 'all', filter: 'c++'});
const filteredPlatforms = wrapper
.find('PlatformCard')
.map(node => node.prop('platform').id);
expect(filteredPlatforms).toContain('native');
});
it('should render renderPlatformList with community SDKs message if platform not found', function () {
const props = {
...baseProps,
};
const wrapper = shallow();
wrapper.setState({filter: 'aaaaaa'});
expect(wrapper.find('EmptyMessage')).toHaveLength(1);
});
it('should update State.tab onClick when particular tab is clicked', function () {
const props = {
...baseProps,
};
const wrapper = mountWithTheme(
,
TestStubs.routerContext()
);
const testListLink = wrapper.find('ListLink').last().find('a');
expect(wrapper.state().category).toBe('popular');
testListLink.simulate('click');
expect(wrapper.state().category).toBe('all');
});
it('should clear the platform when clear is clicked', function () {
const props = {
...baseProps,
platform: 'java',
setPlatform: jest.fn(),
};
const wrapper = mountWithTheme(
,
TestStubs.routerContext()
);
wrapper.find('ClearButton').simulate('click');
expect(props.setPlatform).toHaveBeenCalledWith(null);
});
});
});