import { h } from 'preact';
import render from 'preact-render-to-json';
import { shallow } from 'preact-render-spy';
import View from '../view';
let exited = false;
let accepted = false;
let declined = false;
const onViewExitFake = () => {
exited = true;
};
const handleInvitationAcceptFake = () => {
accepted = true;
};
const handleInvitationDeclineFake = () => {
declined = true;
};
const sampleChannel = [
{
channel_name: 'name',
description: 'some description',
membership_id: '12345',
},
];
const getView = channel => (
);
describe('', () => {
it('should render and test snapshot (no channel)', () => {
const tree = render(getView([]));
expect(tree).toMatchSnapshot();
});
it('should render and test snapshot (with channel)', () => {
const tree = shallow(getView(sampleChannel));
expect(tree).toMatchSnapshot();
});
it('should have the proper attributes and text values (no channel provided)', () => {
const context = shallow(getView([]));
expect(context.find('.chatNonChatView').exists()).toEqual(true);
expect(context.find('.container').exists()).toEqual(true);
expect(context.find('.chatNonChatView_exitbutton').exists()).toEqual(true);
expect(context.find('.chatNonChatView_exitbutton').text()).toEqual('×');
expect(context.find('h1').exists()).toEqual(true);
expect(context.find('h1').text()).toEqual('Channel Invitations 🤗');
expect(context.find('.chatNonChatView_contentblock').exists()).toEqual(
false,
);
});
it('should have the proper attributes and text values (with channel provided)', () => {
const context = shallow(getView(sampleChannel));
expect(context.find('.chatNonChatView_contentblock').exists()).toEqual(
true,
);
expect(context.find('h2').exists()).toEqual(true);
expect(context.find('h2').text()).toEqual('name');
expect(context.find('em').exists()).toEqual(true);
expect(context.find('em').text()).toEqual('some description');
expect(context.find('.cta').exists()).toEqual(true);
expect(
context
.find('.cta')
.at(0)
.attr('data-content'),
).toEqual('12345'); // accept button
expect(
context
.find('.cta')
.at(0)
.text(),
).toEqual('Accept'); // accept button
expect(
context
.find('.cta')
.at(1)
.attr('data-content'),
).toEqual('12345'); // decline button
expect(
context
.find('.cta')
.at(1)
.text(),
).toEqual('Decline'); // accept button
});
it('should trigger exit', () => {
const context = shallow(getView([]));
context.find('.chatNonChatView_exitbutton').simulate('click');
expect(exited).toEqual(true);
exited = false;
});
it('should trigger accept', () => {
const context = shallow(getView(sampleChannel));
context
.find('.cta')
.at(0)
.simulate('click'); // click accept button
expect(exited).toEqual(false);
expect(accepted).toEqual(true);
expect(declined).toEqual(false);
accepted = false;
});
it('should trigger decline', () => {
const context = shallow(getView(sampleChannel));
context
.find('.cta')
.at(1)
.simulate('click'); // click decline button
expect(exited).toEqual(false);
expect(accepted).toEqual(false);
expect(declined).toEqual(true);
declined = false;
});
});