1ff-chat-ui
Version:
chatbot to communicate with taught ai
95 lines (72 loc) • 3.29 kB
JavaScript
import { getPopUp, videoMarkup, imageMarkup } from '../../src/lib/chat-widgets';
describe('getPopUp function', () => {
it('should create the first modal when type is "1111"', () => {
// Arrange
const type = '1111';
// Act
const modal = getPopUp(type);
// Assert
expect(modal).toBeInstanceOf(HTMLDivElement);
expect(modal.classList.contains('modal-wrapper')).toBe(true);
const popUp = modal.querySelector('.pop-up');
expect(popUp).toBeInstanceOf(HTMLDivElement);
expect(popUp.classList.contains('pop-up')).toBe(true);
const counter = popUp.querySelector('.image1');
expect(counter).toBeInstanceOf(HTMLDivElement);
expect(counter.classList.contains('image1')).toBe(true);
const header = popUp.querySelector('.header');
expect(header).toBeInstanceOf(HTMLDivElement);
expect(header.textContent).toBe('Connection with our best Nutrition Agent');
const subHeader = popUp.querySelector('.sub-header');
expect(subHeader).toBeInstanceOf(HTMLDivElement);
expect(subHeader.textContent).toBe('A few seconds until the chat starts');
});
it('should create the second modal when type is "1112"', () => {
// Arrange
const type = '1112';
// Act
const modal = getPopUp(type);
// Assert
expect(modal).toBeInstanceOf(HTMLDivElement);
expect(modal.classList.contains('modal-wrapper')).toBe(true);
const popUp = modal.querySelector('.pop-up');
expect(popUp).toBeInstanceOf(HTMLDivElement);
expect(popUp.classList.contains('pop-up')).toBe(true);
const counter = popUp.querySelector('.image2');
expect(counter).toBeInstanceOf(HTMLDivElement);
expect(counter.classList.contains('image2')).toBe(true);
const header = popUp.querySelector('.header');
expect(header).toBeInstanceOf(HTMLDivElement);
expect(header.textContent).toBe('Connection with our best Nutrition Agent');
const subHeader = popUp.querySelector('.sub-header');
expect(subHeader).toBeInstanceOf(HTMLDivElement);
expect(subHeader.textContent).toBe('A few seconds until the chat starts');
});
});
describe('videoMarkup and imageMarkup works correctly', () => {
it('should create an iframe element with the correct attributes', () => {
// Arrange
const extractedLink = 'https://example.com/video';
// Act
const result = videoMarkup(extractedLink);
// Assert
expect(result).toBeInstanceOf(HTMLIFrameElement);
expect(result.src).toBe(`${extractedLink}?enablejsapi=1&rel=0`);
expect(result.getAttribute('allow')).toBe('fullscreen');
expect(result.id).toBe('player');
expect(result.classList.contains('media-video')).toBe(true);
});
it('should create a div element containing an img element with the correct attributes', () => {
// Arrange
const extractedLink = 'https://example.com/image.jpg';
// Act
const result = imageMarkup(extractedLink);
// Assert
expect(result).toBeInstanceOf(HTMLDivElement);
const imgElement = result.querySelector('img');
expect(imgElement).toBeInstanceOf(HTMLImageElement);
expect(imgElement.src).toBe(extractedLink);
expect(imgElement.classList.contains('media-image')).toBe(true);
expect(result.classList.contains('image-wrapper')).toBe(true);
});
});