summaryrefslogtreecommitdiff
path: root/spec/javascripts/new_branch_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/javascripts/new_branch_spec.js')
-rw-r--r--spec/javascripts/new_branch_spec.js170
1 files changed, 170 insertions, 0 deletions
diff --git a/spec/javascripts/new_branch_spec.js b/spec/javascripts/new_branch_spec.js
new file mode 100644
index 00000000000..25d3f5b6c04
--- /dev/null
+++ b/spec/javascripts/new_branch_spec.js
@@ -0,0 +1,170 @@
+
+/*= require jquery-ui/autocomplete */
+
+
+/*= require new_branch_form */
+
+(function() {
+ describe('Branch', function() {
+ return describe('create a new branch', function() {
+ var expectToHaveError, fillNameWith;
+ fixture.preload('new_branch.html');
+ 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() {
+ fixture.load('new_branch.html');
+ $('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(this);