83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import { mount } from '@vue/test-utils';
 | |
| import { GlButtonGroup, GlButton } from '@gitlab/ui';
 | |
| import BlobHeaderActions from '~/blob/components/blob_header_default_actions.vue';
 | |
| import {
 | |
|   BTN_COPY_CONTENTS_TITLE,
 | |
|   BTN_DOWNLOAD_TITLE,
 | |
|   BTN_RAW_TITLE,
 | |
|   RICH_BLOB_VIEWER,
 | |
| } from '~/blob/components/constants';
 | |
| import { Blob } from './mock_data';
 | |
| 
 | |
| describe('Blob Header Default Actions', () => {
 | |
|   let wrapper;
 | |
|   let btnGroup;
 | |
|   let buttons;
 | |
| 
 | |
|   const blobHash = 'foo-bar';
 | |
| 
 | |
|   function createComponent(propsData = {}) {
 | |
|     wrapper = mount(BlobHeaderActions, {
 | |
|       provide: {
 | |
|         blobHash,
 | |
|       },
 | |
|       propsData: {
 | |
|         rawPath: Blob.rawPath,
 | |
|         ...propsData,
 | |
|       },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   beforeEach(() => {
 | |
|     createComponent();
 | |
|     btnGroup = wrapper.find(GlButtonGroup);
 | |
|     buttons = wrapper.findAll(GlButton);
 | |
|   });
 | |
| 
 | |
|   afterEach(() => {
 | |
|     wrapper.destroy();
 | |
|   });
 | |
| 
 | |
|   describe('renders', () => {
 | |
|     it('gl-button-group component', () => {
 | |
|       expect(btnGroup.exists()).toBe(true);
 | |
|     });
 | |
| 
 | |
|     it('exactly 3 buttons with predefined actions', () => {
 | |
|       expect(buttons.length).toBe(3);
 | |
|       [BTN_COPY_CONTENTS_TITLE, BTN_RAW_TITLE, BTN_DOWNLOAD_TITLE].forEach((title, i) => {
 | |
|         expect(buttons.at(i).vm.$el.title).toBe(title);
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     it('correct href attribute on RAW button', () => {
 | |
|       expect(buttons.at(1).attributes('href')).toBe(Blob.rawPath);
 | |
|     });
 | |
| 
 | |
|     it('correct href attribute on Download button', () => {
 | |
|       expect(buttons.at(2).attributes('href')).toBe(`${Blob.rawPath}?inline=false`);
 | |
|     });
 | |
| 
 | |
|     it('does not render "Copy file contents" button as disables if the viewer is Simple', () => {
 | |
|       expect(buttons.at(0).attributes('disabled')).toBeUndefined();
 | |
|     });
 | |
| 
 | |
|     it('renders "Copy file contents" button as disables if the viewer is Rich', () => {
 | |
|       createComponent({
 | |
|         activeViewer: RICH_BLOB_VIEWER,
 | |
|       });
 | |
|       buttons = wrapper.findAll(GlButton);
 | |
| 
 | |
|       expect(buttons.at(0).attributes('disabled')).toBeTruthy();
 | |
|     });
 | |
| 
 | |
|     it('does not render the copy button if a rendering error is set', () => {
 | |
|       createComponent({
 | |
|         hasRenderError: true,
 | |
|       });
 | |
| 
 | |
|       expect(wrapper.find('[data-testid="copyContentsButton"]').exists()).toBe(false);
 | |
|     });
 | |
|   });
 | |
| });
 |