Skip to content
Snippets Groups Projects
Commit 2597d8d2 authored by Filipa Lacerda's avatar Filipa Lacerda Committed by Phil Hughes
Browse files

Removes CommitsList from global namespace

parent 8af29c21
No related branches found
No related tags found
No related merge requests found
/* eslint-disable func-names, space-before-function-paren, wrap-iife, quotes, consistent-return, no-return-assign, no-param-reassign, one-var, no-var, one-var-declaration-per-line, no-unused-vars, prefer-template, object-shorthand, comma-dangle, max-len, prefer-arrow-callback */
/* eslint-disable func-names, wrap-iife, consistent-return,
no-return-assign, no-param-reassign, one-var-declaration-per-line, no-unused-vars,
prefer-template, object-shorthand, prefer-arrow-callback */
/* global Pager */
 
window.CommitsList = (function() {
var CommitsList = {};
export default (function () {
const CommitsList = {};
 
CommitsList.timer = null;
 
CommitsList.init = function(limit) {
CommitsList.init = function (limit) {
this.$contentList = $('.content_list');
 
$("body").on("click", ".day-commits-table li.commit", function(e) {
if (e.target.nodeName !== "A") {
location.href = $(this).attr("url");
$('body').on('click', '.day-commits-table li.commit', function (e) {
if (e.target.nodeName !== 'A') {
location.href = $(this).attr('url');
e.stopPropagation();
return false;
}
Loading
Loading
@@ -19,48 +21,47 @@ window.CommitsList = (function() {
 
Pager.init(parseInt(limit, 10), false, false, this.processCommits);
 
this.content = $("#commits-list");
this.searchField = $("#commits-search");
this.content = $('#commits-list');
this.searchField = $('#commits-search');
this.lastSearch = this.searchField.val();
return this.initSearch();
};
 
CommitsList.initSearch = function() {
CommitsList.initSearch = function () {
this.timer = null;
return this.searchField.keyup((function(_this) {
return function() {
return this.searchField.keyup((function (_this) {
return function () {
clearTimeout(_this.timer);
return _this.timer = setTimeout(_this.filterResults, 500);
};
})(this));
};
 
CommitsList.filterResults = function() {
var commitsUrl, form, search;
form = $(".commits-search-form");
search = CommitsList.searchField.val();
CommitsList.filterResults = function () {
const form = $('.commits-search-form');
const search = CommitsList.searchField.val();
if (search === CommitsList.lastSearch) return;
commitsUrl = form.attr("action") + '?' + form.serialize();
const commitsUrl = form.attr('action') + '?' + form.serialize();
CommitsList.content.fadeTo('fast', 0.5);
return $.ajax({
type: "GET",
url: form.attr("action"),
type: 'GET',
url: form.attr('action'),
data: form.serialize(),
complete: function() {
complete: function () {
return CommitsList.content.fadeTo('fast', 1.0);
},
success: function(data) {
success: function (data) {
CommitsList.lastSearch = search;
CommitsList.content.html(data.html);
return history.replaceState({
page: commitsUrl
page: commitsUrl,
// Change url so if user reload a page - search results are saved
}, document.title, commitsUrl);
},
error: function() {
error: function () {
CommitsList.lastSearch = null;
},
dataType: "json"
dataType: 'json',
});
};
 
Loading
Loading
@@ -81,7 +82,7 @@ window.CommitsList = (function() {
commitsCount = $commitsHeadersLast.nextUntil('li.js-commit-header').find('li.commit').length;
 
// Remove duplicate of commits header.
processedData = $processedData.not(`li.js-commit-header[data-day="${loadedShownDayFirst}"]`);
processedData = $processedData.not(`li.js-commit-header[data-day='${loadedShownDayFirst}']`);
 
// Update commits count in the previous commits header.
commitsCount += Number($(processedData).nextUntil('li.js-commit-header').first().find('li.commit').length);
Loading
Loading
Loading
Loading
@@ -7,7 +7,6 @@
/* global IssuableForm */
/* global LabelsSelect */
/* global MilestoneSelect */
/* global CommitsList */
/* global NewBranchForm */
/* global NotificationsForm */
/* global NotificationsDropdown */
Loading
Loading
@@ -35,6 +34,7 @@
/* global Sidebar */
/* global ShortcutsWiki */
 
import CommitsList from './commits';
import Issue from './issue';
import BindInOut from './behaviors/bind_in_out';
import DeleteModal from './branches/branches_delete_modal';
Loading
Loading
/* global CommitsList */
import 'vendor/jquery.endless-scroll';
import '~/pager';
import '~/commits';
(() => {
describe('Commits List', () => {
beforeEach(() => {
setFixtures(`
<form class="commits-search-form" action="/h5bp/html5-boilerplate/commits/master">
<input id="commits-search">
</form>
<ol id="commits-list"></ol>
`);
});
import CommitsList from '~/commits';
 
it('should be defined', () => {
expect(CommitsList).toBeDefined();
});
describe('Commits List', () => {
beforeEach(() => {
setFixtures(`
<form class="commits-search-form" action="/h5bp/html5-boilerplate/commits/master">
<input id="commits-search">
</form>
<ol id="commits-list"></ol>
`);
});
 
describe('processCommits', () => {
it('should join commit headers', () => {
CommitsList.$contentList = $(`
<div>
<li class="commit-header" data-day="2016-09-20">
<span class="day">20 Sep, 2016</span>
<span class="commits-count">1 commit</span>
</li>
<li class="commit"></li>
</div>
`);
it('should be defined', () => {
expect(CommitsList).toBeDefined();
});
 
const data = `
describe('processCommits', () => {
it('should join commit headers', () => {
CommitsList.$contentList = $(`
<div>
<li class="commit-header" data-day="2016-09-20">
<span class="day">20 Sep, 2016</span>
<span class="commits-count">1 commit</span>
</li>
<li class="commit"></li>
`;
</div>
`);
 
// The last commit header should be removed
// since the previous one has the same data-day value.
expect(CommitsList.processCommits(data).find('li.commit-header').length).toBe(0);
});
const data = `
<li class="commit-header" data-day="2016-09-20">
<span class="day">20 Sep, 2016</span>
<span class="commits-count">1 commit</span>
</li>
<li class="commit"></li>
`;
// The last commit header should be removed
// since the previous one has the same data-day value.
expect(CommitsList.processCommits(data).find('li.commit-header').length).toBe(0);
});
});
 
describe('on entering input', () => {
let ajaxSpy;
describe('on entering input', () => {
let ajaxSpy;
 
beforeEach(() => {
CommitsList.init(25);
CommitsList.searchField.val('');
beforeEach(() => {
CommitsList.init(25);
CommitsList.searchField.val('');
 
spyOn(history, 'replaceState').and.stub();
ajaxSpy = spyOn(jQuery, 'ajax').and.callFake((req) => {
req.success({
data: '<li>Result</li>',
});
spyOn(history, 'replaceState').and.stub();
ajaxSpy = spyOn(jQuery, 'ajax').and.callFake((req) => {
req.success({
data: '<li>Result</li>',
});
});
});
 
it('should save the last search string', () => {
CommitsList.searchField.val('GitLab');
CommitsList.filterResults();
expect(ajaxSpy).toHaveBeenCalled();
expect(CommitsList.lastSearch).toEqual('GitLab');
});
it('should save the last search string', () => {
CommitsList.searchField.val('GitLab');
CommitsList.filterResults();
expect(ajaxSpy).toHaveBeenCalled();
expect(CommitsList.lastSearch).toEqual('GitLab');
});
 
it('should not make ajax call if the input does not change', () => {
CommitsList.filterResults();
expect(ajaxSpy).not.toHaveBeenCalled();
expect(CommitsList.lastSearch).toEqual('');
});
it('should not make ajax call if the input does not change', () => {
CommitsList.filterResults();
expect(ajaxSpy).not.toHaveBeenCalled();
expect(CommitsList.lastSearch).toEqual('');
});
});
})();
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment