diff --git a/app/assets/javascripts/projects/commit/components/branches_dropdown.vue b/app/assets/javascripts/projects/commit/components/branches_dropdown.vue index 52da8aaba4d8413bc9a49202e73af567a83ab2e4..a037e721677f20735764535c3e08717902326170 100644 --- a/app/assets/javascripts/projects/commit/components/branches_dropdown.vue +++ b/app/assets/javascripts/projects/commit/components/branches_dropdown.vue @@ -28,6 +28,11 @@ export default { required: false, default: '', }, + blanked: { + type: Boolean, + required: false, + default: false, + }, }, i18n: { noResultsMessage: I18N_NO_RESULTS_MESSAGE, @@ -36,7 +41,7 @@ export default { }, data() { return { - searchTerm: this.value, + searchTerm: this.blanked ? '' : this.value, }; }, computed: { diff --git a/app/assets/javascripts/projects/commit/components/form_modal.vue b/app/assets/javascripts/projects/commit/components/form_modal.vue index d9aaa574fecab23a91528e46b251458da818a8e9..1febe8ceaabb2de25bc9ed086d8cea5687d02fb8 100644 --- a/app/assets/javascripts/projects/commit/components/form_modal.vue +++ b/app/assets/javascripts/projects/commit/components/form_modal.vue @@ -41,6 +41,11 @@ export default { required: false, default: false, }, + isRevert: { + type: Boolean, + required: false, + default: false, + }, primaryActionEventName: { type: String, required: false, @@ -150,7 +155,12 @@ export default { > - + { let store; const spyFetchBranches = jest.fn(); - const createComponent = (term, state = { isFetching: false }) => { + const createComponent = (props, state = { isFetching: false }) => { store = new Vuex.Store({ getters: { joinedBranches: () => ['_main_', '_branch_1_', '_branch_2_'], @@ -28,7 +28,8 @@ describe('BranchesDropdown', () => { shallowMount(BranchesDropdown, { store, propsData: { - value: term, + value: props.value, + blanked: props.blanked || false, }, }), ); @@ -48,23 +49,40 @@ describe('BranchesDropdown', () => { describe('On mount', () => { beforeEach(() => { - createComponent(''); + createComponent({ value: '' }); }); it('invokes fetchBranches', () => { expect(spyFetchBranches).toHaveBeenCalled(); }); + + describe('with a value but visually blanked', () => { + beforeEach(() => { + createComponent({ value: '_main_', blanked: true }, { branch: '_main_' }); + }); + + it('renders all branches', () => { + expect(findAllDropdownItems()).toHaveLength(3); + expect(findDropdownItemByIndex(0).text()).toBe('_main_'); + expect(findDropdownItemByIndex(1).text()).toBe('_branch_1_'); + expect(findDropdownItemByIndex(2).text()).toBe('_branch_2_'); + }); + + it('selects the active branch', () => { + expect(wrapper.vm.isSelected('_main_')).toBe(true); + }); + }); }); describe('Loading states', () => { it('shows loading icon while fetching', () => { - createComponent('', { isFetching: true }); + createComponent({ value: '' }, { isFetching: true }); expect(findLoading().isVisible()).toBe(true); }); it('does not show loading icon', () => { - createComponent(''); + createComponent({ value: '' }); expect(findLoading().isVisible()).toBe(false); }); @@ -72,7 +90,7 @@ describe('BranchesDropdown', () => { describe('No branches found', () => { beforeEach(() => { - createComponent('_non_existent_branch_'); + createComponent({ value: '_non_existent_branch_' }); }); it('renders empty results message', () => { @@ -90,7 +108,7 @@ describe('BranchesDropdown', () => { describe('Search term is empty', () => { beforeEach(() => { - createComponent(''); + createComponent({ value: '' }); }); it('renders all branches when search term is empty', () => { @@ -107,7 +125,7 @@ describe('BranchesDropdown', () => { describe('When searching', () => { beforeEach(() => { - createComponent(''); + createComponent({ value: '' }); }); it('invokes fetchBranches', async () => { @@ -124,7 +142,7 @@ describe('BranchesDropdown', () => { describe('Branches found', () => { beforeEach(() => { - createComponent('_branch_1_', { branch: '_branch_1_' }); + createComponent({ value: '_branch_1_' }, { branch: '_branch_1_' }); }); it('renders only the branch searched for', () => { @@ -156,7 +174,7 @@ describe('BranchesDropdown', () => { describe('Case insensitive for search term', () => { beforeEach(() => { - createComponent('_BrAnCh_1_'); + createComponent({ value: '_BrAnCh_1_' }); }); it('renders only the branch searched for', () => {