#= require jquery-ui/autocomplete #= require new_branch_form describe 'Branch', -> describe 'create a new branch', -> fixture.preload('new_branch.html') fillNameWith = (value) -> $('.js-branch-name').val(value).trigger('blur') expectToHaveError = (error) -> expect($('.js-branch-name-error span').text()).toEqual(error) beforeEach -> fixture.load('new_branch.html') $('form').on 'submit', (e) -> e.preventDefault() @form = new NewBranchForm($('.js-create-branch-form'), []) it "can't start with a dot", -> fillNameWith '.foo' expectToHaveError "can't start with '.'" it "can't start with a slash", -> fillNameWith '/foo' expectToHaveError "can't start with '/'" it "can't have two consecutive dots", -> fillNameWith 'foo..bar' expectToHaveError "can't contain '..'" it "can't have spaces anywhere", -> fillNameWith ' foo' expectToHaveError "can't contain spaces" fillNameWith 'foo bar' expectToHaveError "can't contain spaces" fillNameWith 'foo ' expectToHaveError "can't contain spaces" it "can't have ~ anywhere", -> fillNameWith '~foo' expectToHaveError "can't contain '~'" fillNameWith 'foo~bar' expectToHaveError "can't contain '~'" fillNameWith 'foo~' expectToHaveError "can't contain '~'" it "can't have tilde anwhere", -> fillNameWith '~foo' expectToHaveError "can't contain '~'" fillNameWith 'foo~bar' expectToHaveError "can't contain '~'" fillNameWith 'foo~' expectToHaveError "can't contain '~'" it "can't have caret anywhere", -> fillNameWith '^foo' expectToHaveError "can't contain '^'" fillNameWith 'foo^bar' expectToHaveError "can't contain '^'" fillNameWith 'foo^' expectToHaveError "can't contain '^'" it "can't have : anywhere", -> fillNameWith ':foo' expectToHaveError "can't contain ':'" fillNameWith 'foo:bar' expectToHaveError "can't contain ':'" fillNameWith ':foo' expectToHaveError "can't contain ':'" it "can't have question mark anywhere", -> fillNameWith '?foo' expectToHaveError "can't contain '?'" fillNameWith 'foo?bar' expectToHaveError "can't contain '?'" fillNameWith 'foo?' expectToHaveError "can't contain '?'" it "can't have asterisk anywhere", -> fillNameWith '*foo' expectToHaveError "can't contain '*'" fillNameWith 'foo*bar' expectToHaveError "can't contain '*'" fillNameWith 'foo*' expectToHaveError "can't contain '*'" it "can't have open bracket anywhere", -> fillNameWith '[foo' expectToHaveError "can't contain '['" fillNameWith 'foo[bar' expectToHaveError "can't contain '['" fillNameWith 'foo[' expectToHaveError "can't contain '['" it "can't have a backslash anywhere", -> fillNameWith '\\foo' expectToHaveError "can't contain '\\'" fillNameWith 'foo\\bar' expectToHaveError "can't contain '\\'" fillNameWith 'foo\\' expectToHaveError "can't contain '\\'" it "can't contain a sequence @{ anywhere", -> fillNameWith '@{foo' expectToHaveError "can't contain '@{'" fillNameWith 'foo@{bar' expectToHaveError "can't contain '@{'" fillNameWith 'foo@{' expectToHaveError "can't contain '@{'" it "can't have consecutive slashes", -> fillNameWith 'foo//bar' expectToHaveError "can't contain consecutive slashes" it "can't end with a slash", -> fillNameWith 'foo/' expectToHaveError "can't end in '/'" it "can't end with a dot", -> fillNameWith 'foo.' expectToHaveError "can't end in '.'" it "can't end with .lock", -> fillNameWith 'foo.lock' expectToHaveError "can't end in '.lock'" it "can't be the single character @", -> fillNameWith '@' expectToHaveError "can't be '@'" it "concatenates all error messages", -> fillNameWith '/foo bar?~.' expectToHaveError "can't start with '/', can't contain spaces, '?', '~', can't end in '.'" it "doesn't duplicate error messages", -> fillNameWith '?foo?bar?zoo?' expectToHaveError "can't contain '?'" it "removes the error message when is a valid name", -> fillNameWith 'foo?bar' expect($('.js-branch-name-error span').length).toEqual(1) fillNameWith 'foobar' expect($('.js-branch-name-error span').length).toEqual(0) it "can have dashes anywhere", -> fillNameWith '-foo-bar-zoo-' expect($('.js-branch-name-error span').length).toEqual(0) it "can have underscores anywhere", -> fillNameWith '_foo_bar_zoo_' expect($('.js-branch-name-error span').length).toEqual(0) it "can have numbers anywhere", -> fillNameWith '1foo2bar3zoo4' expect($('.js-branch-name-error span').length).toEqual(0) it "can be only letters", -> fillNameWith 'foo' expect($('.js-branch-name-error span').length).toEqual(0)