summaryrefslogtreecommitdiff
path: root/spec/frontend/behaviors/requires_input_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/behaviors/requires_input_spec.js')
-rw-r--r--spec/frontend/behaviors/requires_input_spec.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/spec/frontend/behaviors/requires_input_spec.js b/spec/frontend/behaviors/requires_input_spec.js
new file mode 100644
index 00000000000..617fe49b059
--- /dev/null
+++ b/spec/frontend/behaviors/requires_input_spec.js
@@ -0,0 +1,62 @@
+import $ from 'jquery';
+import '~/behaviors/requires_input';
+
+describe('requiresInput', () => {
+ let submitButton;
+ preloadFixtures('branches/new_branch.html');
+
+ beforeEach(() => {
+ loadFixtures('branches/new_branch.html');
+ submitButton = $('button[type="submit"]');
+ });
+
+ it('disables submit when any field is required', () => {
+ $('.js-requires-input').requiresInput();
+
+ expect(submitButton).toBeDisabled();
+ });
+
+ it('enables submit when no field is required', () => {
+ $('*[required=required]').prop('required', false);
+ $('.js-requires-input').requiresInput();
+
+ expect(submitButton).not.toBeDisabled();
+ });
+
+ it('enables submit when all required fields are pre-filled', () => {
+ $('*[required=required]').remove();
+ $('.js-requires-input').requiresInput();
+
+ expect($('.submit')).not.toBeDisabled();
+ });
+
+ it('enables submit when all required fields receive input', () => {
+ $('.js-requires-input').requiresInput();
+ $('#required1')
+ .val('input1')
+ .change();
+
+ expect(submitButton).toBeDisabled();
+
+ $('#optional1')
+ .val('input1')
+ .change();
+
+ expect(submitButton).toBeDisabled();
+
+ $('#required2')
+ .val('input2')
+ .change();
+ $('#required3')
+ .val('input3')
+ .change();
+ $('#required4')
+ .val('input4')
+ .change();
+ $('#required5')
+ .val('1')
+ .change();
+
+ expect($('.submit')).not.toBeDisabled();
+ });
+});