summaryrefslogtreecommitdiff
path: root/spec/javascripts/repo/components/new_dropdown/modal_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/javascripts/repo/components/new_dropdown/modal_spec.js')
-rw-r--r--spec/javascripts/repo/components/new_dropdown/modal_spec.js154
1 files changed, 17 insertions, 137 deletions
diff --git a/spec/javascripts/repo/components/new_dropdown/modal_spec.js b/spec/javascripts/repo/components/new_dropdown/modal_spec.js
index 671dca93a09..4c5cdc47c6e 100644
--- a/spec/javascripts/repo/components/new_dropdown/modal_spec.js
+++ b/spec/javascripts/repo/components/new_dropdown/modal_spec.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
import RepoStore from '~/repo/stores/repo_store';
-import RepoHelper from '~/repo/helpers/repo_helper';
import modal from '~/repo/components/new_dropdown/modal.vue';
+import eventHub from '~/repo/event_hub';
import createComponent from '../../../helpers/vue_mount_component_helper';
describe('new file modal component', () => {
@@ -21,6 +21,7 @@ describe('new file modal component', () => {
beforeEach(() => {
vm = createComponent(Component, {
type,
+ currentPath: RepoStore.path,
});
});
@@ -41,156 +42,35 @@ describe('new file modal component', () => {
expect(vm.$el.querySelector('.label-light').textContent.trim()).toBe(`${title} name`);
});
-
- it('emits toggle event after creating file', () => {
- spyOn(vm, '$emit');
-
- vm.entryName = 'testing';
- vm.$el.querySelector('.btn-success').click();
-
- expect(vm.$emit).toHaveBeenCalledWith('toggle');
- });
-
- it('sets editMode to true', () => {
- vm.entryName = 'testing';
- vm.$el.querySelector('.btn-success').click();
-
- expect(RepoStore.editMode).toBeTruthy();
- });
-
- it('toggles blob view', () => {
- vm.entryName = 'testing';
- vm.$el.querySelector('.btn-success').click();
-
- expect(RepoStore.isPreviewView()).toBeFalsy();
- });
-
- it('adds file into activeFiles', () => {
- vm.entryName = 'testing';
- vm.$el.querySelector('.btn-success').click();
-
- expect(RepoStore.openedFiles.length).toBe(1);
- });
-
- it(`creates ${type} in the current stores path`, () => {
- RepoStore.path = 'testing';
- vm.entryName = 'testing/app';
-
- vm.$el.querySelector('.btn-success').click();
-
- expect(RepoStore.files[0].path).toBe('testing/app');
- expect(RepoStore.files[0].name).toBe('app');
-
- if (type === 'tree') {
- expect(RepoStore.files[0].files.length).toBe(1);
- }
-
- RepoStore.path = '';
- });
});
});
- describe('file', () => {
- beforeEach(() => {
- vm = createComponent(Component, {
- type: 'blob',
- });
- });
-
- it('creates new file', () => {
- vm.entryName = 'testing';
- vm.$el.querySelector('.btn-success').click();
-
- expect(RepoStore.files.length).toBe(1);
- expect(RepoStore.files[0].name).toBe('testing');
- expect(RepoStore.files[0].type).toBe('blob');
- expect(RepoStore.files[0].tempFile).toBeTruthy();
- });
+ it('focuses field on mount', () => {
+ document.body.innerHTML += '<div class="js-test"></div>';
- it('does not create temp file when file already exists', () => {
- RepoStore.files.push(RepoHelper.serializeRepoEntity('blob', {
- name: 'testing',
- }));
+ vm = createComponent(Component, {
+ type: 'tree',
+ currentPath: RepoStore.path,
+ }, '.js-test');
- vm.entryName = 'testing';
- vm.$el.querySelector('.btn-success').click();
+ expect(document.activeElement).toBe(vm.$refs.fieldName);
- expect(RepoStore.files.length).toBe(1);
- expect(RepoStore.files[0].name).toBe('testing');
- expect(RepoStore.files[0].type).toBe('blob');
- expect(RepoStore.files[0].tempFile).toBeUndefined();
- });
+ vm.$el.remove();
});
- describe('tree', () => {
- beforeEach(() => {
+ describe('createEntryInStore', () => {
+ it('emits createNewEntry event', () => {
+ spyOn(eventHub, '$emit');
+
vm = createComponent(Component, {
type: 'tree',
+ currentPath: RepoStore.path,
});
- });
-
- it('creates new tree', () => {
vm.entryName = 'testing';
- vm.$el.querySelector('.btn-success').click();
-
- expect(RepoStore.files.length).toBe(1);
- expect(RepoStore.files[0].name).toBe('testing');
- expect(RepoStore.files[0].type).toBe('tree');
- expect(RepoStore.files[0].tempFile).toBeTruthy();
- expect(RepoStore.files[0].files.length).toBe(1);
- expect(RepoStore.files[0].files[0].name).toBe('.gitkeep');
- });
- it('creates multiple trees when entryName has slashes', () => {
- vm.entryName = 'app/test';
- vm.$el.querySelector('.btn-success').click();
+ vm.createEntryInStore();
- expect(RepoStore.files.length).toBe(1);
- expect(RepoStore.files[0].name).toBe('app');
- expect(RepoStore.files[0].files[0].name).toBe('test');
- expect(RepoStore.files[0].files[0].files[0].name).toBe('.gitkeep');
+ expect(eventHub.$emit).toHaveBeenCalledWith('createNewEntry', 'testing', 'tree');
});
-
- it('creates tree in existing tree', () => {
- RepoStore.files.push(RepoHelper.serializeRepoEntity('tree', {
- name: 'app',
- }));
-
- vm.entryName = 'app/test';
- vm.$el.querySelector('.btn-success').click();
-
- expect(RepoStore.files.length).toBe(1);
- expect(RepoStore.files[0].name).toBe('app');
- expect(RepoStore.files[0].tempFile).toBeUndefined();
- expect(RepoStore.files[0].files[0].tempFile).toBeTruthy();
- expect(RepoStore.files[0].files[0].name).toBe('test');
- expect(RepoStore.files[0].files[0].files[0].name).toBe('.gitkeep');
- });
-
- it('does not create new tree when already exists', () => {
- RepoStore.files.push(RepoHelper.serializeRepoEntity('tree', {
- name: 'app',
- }));
-
- vm.entryName = 'app';
- vm.$el.querySelector('.btn-success').click();
-
- expect(RepoStore.files.length).toBe(1);
- expect(RepoStore.files[0].name).toBe('app');
- expect(RepoStore.files[0].tempFile).toBeUndefined();
- expect(RepoStore.files[0].files.length).toBe(0);
- });
- });
-
- it('focuses field on mount', () => {
- document.body.innerHTML += '<div class="js-test"></div>';
-
- vm = createComponent(Component, {
- type: 'tree',
- }, '.js-test');
-
- expect(document.activeElement).toBe(vm.$refs.fieldName);
-
- vm.$el.remove();
});
});