Commit 06c7049c authored by Samantha Ming's avatar Samantha Ming

Address reviewer's comment

- apply patch
- remove validation for radio
- add disable class to submit button
parent 1080318a
...@@ -321,10 +321,7 @@ export default { ...@@ -321,10 +321,7 @@ export default {
/> />
</gl-form-group> </gl-form-group>
<gl-form-group <gl-form-group>
:state="form.fields.visibility.state"
:invalid-feedback="s__('Please select a visibility level.')"
>
<label> <label>
{{ s__('ForkProject|Visibility level') }} {{ s__('ForkProject|Visibility level') }}
<gl-link :href="visibilityHelpPath" target="_blank"> <gl-link :href="visibilityHelpPath" target="_blank">
...@@ -333,7 +330,6 @@ export default { ...@@ -333,7 +330,6 @@ export default {
</label> </label>
<gl-form-radio-group <gl-form-radio-group
v-model="form.fields.visibility.value" v-model="form.fields.visibility.value"
v-validation:[form.showValidation]
data-testid="fork-visibility-radio-group" data-testid="fork-visibility-radio-group"
name="visibility" name="visibility"
required required
...@@ -359,6 +355,7 @@ export default { ...@@ -359,6 +355,7 @@ export default {
type="submit" type="submit"
category="primary" category="primary"
variant="confirm" variant="confirm"
class="js-no-auto-disable"
data-testid="submit-button" data-testid="submit-button"
data-qa-selector="fork_project_button" data-qa-selector="fork_project_button"
:loading="isSaving" :loading="isSaving"
......
...@@ -23795,9 +23795,6 @@ msgstr "" ...@@ -23795,9 +23795,6 @@ msgstr ""
msgid "Please select a valid target branch" msgid "Please select a valid target branch"
msgstr "" msgstr ""
msgid "Please select a visibility level."
msgstr ""
msgid "Please select and add a member" msgid "Please select and add a member"
msgstr "" msgstr ""
......
import { GlFormInputGroup, GlFormInput } from '@gitlab/ui'; import { GlFormInputGroup, GlFormInput, GlForm } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils'; import { mount, shallowMount } from '@vue/test-utils';
import axios from 'axios'; import axios from 'axios';
import AxiosMockAdapter from 'axios-mock-adapter'; import AxiosMockAdapter from 'axios-mock-adapter';
import { kebabCase } from 'lodash'; import { kebabCase } from 'lodash';
...@@ -43,8 +43,8 @@ describe('ForkForm component', () => { ...@@ -43,8 +43,8 @@ describe('ForkForm component', () => {
axiosMock.onGet(DEFAULT_PROPS.endpoint).replyOnce(statusCode, data); axiosMock.onGet(DEFAULT_PROPS.endpoint).replyOnce(statusCode, data);
}; };
const createComponent = (props = {}, data = {}) => { const createComponentFactory = (mountFn) => (props = {}, data = {}) => {
wrapper = shallowMount(ForkForm, { wrapper = mountFn(ForkForm, {
provide: { provide: {
newGroupPath: 'some/groups/path', newGroupPath: 'some/groups/path',
visibilityHelpPath: 'some/visibility/help/path', visibilityHelpPath: 'some/visibility/help/path',
...@@ -65,6 +65,9 @@ describe('ForkForm component', () => { ...@@ -65,6 +65,9 @@ describe('ForkForm component', () => {
}); });
}; };
const createComponent = createComponentFactory(shallowMount);
const createFullComponent = createComponentFactory(mount);
beforeEach(() => { beforeEach(() => {
axiosMock = new AxiosMockAdapter(axios); axiosMock = new AxiosMockAdapter(axios);
window.gon = { window.gon = {
...@@ -236,7 +239,7 @@ describe('ForkForm component', () => { ...@@ -236,7 +239,7 @@ describe('ForkForm component', () => {
jest.spyOn(urlUtility, 'redirectTo').mockImplementation(); jest.spyOn(urlUtility, 'redirectTo').mockImplementation();
mockGetRequest(); mockGetRequest();
createComponent( createFullComponent(
{}, {},
{ {
namespaces: MOCK_NAMESPACES_RESPONSE, namespaces: MOCK_NAMESPACES_RESPONSE,
...@@ -247,13 +250,42 @@ describe('ForkForm component', () => { ...@@ -247,13 +250,42 @@ describe('ForkForm component', () => {
); );
}); });
const namespaceId = MOCK_NAMESPACES_RESPONSE[1].id; const selectedMockNamespaceIndex = 1;
const namespaceId = MOCK_NAMESPACES_RESPONSE[selectedMockNamespaceIndex].id;
const fillForm = async () => {
const namespaceOptions = findForkUrlInput().findAll('option');
await namespaceOptions.at(selectedMockNamespaceIndex + 1).setSelected();
};
const submitForm = async () => { const submitForm = async () => {
findForkUrlInput().vm.$emit('input', { id: namespaceId }); await fillForm();
await wrapper.vm.onSubmit(); const form = wrapper.find(GlForm);
await form.trigger('submit');
await wrapper.vm.$nextTick();
}; };
describe('with invalid form', () => {
it('does not make POST request', async () => {
jest.spyOn(axios, 'post');
expect(axios.post).not.toHaveBeenCalled();
});
it('does not redirect the current page', async () => {
await submitForm();
expect(urlUtility.redirectTo).not.toHaveBeenCalled();
});
});
describe('with valid form', () => {
beforeEach(() => {
fillForm();
});
it('make POST request with project param', async () => { it('make POST request with project param', async () => {
jest.spyOn(axios, 'post'); jest.spyOn(axios, 'post');
...@@ -302,4 +334,5 @@ describe('ForkForm component', () => { ...@@ -302,4 +334,5 @@ describe('ForkForm component', () => {
}); });
}); });
}); });
});
}); });
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