debian-mirror-gitlab/spec/frontend/new_branch_spec.js

207 lines
6.1 KiB
JavaScript
Raw Normal View History

2023-07-09 08:55:56 +05:30
import htmlBranchesNewBranch from 'test_fixtures/branches/new_branch.html';
import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures';
2018-03-17 18:26:18 +05:30
import NewBranchForm from '~/new_branch_form';
2016-09-13 17:45:13 +05:30
2020-03-13 15:44:24 +05:30
describe('Branch', () => {
let testContext;
beforeEach(() => {
testContext = {};
});
describe('create a new branch', () => {
2018-12-13 13:39:08 +05:30
function fillNameWith(value) {
2022-08-13 15:12:31 +05:30
document.querySelector('.js-branch-name').value = value;
2023-06-20 00:43:36 +05:30
const event = new CustomEvent('change');
2022-08-13 15:12:31 +05:30
document.querySelector('.js-branch-name').dispatchEvent(event);
2018-12-13 13:39:08 +05:30
}
function expectToHaveError(error) {
2022-08-13 15:12:31 +05:30
expect(document.querySelector('.js-branch-name-error').textContent).toEqual(error);
2018-12-13 13:39:08 +05:30
}
2020-03-13 15:44:24 +05:30
beforeEach(() => {
2023-07-09 08:55:56 +05:30
setHTMLFixture(htmlBranchesNewBranch);
2022-08-13 15:12:31 +05:30
document.querySelector('form').addEventListener('submit', (e) => e.preventDefault());
testContext.form = new NewBranchForm(document.querySelector('.js-create-branch-form'), []);
2018-12-13 13:39:08 +05:30
});
2022-07-16 23:28:13 +05:30
afterEach(() => {
resetHTMLFixture();
});
2020-03-13 15:44:24 +05:30
it("can't start with a dot", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('.foo');
expectToHaveError("can't start with '.'");
});
2020-03-13 15:44:24 +05:30
it("can't start with a slash", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('/foo');
expectToHaveError("can't start with '/'");
});
2020-03-13 15:44:24 +05:30
it("can't have two consecutive dots", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('foo..bar');
expectToHaveError("can't contain '..'");
});
2020-03-13 15:44:24 +05:30
it("can't have spaces anywhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith(' foo');
expectToHaveError("can't contain spaces");
fillNameWith('foo bar');
expectToHaveError("can't contain spaces");
fillNameWith('foo ');
expectToHaveError("can't contain spaces");
});
2020-03-13 15:44:24 +05:30
it("can't have ~ anywhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('~foo');
expectToHaveError("can't contain '~'");
fillNameWith('foo~bar');
expectToHaveError("can't contain '~'");
fillNameWith('foo~');
expectToHaveError("can't contain '~'");
});
2020-03-13 15:44:24 +05:30
it("can't have tilde anwhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('~foo');
expectToHaveError("can't contain '~'");
fillNameWith('foo~bar');
expectToHaveError("can't contain '~'");
fillNameWith('foo~');
expectToHaveError("can't contain '~'");
});
2020-03-13 15:44:24 +05:30
it("can't have caret anywhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('^foo');
expectToHaveError("can't contain '^'");
fillNameWith('foo^bar');
expectToHaveError("can't contain '^'");
fillNameWith('foo^');
expectToHaveError("can't contain '^'");
});
2020-03-13 15:44:24 +05:30
it("can't have : anywhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith(':foo');
expectToHaveError("can't contain ':'");
fillNameWith('foo:bar');
expectToHaveError("can't contain ':'");
fillNameWith(':foo');
expectToHaveError("can't contain ':'");
});
2020-03-13 15:44:24 +05:30
it("can't have question mark anywhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('?foo');
expectToHaveError("can't contain '?'");
fillNameWith('foo?bar');
expectToHaveError("can't contain '?'");
fillNameWith('foo?');
expectToHaveError("can't contain '?'");
});
2020-03-13 15:44:24 +05:30
it("can't have asterisk anywhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('*foo');
expectToHaveError("can't contain '*'");
fillNameWith('foo*bar');
expectToHaveError("can't contain '*'");
fillNameWith('foo*');
expectToHaveError("can't contain '*'");
});
2020-03-13 15:44:24 +05:30
it("can't have open bracket anywhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('[foo');
expectToHaveError("can't contain '['");
fillNameWith('foo[bar');
expectToHaveError("can't contain '['");
fillNameWith('foo[');
expectToHaveError("can't contain '['");
});
2020-03-13 15:44:24 +05:30
it("can't have a backslash anywhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('\\foo');
expectToHaveError("can't contain '\\'");
fillNameWith('foo\\bar');
expectToHaveError("can't contain '\\'");
fillNameWith('foo\\');
expectToHaveError("can't contain '\\'");
});
2020-03-13 15:44:24 +05:30
it("can't contain a sequence @{ anywhere", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('@{foo');
expectToHaveError("can't contain '@{'");
fillNameWith('foo@{bar');
expectToHaveError("can't contain '@{'");
fillNameWith('foo@{');
expectToHaveError("can't contain '@{'");
});
2020-03-13 15:44:24 +05:30
it("can't have consecutive slashes", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('foo//bar');
expectToHaveError("can't contain consecutive slashes");
});
2020-03-13 15:44:24 +05:30
it("can't end with a slash", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('foo/');
expectToHaveError("can't end in '/'");
});
2020-03-13 15:44:24 +05:30
it("can't end with a dot", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('foo.');
expectToHaveError("can't end in '.'");
});
2020-03-13 15:44:24 +05:30
it("can't end with .lock", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('foo.lock');
expectToHaveError("can't end in '.lock'");
});
2020-03-13 15:44:24 +05:30
it("can't be the single character @", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('@');
expectToHaveError("can't be '@'");
});
2020-03-13 15:44:24 +05:30
it('concatenates all error messages', () => {
2018-12-13 13:39:08 +05:30
fillNameWith('/foo bar?~.');
expectToHaveError("can't start with '/', can't contain spaces, '?', '~', can't end in '.'");
});
2020-03-13 15:44:24 +05:30
it("doesn't duplicate error messages", () => {
2018-12-13 13:39:08 +05:30
fillNameWith('?foo?bar?zoo?');
expectToHaveError("can't contain '?'");
});
2020-03-13 15:44:24 +05:30
it('removes the error message when is a valid name', () => {
2018-12-13 13:39:08 +05:30
fillNameWith('foo?bar');
2022-08-13 15:12:31 +05:30
expect(document.querySelector('.js-branch-name-error').textContent).not.toEqual('');
2018-12-13 13:39:08 +05:30
fillNameWith('foobar');
2022-08-13 15:12:31 +05:30
expect(document.querySelector('.js-branch-name-error').textContent).toEqual('');
2018-12-13 13:39:08 +05:30
});
2020-03-13 15:44:24 +05:30
it('can have dashes anywhere', () => {
2018-12-13 13:39:08 +05:30
fillNameWith('-foo-bar-zoo-');
2022-08-13 15:12:31 +05:30
expect(document.querySelector('.js-branch-name-error').textContent).toEqual('');
2018-12-13 13:39:08 +05:30
});
2020-03-13 15:44:24 +05:30
it('can have underscores anywhere', () => {
2018-12-13 13:39:08 +05:30
fillNameWith('_foo_bar_zoo_');
2022-08-13 15:12:31 +05:30
expect(document.querySelector('.js-branch-name-error').textContent).toEqual('');
2018-12-13 13:39:08 +05:30
});
2020-03-13 15:44:24 +05:30
it('can have numbers anywhere', () => {
2018-12-13 13:39:08 +05:30
fillNameWith('1foo2bar3zoo4');
2022-08-13 15:12:31 +05:30
expect(document.querySelector('.js-branch-name-error').textContent).toEqual('');
2018-12-13 13:39:08 +05:30
});
2020-03-13 15:44:24 +05:30
it('can be only letters', () => {
2018-12-13 13:39:08 +05:30
fillNameWith('foo');
2022-08-13 15:12:31 +05:30
expect(document.querySelector('.js-branch-name-error').textContent).toEqual('');
2016-09-13 17:45:13 +05:30
});
});
2018-12-13 13:39:08 +05:30
});