gitlab-org--gitlab-foss/spec/javascripts/new_branch_spec.js

202 lines
6.0 KiB
JavaScript
Raw Normal View History

/* eslint-disable one-var, no-var, no-return-assign */
2016-07-24 20:45:11 +00:00
import $ from 'jquery';
2017-11-20 20:28:29 +00:00
import NewBranchForm from '~/new_branch_form';
2016-07-24 20:45:11 +00:00
2018-10-17 07:13:26 +00:00
describe('Branch', function() {
describe('create a new branch', function() {
var expectToHaveError, fillNameWith;
preloadFixtures('branches/new_branch.html.raw');
fillNameWith = function(value) {
return $('.js-branch-name')
.val(value)
.trigger('blur');
};
expectToHaveError = function(error) {
expect($('.js-branch-name-error span').text()).toEqual(error);
};
beforeEach(function() {
loadFixtures('branches/new_branch.html.raw');
$('form').on('submit', function(e) {
return e.preventDefault();
});
return (this.form = new NewBranchForm($('.js-create-branch-form'), []));
});
2018-10-17 07:13:26 +00:00
it("can't start with a dot", function() {
fillNameWith('.foo');
return expectToHaveError("can't start with '.'");
});
2018-10-17 07:13:26 +00:00
it("can't start with a slash", function() {
fillNameWith('/foo');
return expectToHaveError("can't start with '/'");
});
2018-10-17 07:13:26 +00:00
it("can't have two consecutive dots", function() {
fillNameWith('foo..bar');
return expectToHaveError("can't contain '..'");
});
2018-10-17 07:13:26 +00:00
it("can't have spaces anywhere", function() {
fillNameWith(' foo');
expectToHaveError("can't contain spaces");
fillNameWith('foo bar');
expectToHaveError("can't contain spaces");
fillNameWith('foo ');
return expectToHaveError("can't contain spaces");
});
2018-10-17 07:13:26 +00:00
it("can't have ~ anywhere", function() {
fillNameWith('~foo');
expectToHaveError("can't contain '~'");
fillNameWith('foo~bar');
expectToHaveError("can't contain '~'");
fillNameWith('foo~');
return expectToHaveError("can't contain '~'");
});
2018-10-17 07:13:26 +00:00
it("can't have tilde anwhere", function() {
fillNameWith('~foo');
expectToHaveError("can't contain '~'");
fillNameWith('foo~bar');
expectToHaveError("can't contain '~'");
fillNameWith('foo~');
return expectToHaveError("can't contain '~'");
});
2018-10-17 07:13:26 +00:00
it("can't have caret anywhere", function() {
fillNameWith('^foo');
expectToHaveError("can't contain '^'");
fillNameWith('foo^bar');
expectToHaveError("can't contain '^'");
fillNameWith('foo^');
return expectToHaveError("can't contain '^'");
});
2018-10-17 07:13:26 +00:00
it("can't have : anywhere", function() {
fillNameWith(':foo');
expectToHaveError("can't contain ':'");
fillNameWith('foo:bar');
expectToHaveError("can't contain ':'");
fillNameWith(':foo');
return expectToHaveError("can't contain ':'");
});
2018-10-17 07:13:26 +00:00
it("can't have question mark anywhere", function() {
fillNameWith('?foo');
expectToHaveError("can't contain '?'");
fillNameWith('foo?bar');
expectToHaveError("can't contain '?'");
fillNameWith('foo?');
return expectToHaveError("can't contain '?'");
});
2018-10-17 07:13:26 +00:00
it("can't have asterisk anywhere", function() {
fillNameWith('*foo');
expectToHaveError("can't contain '*'");
fillNameWith('foo*bar');
expectToHaveError("can't contain '*'");
fillNameWith('foo*');
return expectToHaveError("can't contain '*'");
});
2018-10-17 07:13:26 +00:00
it("can't have open bracket anywhere", function() {
fillNameWith('[foo');
expectToHaveError("can't contain '['");
fillNameWith('foo[bar');
expectToHaveError("can't contain '['");
fillNameWith('foo[');
return expectToHaveError("can't contain '['");
});
2018-10-17 07:13:26 +00:00
it("can't have a backslash anywhere", function() {
fillNameWith('\\foo');
expectToHaveError("can't contain '\\'");
fillNameWith('foo\\bar');
expectToHaveError("can't contain '\\'");
fillNameWith('foo\\');
return expectToHaveError("can't contain '\\'");
});
2018-10-17 07:13:26 +00:00
it("can't contain a sequence @{ anywhere", function() {
fillNameWith('@{foo');
expectToHaveError("can't contain '@{'");
fillNameWith('foo@{bar');
expectToHaveError("can't contain '@{'");
fillNameWith('foo@{');
return expectToHaveError("can't contain '@{'");
});
2018-10-17 07:13:26 +00:00
it("can't have consecutive slashes", function() {
fillNameWith('foo//bar');
return expectToHaveError("can't contain consecutive slashes");
});
2018-10-17 07:13:26 +00:00
it("can't end with a slash", function() {
fillNameWith('foo/');
return expectToHaveError("can't end in '/'");
});
2018-10-17 07:13:26 +00:00
it("can't end with a dot", function() {
fillNameWith('foo.');
return expectToHaveError("can't end in '.'");
});
2018-10-17 07:13:26 +00:00
it("can't end with .lock", function() {
fillNameWith('foo.lock');
return expectToHaveError("can't end in '.lock'");
});
2018-10-17 07:13:26 +00:00
it("can't be the single character @", function() {
fillNameWith('@');
return expectToHaveError("can't be '@'");
});
2018-10-17 07:13:26 +00:00
it('concatenates all error messages', function() {
fillNameWith('/foo bar?~.');
return expectToHaveError(
"can't start with '/', can't contain spaces, '?', '~', can't end in '.'",
);
});
2018-10-17 07:13:26 +00:00
it("doesn't duplicate error messages", function() {
fillNameWith('?foo?bar?zoo?');
return expectToHaveError("can't contain '?'");
});
2018-10-17 07:13:26 +00:00
it('removes the error message when is a valid name', function() {
fillNameWith('foo?bar');
2018-10-09 18:03:09 +00:00
2018-10-17 07:13:26 +00:00
expect($('.js-branch-name-error span').length).toEqual(1);
fillNameWith('foobar');
2018-10-09 18:03:09 +00:00
2018-10-17 07:13:26 +00:00
expect($('.js-branch-name-error span').length).toEqual(0);
});
2018-10-17 07:13:26 +00:00
it('can have dashes anywhere', function() {
fillNameWith('-foo-bar-zoo-');
2018-10-09 18:03:09 +00:00
2018-10-17 07:13:26 +00:00
expect($('.js-branch-name-error span').length).toEqual(0);
});
2018-10-17 07:13:26 +00:00
it('can have underscores anywhere', function() {
fillNameWith('_foo_bar_zoo_');
2018-10-09 18:03:09 +00:00
2018-10-17 07:13:26 +00:00
expect($('.js-branch-name-error span').length).toEqual(0);
});
2018-10-17 07:13:26 +00:00
it('can have numbers anywhere', function() {
fillNameWith('1foo2bar3zoo4');
2018-10-09 18:03:09 +00:00
2018-10-17 07:13:26 +00:00
expect($('.js-branch-name-error span').length).toEqual(0);
});
2018-10-09 18:03:09 +00:00
2018-10-17 07:13:26 +00:00
it('can be only letters', function() {
fillNameWith('foo');
2018-10-09 18:03:09 +00:00
2018-10-17 07:13:26 +00:00
expect($('.js-branch-name-error span').length).toEqual(0);
2016-07-24 20:45:11 +00:00
});
});
2018-10-17 07:13:26 +00:00
});