Merge branch '26226-generate-all-haml-fixtures-within-teaspoon-fixtures-task' into 'master'
Precompile all frontend test fixtures Closes #26226 See merge request !8384
This commit is contained in:
commit
57652bf584
45 changed files with 609 additions and 106 deletions
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Precompile all JavaScript fixtures
|
||||||
|
merge_request: 8384
|
||||||
|
author:
|
|
@ -1,15 +1,28 @@
|
||||||
{
|
{
|
||||||
"plugins": ["jasmine"],
|
|
||||||
"env": {
|
"env": {
|
||||||
"jasmine": true
|
"jasmine": true
|
||||||
},
|
},
|
||||||
"extends": "plugin:jasmine/recommended",
|
"extends": "plugin:jasmine/recommended",
|
||||||
|
"globals": {
|
||||||
|
"appendLoadFixtures": false,
|
||||||
|
"appendLoadStyleFixtures": false,
|
||||||
|
"appendSetFixtures": false,
|
||||||
|
"appendSetStyleFixtures": false,
|
||||||
|
"getJSONFixture": false,
|
||||||
|
"loadFixtures": false,
|
||||||
|
"loadJSONFixtures": false,
|
||||||
|
"loadStyleFixtures": false,
|
||||||
|
"preloadFixtures": false,
|
||||||
|
"preloadStyleFixtures": false,
|
||||||
|
"readFixtures": false,
|
||||||
|
"sandbox": false,
|
||||||
|
"setFixtures": false,
|
||||||
|
"setStyleFixtures": false,
|
||||||
|
"spyOnEvent": false
|
||||||
|
},
|
||||||
|
"plugins": ["jasmine"],
|
||||||
"rules": {
|
"rules": {
|
||||||
"prefer-arrow-callback": 0,
|
"prefer-arrow-callback": 0,
|
||||||
"func-names": 0
|
"func-names": 0
|
||||||
},
|
|
||||||
"globals": {
|
|
||||||
"fixture": false,
|
|
||||||
"spyOnEvent": false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,10 +13,10 @@
|
||||||
(index, element) => element.innerText.indexOf(searchText) > -1,
|
(index, element) => element.innerText.indexOf(searchText) > -1,
|
||||||
).first();
|
).first();
|
||||||
|
|
||||||
fixture.preload(FIXTURE);
|
preloadFixtures(FIXTURE);
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
fixture.load(FIXTURE);
|
loadFixtures(FIXTURE);
|
||||||
this.abuseReports = new global.AbuseReports();
|
this.abuseReports = new global.AbuseReports();
|
||||||
messages = $('.abuse-reports .message');
|
messages = $('.abuse-reports .message');
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
window.gon || (window.gon = {});
|
window.gon || (window.gon = {});
|
||||||
const fixtureTemplate = 'event_filter.html';
|
const fixtureTemplate = 'static/event_filter.html.raw';
|
||||||
const filters = [
|
const filters = [
|
||||||
{
|
{
|
||||||
id: 'all',
|
id: 'all',
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
describe('Activities', () => {
|
describe('Activities', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load(fixtureTemplate);
|
loadFixtures(fixtureTemplate);
|
||||||
new gl.Activities();
|
new gl.Activities();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -34,9 +34,9 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('AwardsHandler', function() {
|
describe('AwardsHandler', function() {
|
||||||
fixture.preload('issues/open-issue.html.raw');
|
preloadFixtures('issues/open-issue.html.raw');
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('issues/open-issue.html.raw');
|
loadFixtures('issues/open-issue.html.raw');
|
||||||
awardsHandler = new AwardsHandler;
|
awardsHandler = new AwardsHandler;
|
||||||
spyOn(awardsHandler, 'postEmoji').and.callFake((function(_this) {
|
spyOn(awardsHandler, 'postEmoji').and.callFake((function(_this) {
|
||||||
return function(url, emoji, cb) {
|
return function(url, emoji, cb) {
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
describe('Autosize behavior', function() {
|
describe('Autosize behavior', function() {
|
||||||
var load;
|
var load;
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
return fixture.set('<textarea class="js-autosize" style="resize: vertical"></textarea>');
|
return setFixtures('<textarea class="js-autosize" style="resize: vertical"></textarea>');
|
||||||
});
|
});
|
||||||
it('does not overwrite the resize property', function() {
|
it('does not overwrite the resize property', function() {
|
||||||
load();
|
load();
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
(function() {
|
(function() {
|
||||||
describe('Quick Submit behavior', function() {
|
describe('Quick Submit behavior', function() {
|
||||||
var keydownEvent;
|
var keydownEvent;
|
||||||
fixture.preload('behaviors/quick_submit.html');
|
preloadFixtures('static/behaviors/quick_submit.html.raw');
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('behaviors/quick_submit.html');
|
loadFixtures('static/behaviors/quick_submit.html.raw');
|
||||||
$('form').submit(function(e) {
|
$('form').submit(function(e) {
|
||||||
// Prevent a form submit from moving us off the testing page
|
// Prevent a form submit from moving us off the testing page
|
||||||
return e.preventDefault();
|
return e.preventDefault();
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
describe('requiresInput', function() {
|
describe('requiresInput', function() {
|
||||||
fixture.preload('behaviors/requires_input.html');
|
preloadFixtures('static/behaviors/requires_input.html.raw');
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
return fixture.load('behaviors/requires_input.html');
|
return loadFixtures('static/behaviors/requires_input.html.raw');
|
||||||
});
|
});
|
||||||
it('disables submit when any field is required', function() {
|
it('disables submit when any field is required', function() {
|
||||||
$('.js-requires-input').requiresInput();
|
$('.js-requires-input').requiresInput();
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
describe('Linked Tabs', () => {
|
describe('Linked Tabs', () => {
|
||||||
fixture.preload('linked_tabs');
|
preloadFixtures('static/linked_tabs.html.raw');
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('linked_tabs');
|
loadFixtures('static/linked_tabs.html.raw');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when is initialized', () => {
|
describe('when is initialized', () => {
|
||||||
|
|
|
@ -17,10 +17,10 @@ describe('Build', () => {
|
||||||
offset: BUILD_TRACE.length, n_open_tags: 0, fg_color: null, bg_color: null, style_mask: 0,
|
offset: BUILD_TRACE.length, n_open_tags: 0, fg_color: null, bg_color: null, style_mask: 0,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
fixture.preload('builds/build-with-artifacts.html.raw');
|
preloadFixtures('builds/build-with-artifacts.html.raw');
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('builds/build-with-artifacts.html.raw');
|
loadFixtures('builds/build-with-artifacts.html.raw');
|
||||||
spyOn($, 'ajax');
|
spyOn($, 'ajax');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
((global) => {
|
((global) => {
|
||||||
describe('Dashboard', () => {
|
describe('Dashboard', () => {
|
||||||
const fixtureTemplate = 'dashboard.html';
|
const fixtureTemplate = 'static/dashboard.html.raw';
|
||||||
|
|
||||||
function todosCountText() {
|
function todosCountText() {
|
||||||
return $('.js-todos-count').text();
|
return $('.js-todos-count').text();
|
||||||
|
@ -17,9 +17,9 @@
|
||||||
$(document).trigger('todo:toggle', newCount);
|
$(document).trigger('todo:toggle', newCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
fixture.preload(fixtureTemplate);
|
preloadFixtures(fixtureTemplate);
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load(fixtureTemplate);
|
loadFixtures(fixtureTemplate);
|
||||||
new global.Sidebar();
|
new global.Sidebar();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
//= require environments/components/environment_actions
|
//= require environments/components/environment_actions
|
||||||
|
|
||||||
describe('Actions Component', () => {
|
describe('Actions Component', () => {
|
||||||
fixture.preload('environments/element.html');
|
preloadFixtures('static/environments/element.html.raw');
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('environments/element.html');
|
loadFixtures('static/environments/element.html.raw');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render a dropdown with the provided actions', () => {
|
it('should render a dropdown with the provided actions', () => {
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
//= require environments/components/environment_external_url
|
//= require environments/components/environment_external_url
|
||||||
|
|
||||||
describe('External URL Component', () => {
|
describe('External URL Component', () => {
|
||||||
fixture.preload('environments/element.html');
|
preloadFixtures('static/environments/element.html.raw');
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('environments/element.html');
|
loadFixtures('static/environments/element.html.raw');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should link to the provided externalUrl prop', () => {
|
it('should link to the provided externalUrl prop', () => {
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
//= require environments/components/environment_item
|
//= require environments/components/environment_item
|
||||||
|
|
||||||
describe('Environment item', () => {
|
describe('Environment item', () => {
|
||||||
fixture.preload('environments/table.html');
|
preloadFixtures('static/environments/table.html.raw');
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('environments/table.html');
|
loadFixtures('static/environments/table.html.raw');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('When item is folder', () => {
|
describe('When item is folder', () => {
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
//= require vue
|
//= require vue
|
||||||
//= require environments/components/environment_rollback
|
//= require environments/components/environment_rollback
|
||||||
describe('Rollback Component', () => {
|
describe('Rollback Component', () => {
|
||||||
fixture.preload('environments/element.html');
|
preloadFixtures('static/environments/element.html.raw');
|
||||||
|
|
||||||
const retryURL = 'https://gitlab.com/retry';
|
const retryURL = 'https://gitlab.com/retry';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('environments/element.html');
|
loadFixtures('static/environments/element.html.raw');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should link to the provided retryUrl', () => {
|
it('Should link to the provided retryUrl', () => {
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
//= require vue
|
//= require vue
|
||||||
//= require environments/components/environment_stop
|
//= require environments/components/environment_stop
|
||||||
describe('Stop Component', () => {
|
describe('Stop Component', () => {
|
||||||
fixture.preload('environments/element.html');
|
preloadFixtures('static/environments/element.html.raw');
|
||||||
|
|
||||||
let stopURL;
|
let stopURL;
|
||||||
let component;
|
let component;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('environments/element.html');
|
loadFixtures('static/environments/element.html.raw');
|
||||||
|
|
||||||
stopURL = '/stop';
|
stopURL = '/stop';
|
||||||
component = new window.gl.environmentsList.StopComponent({
|
component = new window.gl.environmentsList.StopComponent({
|
||||||
|
|
4
spec/javascripts/extensions/jquery_spec.js
vendored
4
spec/javascripts/extensions/jquery_spec.js
vendored
|
@ -6,7 +6,7 @@
|
||||||
describe('jQuery extensions', function() {
|
describe('jQuery extensions', function() {
|
||||||
describe('disable', function() {
|
describe('disable', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
return fixture.set('<input type="text" />');
|
return setFixtures('<input type="text" />');
|
||||||
});
|
});
|
||||||
it('adds the disabled attribute', function() {
|
it('adds the disabled attribute', function() {
|
||||||
var $input;
|
var $input;
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
});
|
});
|
||||||
return describe('enable', function() {
|
return describe('enable', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
return fixture.set('<input type="text" disabled="disabled" class="disabled" />');
|
return setFixtures('<input type="text" disabled="disabled" class="disabled" />');
|
||||||
});
|
});
|
||||||
it('removes the disabled attribute', function() {
|
it('removes the disabled attribute', function() {
|
||||||
var $input;
|
var $input;
|
||||||
|
|
File diff suppressed because one or more lines are too long
31
spec/javascripts/fixtures/static_fixtures.rb
Normal file
31
spec/javascripts/fixtures/static_fixtures.rb
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe ApplicationController, '(Static JavaScript fixtures)', type: :controller do
|
||||||
|
include JavaScriptFixturesHelpers
|
||||||
|
|
||||||
|
before(:all) do
|
||||||
|
clean_frontend_fixtures('static/')
|
||||||
|
end
|
||||||
|
|
||||||
|
fixtures_path = File.expand_path(JavaScriptFixturesHelpers::FIXTURE_PATH, Rails.root)
|
||||||
|
haml_fixtures = Dir.glob(File.expand_path('**/*.haml', fixtures_path)).map do |file_path|
|
||||||
|
file_path.sub(/\A#{fixtures_path}#{File::SEPARATOR}/, '')
|
||||||
|
end
|
||||||
|
|
||||||
|
haml_fixtures.each do |template_file_name|
|
||||||
|
it "static/#{template_file_name.sub(/\.haml\z/, '.raw')}" do |example|
|
||||||
|
fixture_file_name = example.description
|
||||||
|
rendered = render_template(template_file_name)
|
||||||
|
store_frontend_fixture(rendered, fixture_file_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def render_template(template_file_name)
|
||||||
|
fixture_path = JavaScriptFixturesHelpers::FIXTURE_PATH
|
||||||
|
controller = ApplicationController.new
|
||||||
|
controller.prepend_view_path(fixture_path)
|
||||||
|
controller.render_to_string(template: template_file_name, layout: false)
|
||||||
|
end
|
||||||
|
end
|
|
@ -43,8 +43,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Dropdown', function describeDropdown() {
|
describe('Dropdown', function describeDropdown() {
|
||||||
fixture.preload('gl_dropdown.html');
|
preloadFixtures('static/gl_dropdown.html.raw');
|
||||||
fixture.preload('projects.json');
|
|
||||||
|
|
||||||
function initDropDown(hasRemote, isFilterable) {
|
function initDropDown(hasRemote, isFilterable) {
|
||||||
this.dropdownButtonElement = $('#js-project-dropdown', this.dropdownContainerElement).glDropdown({
|
this.dropdownButtonElement = $('#js-project-dropdown', this.dropdownContainerElement).glDropdown({
|
||||||
|
@ -61,10 +60,10 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('gl_dropdown.html');
|
loadFixtures('static/gl_dropdown.html.raw');
|
||||||
this.dropdownContainerElement = $('.dropdown.inline');
|
this.dropdownContainerElement = $('.dropdown.inline');
|
||||||
this.$dropdownMenuElement = $('.dropdown-menu', this.dropdownContainerElement);
|
this.$dropdownMenuElement = $('.dropdown-menu', this.dropdownContainerElement);
|
||||||
this.projectsData = fixture.load('projects.json')[0];
|
this.projectsData = getJSONFixture('projects.json');
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
|
|
@ -4,11 +4,11 @@
|
||||||
//= require gl_field_errors
|
//= require gl_field_errors
|
||||||
|
|
||||||
((global) => {
|
((global) => {
|
||||||
fixture.preload('gl_field_errors.html');
|
preloadFixtures('static/gl_field_errors.html.raw');
|
||||||
|
|
||||||
describe('GL Style Field Errors', function() {
|
describe('GL Style Field Errors', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('gl_field_errors.html');
|
loadFixtures('static/gl_field_errors.html.raw');
|
||||||
const $form = this.$form = $('form.gl-show-field-errors');
|
const $form = this.$form = $('form.gl-show-field-errors');
|
||||||
this.fieldErrors = new global.GlFieldErrors($form);
|
this.fieldErrors = new global.GlFieldErrors($form);
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
describe('Header', function() {
|
describe('Header', function() {
|
||||||
var todosPendingCount = '.todos-pending-count';
|
var todosPendingCount = '.todos-pending-count';
|
||||||
var fixtureTemplate = 'header.html';
|
var fixtureTemplate = 'static/header.html.raw';
|
||||||
|
|
||||||
function isTodosCountHidden() {
|
function isTodosCountHidden() {
|
||||||
return $(todosPendingCount).hasClass('hidden');
|
return $(todosPendingCount).hasClass('hidden');
|
||||||
|
@ -17,9 +17,9 @@
|
||||||
$(document).trigger('todo:toggle', newCount);
|
$(document).trigger('todo:toggle', newCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
fixture.preload(fixtureTemplate);
|
preloadFixtures(fixtureTemplate);
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load(fixtureTemplate);
|
loadFixtures(fixtureTemplate);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should update todos-pending-count after receiving the todo:toggle event', function() {
|
it('should update todos-pending-count after receiving the todo:toggle event', function() {
|
||||||
|
|
|
@ -21,10 +21,10 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Issuable', () => {
|
describe('Issuable', () => {
|
||||||
fixture.preload('issuable_filter');
|
preloadFixtures('static/issuable_filter.html.raw');
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('issuable_filter');
|
loadFixtures('static/issuable_filter.html.raw');
|
||||||
Issuable.init();
|
Issuable.init();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
$filtersForm = $('.js-filter-form');
|
$filtersForm = $('.js-filter-form');
|
||||||
fixture.load('issuable_filter');
|
loadFixtures('static/issuable_filter.html.raw');
|
||||||
resetForm($filtersForm);
|
resetForm($filtersForm);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
var INVALID_URL = 'http://goesnowhere.nothing/whereami';
|
var INVALID_URL = 'http://goesnowhere.nothing/whereami';
|
||||||
var $boxClosed, $boxOpen, $btnClose, $btnReopen;
|
var $boxClosed, $boxOpen, $btnClose, $btnReopen;
|
||||||
|
|
||||||
fixture.preload('issues/closed-issue.html');
|
preloadFixtures('issues/closed-issue.html.raw');
|
||||||
fixture.preload('issues/issue-with-task-list.html');
|
preloadFixtures('issues/issue-with-task-list.html.raw');
|
||||||
fixture.preload('issues/open-issue.html');
|
preloadFixtures('issues/open-issue.html.raw');
|
||||||
|
|
||||||
function expectErrorMessage() {
|
function expectErrorMessage() {
|
||||||
var $flashMessage = $('div.flash-alert');
|
var $flashMessage = $('div.flash-alert');
|
||||||
|
@ -61,8 +61,8 @@
|
||||||
|
|
||||||
describe('Issue', function() {
|
describe('Issue', function() {
|
||||||
describe('task lists', function() {
|
describe('task lists', function() {
|
||||||
fixture.load('issues/issue-with-task-list.html');
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
|
loadFixtures('issues/issue-with-task-list.html.raw');
|
||||||
this.issue = new Issue();
|
this.issue = new Issue();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
|
|
||||||
describe('close issue', function() {
|
describe('close issue', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('issues/open-issue.html');
|
loadFixtures('issues/open-issue.html.raw');
|
||||||
findElements();
|
findElements();
|
||||||
this.issue = new Issue();
|
this.issue = new Issue();
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@
|
||||||
|
|
||||||
describe('reopen issue', function() {
|
describe('reopen issue', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('issues/closed-issue.html');
|
loadFixtures('issues/closed-issue.html.raw');
|
||||||
findElements();
|
findElements();
|
||||||
this.issue = new Issue();
|
this.issue = new Issue();
|
||||||
|
|
||||||
|
|
|
@ -17,10 +17,10 @@
|
||||||
(() => {
|
(() => {
|
||||||
let saveLabelCount = 0;
|
let saveLabelCount = 0;
|
||||||
describe('Issue dropdown sidebar', () => {
|
describe('Issue dropdown sidebar', () => {
|
||||||
fixture.preload('issue_sidebar_label.html');
|
preloadFixtures('static/issue_sidebar_label.html.raw');
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('issue_sidebar_label.html');
|
loadFixtures('static/issue_sidebar_label.html.raw');
|
||||||
new IssuableContext('{"id":1,"name":"Administrator","username":"root"}');
|
new IssuableContext('{"id":1,"name":"Administrator","username":"root"}');
|
||||||
new LabelsSelect();
|
new LabelsSelect();
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
(function() {
|
(function() {
|
||||||
describe('LineHighlighter', function() {
|
describe('LineHighlighter', function() {
|
||||||
var clickLine;
|
var clickLine;
|
||||||
fixture.preload('line_highlighter.html');
|
preloadFixtures('static/line_highlighter.html.raw');
|
||||||
clickLine = function(number, eventData) {
|
clickLine = function(number, eventData) {
|
||||||
var e;
|
var e;
|
||||||
if (eventData == null) {
|
if (eventData == null) {
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('line_highlighter.html');
|
loadFixtures('static/line_highlighter.html.raw');
|
||||||
this["class"] = new LineHighlighter();
|
this["class"] = new LineHighlighter();
|
||||||
this.css = this["class"].highlightClass;
|
this.css = this["class"].highlightClass;
|
||||||
return this.spies = {
|
return this.spies = {
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
(function() {
|
(function() {
|
||||||
describe('MergeRequest', function() {
|
describe('MergeRequest', function() {
|
||||||
return describe('task lists', function() {
|
return describe('task lists', function() {
|
||||||
fixture.preload('merge_requests_show.html');
|
preloadFixtures('static/merge_requests_show.html.raw');
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('merge_requests_show.html');
|
loadFixtures('static/merge_requests_show.html.raw');
|
||||||
return this.merge = new MergeRequest();
|
return this.merge = new MergeRequest();
|
||||||
});
|
});
|
||||||
it('modifies the Markdown field', function() {
|
it('modifies the Markdown field', function() {
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
};
|
};
|
||||||
$.extend(stubLocation, defaults, stubs || {});
|
$.extend(stubLocation, defaults, stubs || {});
|
||||||
};
|
};
|
||||||
fixture.preload('merge_request_tabs.html');
|
preloadFixtures('static/merge_request_tabs.html.raw');
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
this.class = new gl.MergeRequestTabs({ stubLocation: stubLocation });
|
this.class = new gl.MergeRequestTabs({ stubLocation: stubLocation });
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
describe('#activateTab', function () {
|
describe('#activateTab', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
spyOn($, 'ajax').and.callFake(function () {});
|
spyOn($, 'ajax').and.callFake(function () {});
|
||||||
fixture.load('merge_request_tabs.html');
|
loadFixtures('static/merge_request_tabs.html.raw');
|
||||||
this.subject = this.class.activateTab;
|
this.subject = this.class.activateTab;
|
||||||
});
|
});
|
||||||
it('shows the first tab when action is show', function () {
|
it('shows the first tab when action is show', function () {
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
describe('Mini Pipeline Graph Dropdown', () => {
|
describe('Mini Pipeline Graph Dropdown', () => {
|
||||||
fixture.preload('mini_dropdown_graph');
|
preloadFixtures('static/mini_dropdown_graph.html.raw');
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('mini_dropdown_graph');
|
loadFixtures('static/mini_dropdown_graph.html.raw');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('When is initialized', () => {
|
describe('When is initialized', () => {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
describe('Branch', function() {
|
describe('Branch', function() {
|
||||||
return describe('create a new branch', function() {
|
return describe('create a new branch', function() {
|
||||||
var expectToHaveError, fillNameWith;
|
var expectToHaveError, fillNameWith;
|
||||||
fixture.preload('new_branch.html');
|
preloadFixtures('static/new_branch.html.raw');
|
||||||
fillNameWith = function(value) {
|
fillNameWith = function(value) {
|
||||||
return $('.js-branch-name').val(value).trigger('blur');
|
return $('.js-branch-name').val(value).trigger('blur');
|
||||||
};
|
};
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
return expect($('.js-branch-name-error span').text()).toEqual(error);
|
return expect($('.js-branch-name-error span').text()).toEqual(error);
|
||||||
};
|
};
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('new_branch.html');
|
loadFixtures('static/new_branch.html.raw');
|
||||||
$('form').on('submit', function(e) {
|
$('form').on('submit', function(e) {
|
||||||
return e.preventDefault();
|
return e.preventDefault();
|
||||||
});
|
});
|
||||||
|
|
|
@ -12,11 +12,11 @@
|
||||||
gl.utils = gl.utils || {};
|
gl.utils = gl.utils || {};
|
||||||
|
|
||||||
describe('Notes', function() {
|
describe('Notes', function() {
|
||||||
var commentsTemplate = 'issues/issue_with_comment.raw';
|
var commentsTemplate = 'issues/issue_with_comment.html.raw';
|
||||||
fixture.preload(commentsTemplate);
|
preloadFixtures(commentsTemplate);
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
fixture.load(commentsTemplate);
|
loadFixtures(commentsTemplate);
|
||||||
gl.utils.disableButtonIfEmptyField = _.noop;
|
gl.utils.disableButtonIfEmptyField = _.noop;
|
||||||
window.project_uploads_path = 'http://test.host/uploads';
|
window.project_uploads_path = 'http://test.host/uploads';
|
||||||
$('body').data('page', 'projects:issues:show');
|
$('body').data('page', 'projects:issues:show');
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
describe('Pipelines', () => {
|
describe('Pipelines', () => {
|
||||||
fixture.preload('pipeline_graph');
|
preloadFixtures('static/pipeline_graph.html.raw');
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load('pipeline_graph');
|
loadFixtures('static/pipeline_graph.html.raw');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be defined', () => {
|
it('should be defined', () => {
|
||||||
|
|
|
@ -16,10 +16,9 @@
|
||||||
window.gon.api_version = 'v3';
|
window.gon.api_version = 'v3';
|
||||||
|
|
||||||
describe('Project Title', function() {
|
describe('Project Title', function() {
|
||||||
fixture.preload('project_title.html');
|
preloadFixtures('static/project_title.html.raw');
|
||||||
fixture.preload('projects.json');
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('project_title.html');
|
loadFixtures('static/project_title.html.raw');
|
||||||
return this.project = new Project();
|
return this.project = new Project();
|
||||||
});
|
});
|
||||||
return describe('project list', function() {
|
return describe('project list', function() {
|
||||||
|
@ -34,7 +33,7 @@
|
||||||
|
|
||||||
beforeEach((function(_this) {
|
beforeEach((function(_this) {
|
||||||
return function() {
|
return function() {
|
||||||
_this.projects_data = fixture.load('projects.json')[0];
|
_this.projects_data = getJSONFixture('projects.json');
|
||||||
return spyOn(jQuery, 'ajax').and.callFake(fakeAjaxResponse.bind(_this));
|
return spyOn(jQuery, 'ajax').and.callFake(fakeAjaxResponse.bind(_this));
|
||||||
};
|
};
|
||||||
})(this));
|
})(this));
|
||||||
|
|
|
@ -36,9 +36,9 @@
|
||||||
|
|
||||||
describe('RightSidebar', function() {
|
describe('RightSidebar', function() {
|
||||||
var fixtureName = 'issues/open-issue.html.raw';
|
var fixtureName = 'issues/open-issue.html.raw';
|
||||||
fixture.preload(fixtureName);
|
preloadFixtures(fixtureName);
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load(fixtureName);
|
loadFixtures(fixtureName);
|
||||||
this.sidebar = new Sidebar;
|
this.sidebar = new Sidebar;
|
||||||
$aside = $('.right-sidebar');
|
$aside = $('.right-sidebar');
|
||||||
$page = $('.page-with-sidebar');
|
$page = $('.page-with-sidebar');
|
||||||
|
@ -65,9 +65,10 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should broadcast todo:toggle event when add todo clicked', function() {
|
it('should broadcast todo:toggle event when add todo clicked', function() {
|
||||||
|
var todos = getJSONFixture('todos.json');
|
||||||
spyOn(jQuery, 'ajax').and.callFake(function() {
|
spyOn(jQuery, 'ajax').and.callFake(function() {
|
||||||
var d = $.Deferred();
|
var d = $.Deferred();
|
||||||
var response = fixture.load('todos.json');
|
var response = todos;
|
||||||
d.resolve(response);
|
d.resolve(response);
|
||||||
return d.promise();
|
return d.promise();
|
||||||
});
|
});
|
||||||
|
|
|
@ -112,9 +112,9 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('Search autocomplete dropdown', function() {
|
describe('Search autocomplete dropdown', function() {
|
||||||
fixture.preload('search_autocomplete.html');
|
preloadFixtures('static/search_autocomplete.html.raw');
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('search_autocomplete.html');
|
loadFixtures('static/search_autocomplete.html.raw');
|
||||||
return widget = new gl.SearchAutocomplete;
|
return widget = new gl.SearchAutocomplete;
|
||||||
});
|
});
|
||||||
it('should show Dashboard specific dropdown menu', function() {
|
it('should show Dashboard specific dropdown menu', function() {
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
(function() {
|
(function() {
|
||||||
describe('ShortcutsIssuable', function() {
|
describe('ShortcutsIssuable', function() {
|
||||||
var fixtureName = 'issues/open-issue.html.raw';
|
var fixtureName = 'issues/open-issue.html.raw';
|
||||||
fixture.preload(fixtureName);
|
preloadFixtures(fixtureName);
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load(fixtureName);
|
loadFixtures(fixtureName);
|
||||||
document.querySelector('.js-new-note-form').classList.add('js-main-target-form');
|
document.querySelector('.js-new-note-form').classList.add('js-main-target-form');
|
||||||
return this.shortcut = new ShortcutsIssuable();
|
return this.shortcut = new ShortcutsIssuable();
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
((global) => {
|
((global) => {
|
||||||
describe('SigninTabsMemoizer', () => {
|
describe('SigninTabsMemoizer', () => {
|
||||||
const fixtureTemplate = 'signin_tabs.html';
|
const fixtureTemplate = 'static/signin_tabs.html.raw';
|
||||||
const tabSelector = 'ul.nav-tabs';
|
const tabSelector = 'ul.nav-tabs';
|
||||||
const currentTabKey = 'current_signin_tab';
|
const currentTabKey = 'current_signin_tab';
|
||||||
let memo;
|
let memo;
|
||||||
|
@ -15,10 +15,10 @@
|
||||||
return memo;
|
return memo;
|
||||||
}
|
}
|
||||||
|
|
||||||
fixture.preload(fixtureTemplate);
|
preloadFixtures(fixtureTemplate);
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.load(fixtureTemplate);
|
loadFixtures(fixtureTemplate);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('does nothing if no tab was previously selected', () => {
|
it('does nothing if no tab was previously selected', () => {
|
||||||
|
|
|
@ -103,7 +103,7 @@
|
||||||
describe('DOM Events', function () {
|
describe('DOM Events', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
// This ensures DOM and DOM events are initialized for these specs.
|
// This ensures DOM and DOM events are initialized for these specs.
|
||||||
fixture.set('<div></div>');
|
setFixtures('<div></div>');
|
||||||
|
|
||||||
this.smartInterval = createDefaultSmartInterval();
|
this.smartInterval = createDefaultSmartInterval();
|
||||||
});
|
});
|
||||||
|
|
|
@ -37,12 +37,12 @@
|
||||||
// file as a manifest.
|
// file as a manifest.
|
||||||
// For more information: http://github.com/modeset/teaspoon
|
// For more information: http://github.com/modeset/teaspoon
|
||||||
|
|
||||||
(function() {
|
// set our fixtures path
|
||||||
|
jasmine.getFixtures().fixturesPath = '/teaspoon/fixtures';
|
||||||
|
jasmine.getJSONFixtures().fixturesPath = '/teaspoon/fixtures';
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
// defined in ActionDispatch::TestRequest
|
// defined in ActionDispatch::TestRequest
|
||||||
// see https://github.com/rails/rails/blob/v4.2.7.1/actionpack/lib/action_dispatch/testing/test_request.rb#L7
|
// see https://github.com/rails/rails/blob/v4.2.7.1/actionpack/lib/action_dispatch/testing/test_request.rb#L7
|
||||||
window.gl = window.gl || {};
|
window.gl = window.gl || {};
|
||||||
gl.TEST_HOST = 'http://test.host';
|
window.gl.TEST_HOST = 'http://test.host';
|
||||||
|
window.gon = window.gon || {};
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
};
|
};
|
||||||
describe('on a js-syntax-highlight element', function() {
|
describe('on a js-syntax-highlight element', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
return fixture.set('<div class="js-syntax-highlight"></div>');
|
return setFixtures('<div class="js-syntax-highlight"></div>');
|
||||||
});
|
});
|
||||||
return it('applies syntax highlighting', function() {
|
return it('applies syntax highlighting', function() {
|
||||||
stubUserColorScheme('monokai');
|
stubUserColorScheme('monokai');
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
});
|
});
|
||||||
return describe('on a parent element', function() {
|
return describe('on a parent element', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
return fixture.set("<div class=\"parent\">\n <div class=\"js-syntax-highlight\"></div>\n <div class=\"foo\"></div>\n <div class=\"js-syntax-highlight\"></div>\n</div>");
|
return setFixtures("<div class=\"parent\">\n <div class=\"js-syntax-highlight\"></div>\n <div class=\"foo\"></div>\n <div class=\"js-syntax-highlight\"></div>\n</div>");
|
||||||
});
|
});
|
||||||
it('applies highlighting to all applicable children', function() {
|
it('applies highlighting to all applicable children', function() {
|
||||||
stubUserColorScheme('monokai');
|
stubUserColorScheme('monokai');
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
});
|
});
|
||||||
return it('prevents an infinite loop when no matches exist', function() {
|
return it('prevents an infinite loop when no matches exist', function() {
|
||||||
var highlight;
|
var highlight;
|
||||||
fixture.set('<div></div>');
|
setFixtures('<div></div>');
|
||||||
highlight = function() {
|
highlight = function() {
|
||||||
return $('div').syntaxHighlight();
|
return $('div').syntaxHighlight();
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,10 +10,10 @@
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
describe('U2FAuthenticate', function() {
|
describe('U2FAuthenticate', function() {
|
||||||
fixture.preload('u2f/authenticate.html.raw');
|
preloadFixtures('u2f/authenticate.html.raw');
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('u2f/authenticate.html.raw');
|
loadFixtures('u2f/authenticate.html.raw');
|
||||||
this.u2fDevice = new MockU2FDevice;
|
this.u2fDevice = new MockU2FDevice;
|
||||||
this.container = $("#js-authenticate-u2f");
|
this.container = $("#js-authenticate-u2f");
|
||||||
this.component = new window.gl.U2FAuthenticate(
|
this.component = new window.gl.U2FAuthenticate(
|
||||||
|
|
|
@ -10,10 +10,10 @@
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
describe('U2FRegister', function() {
|
describe('U2FRegister', function() {
|
||||||
fixture.preload('u2f/register.html.raw');
|
preloadFixtures('u2f/register.html.raw');
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load('u2f/register.html.raw');
|
loadFixtures('u2f/register.html.raw');
|
||||||
this.u2fDevice = new MockU2FDevice;
|
this.u2fDevice = new MockU2FDevice;
|
||||||
this.container = $("#js-register-u2f");
|
this.container = $("#js-register-u2f");
|
||||||
this.component = new U2FRegister(this.container, $("#js-register-u2f-templates"), {}, "token");
|
this.component = new U2FRegister(this.container, $("#js-register-u2f-templates"), {}, "token");
|
||||||
|
|
|
@ -5,7 +5,7 @@ describe('Commit component', () => {
|
||||||
let component;
|
let component;
|
||||||
|
|
||||||
it('should render a code-fork icon if it does not represent a tag', () => {
|
it('should render a code-fork icon if it does not represent a tag', () => {
|
||||||
fixture.set('<div class="test-commit-container"></div>');
|
setFixtures('<div class="test-commit-container"></div>');
|
||||||
component = new window.gl.CommitComponent({
|
component = new window.gl.CommitComponent({
|
||||||
el: document.querySelector('.test-commit-container'),
|
el: document.querySelector('.test-commit-container'),
|
||||||
propsData: {
|
propsData: {
|
||||||
|
@ -30,7 +30,7 @@ describe('Commit component', () => {
|
||||||
|
|
||||||
describe('Given all the props', () => {
|
describe('Given all the props', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture.set('<div class="test-commit-container"></div>');
|
setFixtures('<div class="test-commit-container"></div>');
|
||||||
|
|
||||||
props = {
|
props = {
|
||||||
tag: true,
|
tag: true,
|
||||||
|
@ -105,7 +105,7 @@ describe('Commit component', () => {
|
||||||
|
|
||||||
describe('When commit title is not provided', () => {
|
describe('When commit title is not provided', () => {
|
||||||
it('should render default message', () => {
|
it('should render default message', () => {
|
||||||
fixture.set('<div class="test-commit-container"></div>');
|
setFixtures('<div class="test-commit-container"></div>');
|
||||||
props = {
|
props = {
|
||||||
tag: false,
|
tag: false,
|
||||||
commitRef: {
|
commitRef: {
|
||||||
|
|
|
@ -10,9 +10,9 @@
|
||||||
|
|
||||||
describe('ZenMode', function() {
|
describe('ZenMode', function() {
|
||||||
var fixtureName = 'issues/open-issue.html.raw';
|
var fixtureName = 'issues/open-issue.html.raw';
|
||||||
fixture.preload(fixtureName);
|
preloadFixtures(fixtureName);
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
fixture.load(fixtureName);
|
loadFixtures(fixtureName);
|
||||||
spyOn(Dropzone, 'forElement').and.callFake(function() {
|
spyOn(Dropzone, 'forElement').and.callFake(function() {
|
||||||
return {
|
return {
|
||||||
enable: function() {
|
enable: function() {
|
||||||
|
|
|
@ -20,11 +20,24 @@ module JavaScriptFixturesHelpers
|
||||||
|
|
||||||
# Public: Store a response object as fixture file
|
# Public: Store a response object as fixture file
|
||||||
#
|
#
|
||||||
# response - response object to store
|
# response - string or response object to store
|
||||||
# fixture_file_name - file name to store the fixture in (relative to FIXTURE_PATH)
|
# fixture_file_name - file name to store the fixture in (relative to FIXTURE_PATH)
|
||||||
#
|
#
|
||||||
def store_frontend_fixture(response, fixture_file_name)
|
def store_frontend_fixture(response, fixture_file_name)
|
||||||
fixture_file_name = File.expand_path(fixture_file_name, FIXTURE_PATH)
|
fixture_file_name = File.expand_path(fixture_file_name, FIXTURE_PATH)
|
||||||
|
fixture = response.respond_to?(:body) ? parse_response(response) : response
|
||||||
|
|
||||||
|
FileUtils.mkdir_p(File.dirname(fixture_file_name))
|
||||||
|
File.write(fixture_file_name, fixture)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
# Private: Prepare a response object for use as a frontend fixture
|
||||||
|
#
|
||||||
|
# response - response object to prepare
|
||||||
|
#
|
||||||
|
def parse_response(response)
|
||||||
fixture = response.body
|
fixture = response.body
|
||||||
fixture.force_encoding("utf-8")
|
fixture.force_encoding("utf-8")
|
||||||
|
|
||||||
|
@ -45,7 +58,6 @@ module JavaScriptFixturesHelpers
|
||||||
fixture.gsub!(%r{="/}, "=\"http://#{test_host}/")
|
fixture.gsub!(%r{="/}, "=\"http://#{test_host}/")
|
||||||
end
|
end
|
||||||
|
|
||||||
FileUtils.mkdir_p(File.dirname(fixture_file_name))
|
fixture
|
||||||
File.write(fixture_file_name, fixture)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue