5fcbe12730
* master: (83 commits) Fix small typo on new branch button spec Abillity to promote project labels to group labels Update and pin the `jwt` gem to ~> 1.5.6 refactor merge request build service Update index.md Clarify that Auto Deploy requires a public project. cop for gem fetched from a git source Add CHANGELOG entry Remove new branch button for confidential issues Remove flash warning from login page add complete changelog Add project ID index to `project_authorizations` table to optimize queries Fix disable storing of sensitive information when importing a new repo Fix notification when global=disabled, group=watch Ensure rake is called within the correct bundle context Fix 8.16.0 release date. Improve search within group logic Add changelog item about new attributes in group api Update group api doc with full_name and full_path attributes Add tests for nested groups in search service and search helper ...
123 lines
4 KiB
JavaScript
123 lines
4 KiB
JavaScript
/* global autosize */
|
|
|
|
window.autosize = require('vendor/autosize');
|
|
require('~/gl_form');
|
|
require('~/lib/utils/text_utility');
|
|
require('~/lib/utils/common_utils');
|
|
|
|
describe('GLForm', () => {
|
|
const global = window.gl || (window.gl = {});
|
|
const GLForm = global.GLForm;
|
|
|
|
it('should be defined in the global scope', () => {
|
|
expect(GLForm).toBeDefined();
|
|
});
|
|
|
|
describe('when instantiated', function () {
|
|
beforeEach((done) => {
|
|
this.form = $('<form class="gfm-form"><textarea class="js-gfm-input"></form>');
|
|
this.textarea = this.form.find('textarea');
|
|
spyOn($.prototype, 'off').and.returnValue(this.textarea);
|
|
spyOn($.prototype, 'on').and.returnValue(this.textarea);
|
|
spyOn($.prototype, 'css');
|
|
spyOn(window, 'autosize');
|
|
|
|
this.glForm = new GLForm(this.form);
|
|
setTimeout(() => {
|
|
$.prototype.off.calls.reset();
|
|
$.prototype.on.calls.reset();
|
|
$.prototype.css.calls.reset();
|
|
autosize.calls.reset();
|
|
done();
|
|
});
|
|
});
|
|
|
|
describe('.setupAutosize', () => {
|
|
beforeEach((done) => {
|
|
this.glForm.setupAutosize();
|
|
setTimeout(() => {
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should register an autosize event handler on the textarea', () => {
|
|
expect($.prototype.off).toHaveBeenCalledWith('autosize:resized');
|
|
expect($.prototype.on).toHaveBeenCalledWith('autosize:resized', jasmine.any(Function));
|
|
});
|
|
|
|
it('should register a mouseup event handler on the textarea', () => {
|
|
expect($.prototype.off).toHaveBeenCalledWith('mouseup.autosize');
|
|
expect($.prototype.on).toHaveBeenCalledWith('mouseup.autosize', jasmine.any(Function));
|
|
});
|
|
|
|
it('should autosize the textarea', () => {
|
|
expect(autosize).toHaveBeenCalledWith(jasmine.any(Object));
|
|
});
|
|
|
|
it('should set the resize css property to vertical', () => {
|
|
expect($.prototype.css).toHaveBeenCalledWith('resize', 'vertical');
|
|
});
|
|
});
|
|
|
|
describe('.setHeightData', () => {
|
|
beforeEach(() => {
|
|
spyOn($.prototype, 'data');
|
|
spyOn($.prototype, 'outerHeight').and.returnValue(200);
|
|
this.glForm.setHeightData();
|
|
});
|
|
|
|
it('should set the height data attribute', () => {
|
|
expect($.prototype.data).toHaveBeenCalledWith('height', 200);
|
|
});
|
|
|
|
it('should call outerHeight', () => {
|
|
expect($.prototype.outerHeight).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
describe('.destroyAutosize', () => {
|
|
describe('when called', () => {
|
|
beforeEach(() => {
|
|
spyOn($.prototype, 'data');
|
|
spyOn($.prototype, 'outerHeight').and.returnValue(200);
|
|
spyOn(window, 'outerHeight').and.returnValue(400);
|
|
spyOn(autosize, 'destroy');
|
|
|
|
this.glForm.destroyAutosize();
|
|
});
|
|
|
|
it('should call outerHeight', () => {
|
|
expect($.prototype.outerHeight).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should get data-height attribute', () => {
|
|
expect($.prototype.data).toHaveBeenCalledWith('height');
|
|
});
|
|
|
|
it('should call autosize destroy', () => {
|
|
expect(autosize.destroy).toHaveBeenCalledWith(this.textarea);
|
|
});
|
|
|
|
it('should set the data-height attribute', () => {
|
|
expect($.prototype.data).toHaveBeenCalledWith('height', 200);
|
|
});
|
|
|
|
it('should set the outerHeight', () => {
|
|
expect($.prototype.outerHeight).toHaveBeenCalledWith(200);
|
|
});
|
|
|
|
it('should set the css', () => {
|
|
expect($.prototype.css).toHaveBeenCalledWith('max-height', window.outerHeight);
|
|
});
|
|
});
|
|
|
|
it('should return undefined if the data-height equals the outerHeight', () => {
|
|
spyOn($.prototype, 'outerHeight').and.returnValue(200);
|
|
spyOn($.prototype, 'data').and.returnValue(200);
|
|
spyOn(autosize, 'destroy');
|
|
expect(this.glForm.destroyAutosize()).toBeUndefined();
|
|
expect(autosize.destroy).not.toHaveBeenCalled();
|
|
});
|
|
});
|
|
});
|
|
});
|