71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
import snippetEmbed from '~/snippet/snippet_embed';
 | 
						|
import { loadHTMLFixture } from './helpers/fixtures';
 | 
						|
 | 
						|
describe('Snippets', () => {
 | 
						|
  let embedBtn;
 | 
						|
  let snippetUrlArea;
 | 
						|
  let shareBtn;
 | 
						|
  let scriptTag;
 | 
						|
 | 
						|
  const snippetUrl = 'http://test.host/snippets/1';
 | 
						|
 | 
						|
  beforeEach(() => {
 | 
						|
    loadHTMLFixture('snippets/show.html');
 | 
						|
 | 
						|
    embedBtn = document.querySelector('.js-embed-btn');
 | 
						|
    snippetUrlArea = document.querySelector('.js-snippet-url-area');
 | 
						|
    shareBtn = document.querySelector('.js-share-btn');
 | 
						|
  });
 | 
						|
 | 
						|
  it('selects the fields content when it is clicked', () => {
 | 
						|
    jest.spyOn(snippetUrlArea, 'select');
 | 
						|
    snippetEmbed();
 | 
						|
 | 
						|
    expect(snippetUrlArea.select).not.toHaveBeenCalled();
 | 
						|
    snippetUrlArea.dispatchEvent(new Event('click'));
 | 
						|
    expect(snippetUrlArea.select).toHaveBeenCalled();
 | 
						|
  });
 | 
						|
 | 
						|
  describe('when the snippet url does not include params', () => {
 | 
						|
    beforeEach(() => {
 | 
						|
      snippetEmbed();
 | 
						|
 | 
						|
      scriptTag = `<script src="${snippetUrl}.js"></script>`;
 | 
						|
    });
 | 
						|
 | 
						|
    it('shows the script tag as default', () => {
 | 
						|
      expect(snippetUrlArea.value).toEqual(scriptTag);
 | 
						|
    });
 | 
						|
 | 
						|
    it('sets the proper url depending on the button clicked', () => {
 | 
						|
      shareBtn.dispatchEvent(new Event('click'));
 | 
						|
      expect(snippetUrlArea.value).toEqual(snippetUrl);
 | 
						|
 | 
						|
      embedBtn.dispatchEvent(new Event('click'));
 | 
						|
      expect(snippetUrlArea.value).toEqual(scriptTag);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe('when the snippet url includes params', () => {
 | 
						|
    beforeEach(() => {
 | 
						|
      scriptTag = `<script src="${snippetUrl}.js?foo=bar"></script>`;
 | 
						|
      snippetUrlArea.value = scriptTag;
 | 
						|
      snippetUrlArea.dataset.url = `${snippetUrl}?foo=bar`;
 | 
						|
 | 
						|
      snippetEmbed();
 | 
						|
    });
 | 
						|
 | 
						|
    it('shows the script tag as default', () => {
 | 
						|
      expect(snippetUrlArea.value).toEqual(scriptTag);
 | 
						|
    });
 | 
						|
 | 
						|
    it('sets the proper url depending on the button clicked', () => {
 | 
						|
      shareBtn.dispatchEvent(new Event('click'));
 | 
						|
      expect(snippetUrlArea.value).toEqual(`${snippetUrl}?foo=bar`);
 | 
						|
 | 
						|
      embedBtn.dispatchEvent(new Event('click'));
 | 
						|
      expect(snippetUrlArea.value).toEqual(scriptTag);
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |