67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
const ActionsComponent = require('~/environments/components/environment_actions');
 | 
						|
 | 
						|
describe('Actions Component', () => {
 | 
						|
  preloadFixtures('static/environments/element.html.raw');
 | 
						|
 | 
						|
  beforeEach(() => {
 | 
						|
    loadFixtures('static/environments/element.html.raw');
 | 
						|
  });
 | 
						|
 | 
						|
  it('should render a dropdown with the provided actions', () => {
 | 
						|
    const actionsMock = [
 | 
						|
      {
 | 
						|
        name: 'bar',
 | 
						|
        play_path: 'https://gitlab.com/play',
 | 
						|
      },
 | 
						|
      {
 | 
						|
        name: 'foo',
 | 
						|
        play_path: '#',
 | 
						|
      },
 | 
						|
    ];
 | 
						|
 | 
						|
    const component = new ActionsComponent({
 | 
						|
      el: document.querySelector('.test-dom-element'),
 | 
						|
      propsData: {
 | 
						|
        actions: actionsMock,
 | 
						|
        playIconSvg: '<svg></svg>',
 | 
						|
      },
 | 
						|
    });
 | 
						|
 | 
						|
    expect(
 | 
						|
      component.$el.querySelectorAll('.dropdown-menu li').length,
 | 
						|
    ).toEqual(actionsMock.length);
 | 
						|
    expect(
 | 
						|
      component.$el.querySelector('.dropdown-menu li a').getAttribute('href'),
 | 
						|
    ).toEqual(actionsMock[0].play_path);
 | 
						|
  });
 | 
						|
 | 
						|
  it('should render a dropdown with the provided svg', () => {
 | 
						|
    const actionsMock = [
 | 
						|
      {
 | 
						|
        name: 'bar',
 | 
						|
        play_path: 'https://gitlab.com/play',
 | 
						|
      },
 | 
						|
      {
 | 
						|
        name: 'foo',
 | 
						|
        play_path: '#',
 | 
						|
      },
 | 
						|
    ];
 | 
						|
 | 
						|
    const component = new ActionsComponent({
 | 
						|
      el: document.querySelector('.test-dom-element'),
 | 
						|
      propsData: {
 | 
						|
        actions: actionsMock,
 | 
						|
        playIconSvg: '<svg></svg>',
 | 
						|
      },
 | 
						|
    });
 | 
						|
 | 
						|
    expect(
 | 
						|
      component.$el.querySelector('.js-dropdown-play-icon-container').children,
 | 
						|
    ).toContain('svg');
 | 
						|
 | 
						|
    expect(
 | 
						|
      component.$el.querySelector('.js-action-play-icon-container').children,
 | 
						|
    ).toContain('svg');
 | 
						|
  });
 | 
						|
});
 |