diff options
author | Phil Hughes <me@iamphill.com> | 2017-10-31 11:24:42 +0000 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2017-10-31 11:24:42 +0000 |
commit | e6a1a798f503705f12420b684c90026486d2927b (patch) | |
tree | b4abb6e7cb6e9af69625c683c0a7eed6b10dbda4 /spec/javascripts/repo | |
parent | 307883a5eb582ac203fe0777fcb11fa7d6c3ddca (diff) | |
parent | a9446093b12a9dffef97541915e2b6872875ad3f (diff) | |
download | gitlab-ce-e6a1a798f503705f12420b684c90026486d2927b.tar.gz |
Merge branch 'master' into multi-file-editor-vuex
Diffstat (limited to 'spec/javascripts/repo')
-rw-r--r-- | spec/javascripts/repo/components/new_dropdown/upload_spec.js | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/spec/javascripts/repo/components/new_dropdown/upload_spec.js b/spec/javascripts/repo/components/new_dropdown/upload_spec.js new file mode 100644 index 00000000000..31878e9d327 --- /dev/null +++ b/spec/javascripts/repo/components/new_dropdown/upload_spec.js @@ -0,0 +1,100 @@ +import Vue from 'vue'; +import upload from '~/repo/components/new_dropdown/upload.vue'; +import eventHub from '~/repo/event_hub'; +import createComponent from '../../../helpers/vue_mount_component_helper'; + +describe('new dropdown upload', () => { + let vm; + + beforeEach(() => { + const Component = Vue.extend(upload); + + vm = createComponent(Component, { + currentPath: '', + }); + }); + + afterEach(() => { + vm.$destroy(); + }); + + describe('readFile', () => { + beforeEach(() => { + spyOn(FileReader.prototype, 'readAsText'); + spyOn(FileReader.prototype, 'readAsDataURL'); + }); + + it('calls readAsText for text files', () => { + const file = { + type: 'text/html', + }; + + vm.readFile(file); + + expect(FileReader.prototype.readAsText).toHaveBeenCalledWith(file); + }); + + it('calls readAsDataURL for non-text files', () => { + const file = { + type: 'images/png', + }; + + vm.readFile(file); + + expect(FileReader.prototype.readAsDataURL).toHaveBeenCalledWith(file); + }); + }); + + describe('createFile', () => { + const target = { + result: 'content', + }; + const binaryTarget = { + result: 'base64,base64content', + }; + const file = { + name: 'file', + }; + + beforeEach(() => { + spyOn(eventHub, '$emit'); + }); + + it('emits createNewEntry event', () => { + vm.createFile(target, file, true); + + expect(eventHub.$emit).toHaveBeenCalledWith('createNewEntry', { + name: 'file', + type: 'blob', + content: 'content', + toggleModal: false, + base64: false, + }, true); + }); + + it('createNewEntry event name contains current path', () => { + vm.currentPath = 'testing'; + vm.createFile(target, file, true); + + expect(eventHub.$emit).toHaveBeenCalledWith('createNewEntry', { + name: 'testing/file', + type: 'blob', + content: 'content', + toggleModal: false, + base64: false, + }, true); + }); + + it('splits content on base64 if binary', () => { + vm.createFile(binaryTarget, file, false); + + expect(eventHub.$emit).toHaveBeenCalledWith('createNewEntry', { + name: 'file', + type: 'blob', + content: 'base64content', + toggleModal: false, + base64: true, + }, false); + }); + }); +}); |