168 lines
6.4 KiB
JavaScript
168 lines
6.4 KiB
JavaScript
/* eslint-disable space-before-function-paren, one-var, no-var, one-var-declaration-per-line, no-return-assign, quotes, max-len */
|
|
/* global NewBranchForm */
|
|
|
|
import '~/new_branch_form';
|
|
|
|
(function() {
|
|
describe('Branch', function() {
|
|
return 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) {
|
|
return 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'), []);
|
|
});
|
|
it("can't start with a dot", function() {
|
|
fillNameWith('.foo');
|
|
return expectToHaveError("can't start with '.'");
|
|
});
|
|
it("can't start with a slash", function() {
|
|
fillNameWith('/foo');
|
|
return expectToHaveError("can't start with '/'");
|
|
});
|
|
it("can't have two consecutive dots", function() {
|
|
fillNameWith('foo..bar');
|
|
return expectToHaveError("can't contain '..'");
|
|
});
|
|
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");
|
|
});
|
|
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 '~'");
|
|
});
|
|
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 '~'");
|
|
});
|
|
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 '^'");
|
|
});
|
|
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 ':'");
|
|
});
|
|
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 '?'");
|
|
});
|
|
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 '*'");
|
|
});
|
|
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 '['");
|
|
});
|
|
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 '\\'");
|
|
});
|
|
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 '@{'");
|
|
});
|
|
it("can't have consecutive slashes", function() {
|
|
fillNameWith('foo//bar');
|
|
return expectToHaveError("can't contain consecutive slashes");
|
|
});
|
|
it("can't end with a slash", function() {
|
|
fillNameWith('foo/');
|
|
return expectToHaveError("can't end in '/'");
|
|
});
|
|
it("can't end with a dot", function() {
|
|
fillNameWith('foo.');
|
|
return expectToHaveError("can't end in '.'");
|
|
});
|
|
it("can't end with .lock", function() {
|
|
fillNameWith('foo.lock');
|
|
return expectToHaveError("can't end in '.lock'");
|
|
});
|
|
it("can't be the single character @", function() {
|
|
fillNameWith('@');
|
|
return expectToHaveError("can't be '@'");
|
|
});
|
|
it("concatenates all error messages", function() {
|
|
fillNameWith('/foo bar?~.');
|
|
return expectToHaveError("can't start with '/', can't contain spaces, '?', '~', can't end in '.'");
|
|
});
|
|
it("doesn't duplicate error messages", function() {
|
|
fillNameWith('?foo?bar?zoo?');
|
|
return expectToHaveError("can't contain '?'");
|
|
});
|
|
it("removes the error message when is a valid name", function() {
|
|
fillNameWith('foo?bar');
|
|
expect($('.js-branch-name-error span').length).toEqual(1);
|
|
fillNameWith('foobar');
|
|
return expect($('.js-branch-name-error span').length).toEqual(0);
|
|
});
|
|
it("can have dashes anywhere", function() {
|
|
fillNameWith('-foo-bar-zoo-');
|
|
return expect($('.js-branch-name-error span').length).toEqual(0);
|
|
});
|
|
it("can have underscores anywhere", function() {
|
|
fillNameWith('_foo_bar_zoo_');
|
|
return expect($('.js-branch-name-error span').length).toEqual(0);
|
|
});
|
|
it("can have numbers anywhere", function() {
|
|
fillNameWith('1foo2bar3zoo4');
|
|
return expect($('.js-branch-name-error span').length).toEqual(0);
|
|
});
|
|
return it("can be only letters", function() {
|
|
fillNameWith('foo');
|
|
return expect($('.js-branch-name-error span').length).toEqual(0);
|
|
});
|
|
});
|
|
});
|
|
}).call(window);
|