Commit 6b466e38 authored by Luke Bennett's avatar Luke Bennett

Fix bug causing repo mirror settings UI to break

Fixes an exception relating to the new project
cleanup settings in 11.6 that causes the mirror
repo settings UI to become unusable.
parent 1d2ef4c6
export default (buttonSelector, fileSelector) => { export default (buttonSelector, fileSelector) => {
const btn = document.querySelector(buttonSelector); const btn = document.querySelector(buttonSelector);
const fileInput = document.querySelector(fileSelector); const fileInput = document.querySelector(fileSelector);
if (!btn || !fileInput) return;
const form = btn.closest('form'); const form = btn.closest('form');
btn.addEventListener('click', () => { btn.addEventListener('click', () => {
......
---
title: Fix bug causing repository mirror settings UI to break
merge_request: 23712
author:
type: fixed
...@@ -9,28 +9,56 @@ describe('File upload', () => { ...@@ -9,28 +9,56 @@ describe('File upload', () => {
<span class="js-filename"></span> <span class="js-filename"></span>
</form> </form>
`); `);
});
describe('when there is a matching button and input', () => {
beforeEach(() => {
fileUpload('.js-button', '.js-input');
});
it('clicks file input after clicking button', () => {
const btn = document.querySelector('.js-button');
const input = document.querySelector('.js-input');
spyOn(input, 'click');
btn.click();
expect(input.click).toHaveBeenCalled();
});
it('updates file name text', () => {
const input = document.querySelector('.js-input');
fileUpload('.js-button', '.js-input'); input.value = 'path/to/file/index.js';
input.dispatchEvent(new CustomEvent('change'));
expect(document.querySelector('.js-filename').textContent).toEqual('index.js');
});
}); });
it('clicks file input after clicking button', () => { it('fails gracefully when there is no matching button', () => {
const btn = document.querySelector('.js-button');
const input = document.querySelector('.js-input'); const input = document.querySelector('.js-input');
const btn = document.querySelector('.js-button');
fileUpload('.js-not-button', '.js-input');
spyOn(input, 'click'); spyOn(input, 'click');
btn.click(); btn.click();
expect(input.click).toHaveBeenCalled(); expect(input.click).not.toHaveBeenCalled();
}); });
it('updates file name text', () => { it('fails gracefully when there is no matching input', () => {
const input = document.querySelector('.js-input'); const input = document.querySelector('.js-input');
const btn = document.querySelector('.js-button');
fileUpload('.js-button', '.js-not-input');
input.value = 'path/to/file/index.js'; spyOn(input, 'click');
input.dispatchEvent(new CustomEvent('change')); btn.click();
expect(document.querySelector('.js-filename').textContent).toEqual('index.js'); expect(input.click).not.toHaveBeenCalled();
}); });
}); });
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment