Remove the unnecessary use of "private" for some modules. (#13739)

* Remove the unnecessary use of "private" for these modules.

* Fix tests that use inject to refresh the provider initialization call.

* Add a function to easily clear the request queue and add it to all the fetch tests.

* clear the request queue on after as well, so the tests clean up after themselves
This commit is contained in:
Stacey Gammon 2017-09-08 09:34:19 -04:00 committed by GitHub
parent a03f3c5fef
commit 8024a07672
13 changed files with 68 additions and 81 deletions

View file

@ -2,21 +2,21 @@ import ngMock from 'ng_mock';
import expect from 'expect.js';
import sinon from 'sinon';
import { RequestQueueProvider } from '../_request_queue';
import { requestQueue } from '../_request_queue';
import { SearchStrategyProvider } from '../fetch/strategy/search';
import { DocDataStrategyProvider } from '../fetch/strategy/doc_data';
describe('Courier Request Queue', function () {
let docStrategy;
let requestQueue;
let searchStrategy;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private) {
docStrategy = Private(DocDataStrategyProvider);
requestQueue = Private(RequestQueueProvider);
searchStrategy = Private(SearchStrategyProvider);
}));
beforeEach(requestQueue.clear);
after(requestQueue.clear);
class MockReq {
constructor(strategy, startable = true) {

View file

@ -1,8 +1,6 @@
export function ErrorHandlersProvider() {
/**
* Queue of pending error handlers, they are removed as
* they are resolved.
* @type {Array}
*/
return [];
}
/**
* Queue of pending error handlers, they are removed as
* they are resolved.
* @type {Array}
*/
export const errorHandlersQueue = [];

View file

@ -1,35 +1,36 @@
export function RequestQueueProvider() {
/**
* Queue of pending requests, requests are removed as
* they are processed by fetch.[sourceType]().
* @type {Array}
*/
const queue = [];
/**
* Queue of pending requests, requests are removed as
* they are processed by fetch.[sourceType]().
* @type {Array}
*/
export const requestQueue = [];
queue.getInactive = function (/* strategies */) {
return queue.get.apply(queue, arguments)
requestQueue.clear = function () {
requestQueue.splice(0, requestQueue.length);
};
requestQueue.getInactive = function (/* strategies */) {
return requestQueue.get.apply(requestQueue, arguments)
.filter(function (req) {
return !req.started;
});
};
};
queue.getStartable = function (...strategies) {
return queue.get(...strategies).filter(req => req.canStart());
};
requestQueue.getStartable = function (...strategies) {
return requestQueue.get(...strategies).filter(req => req.canStart());
};
queue.get = function (...strategies) {
return queue.filter(function (req) {
let strategyMatch = !strategies.length;
if (!strategyMatch) {
strategyMatch = strategies.some(function (strategy) {
return req.strategy === strategy;
});
}
requestQueue.get = function (...strategies) {
return requestQueue.filter(function (req) {
let strategyMatch = !strategies.length;
if (!strategyMatch) {
strategyMatch = strategies.some(function (strategy) {
return req.strategy === strategy;
});
}
return strategyMatch;
});
};
return strategyMatch;
});
};
return queue;
}

View file

@ -9,7 +9,7 @@ import { Notifier } from 'ui/notify/notifier';
import { DocSourceProvider } from './data_source/doc_source';
import { SearchSourceProvider } from './data_source/search_source';
import { SearchStrategyProvider } from './fetch/strategy/search';
import { RequestQueueProvider } from './_request_queue';
import { requestQueue } from './_request_queue';
import { FetchProvider } from './fetch';
import { DocDataLooperProvider } from './looper/doc_data';
import { SearchLooperProvider } from './looper/search';
@ -27,8 +27,6 @@ uiModules.get('kibana/courier')
const SearchSource = Private(SearchSourceProvider);
const searchStrategy = Private(SearchStrategyProvider);
const requestQueue = Private(RequestQueueProvider);
const fetch = Private(FetchProvider);
const docDataLooper = self.docLooper = Private(DocDataLooperProvider);
const searchLooper = self.searchLooper = Private(SearchLooperProvider);

View file

@ -2,20 +2,20 @@ import ngMock from 'ng_mock';
import expect from 'expect.js';
import sinon from 'sinon';
import { RequestQueueProvider } from '../../_request_queue';
import { requestQueue } from '../../_request_queue';
import { DocSourceProvider } from '../doc_source';
describe('DocSource', function () {
require('test_utils/no_digest_promises').activateForSuite();
let requestQueue;
let DocSource;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private) {
requestQueue = Private(RequestQueueProvider);
DocSource = Private(DocSourceProvider);
}));
beforeEach(requestQueue.clear);
after(requestQueue.clear);
describe('#onUpdate()', function () {
it('adds a request to the requestQueue', function () {

View file

@ -2,21 +2,19 @@ import ngMock from 'ng_mock';
import expect from 'expect.js';
import sinon from 'sinon';
import { RequestQueueProvider } from '../../_request_queue';
import { requestQueue } from '../../_request_queue';
import { SearchSourceProvider } from '../search_source';
import StubIndexPatternProv from 'test_utils/stub_index_pattern';
describe('SearchSource', function () {
require('test_utils/no_digest_promises').activateForSuite();
let requestQueue;
let SearchSource;
let indexPattern;
let indexPattern2;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private) {
requestQueue = Private(RequestQueueProvider);
SearchSource = Private(SearchSourceProvider);
const IndexPattern = Private(StubIndexPatternProv);
@ -24,6 +22,8 @@ describe('SearchSource', function () {
indexPattern2 = new IndexPattern('test2-*', null, []);
expect(indexPattern).to.not.be(indexPattern2);
}));
beforeEach(requestQueue.clear);
after(requestQueue.clear);
describe('#onResults()', function () {
it('adds a request to the requestQueue', function () {

View file

@ -3,16 +3,14 @@ import angular from 'angular';
import 'ui/promises';
import { RequestQueueProvider } from '../_request_queue';
import { ErrorHandlersProvider } from '../_error_handlers';
import { requestQueue } from '../_request_queue';
import { errorHandlersQueue } from '../_error_handlers';
import { FetchProvider } from '../fetch';
import { FieldWildcardProvider } from '../../field_wildcard';
import { getHighlightRequest } from '../../../../core_plugins/kibana/common/highlight';
import { BuildESQueryProvider } from './build_query';
export function AbstractDataSourceProvider(Private, Promise, PromiseEmitter, config) {
const requestQueue = Private(RequestQueueProvider);
const errorHandlers = Private(ErrorHandlersProvider);
const courierFetch = Private(FetchProvider);
const buildESQuery = Private(BuildESQueryProvider);
const { fieldWildcardFilter } = Private(FieldWildcardProvider);
@ -160,7 +158,7 @@ export function AbstractDataSourceProvider(Private, Promise, PromiseEmitter, con
const defer = Promise.defer();
defer.promise.then(resolve, reject);
errorHandlers.push({
errorHandlersQueue.push({
source: self,
defer: defer
});

View file

@ -8,11 +8,10 @@
import _ from 'lodash';
import { VersionConflict, RequestFailure } from 'ui/errors';
import { RequestQueueProvider } from 'ui/courier/_request_queue';
import { requestQueue } from 'ui/courier/_request_queue';
import { FetchProvider } from 'ui/courier/fetch/fetch';
export function DocSendToEsProvider(Promise, Private, es) {
const requestQueue = Private(RequestQueueProvider);
const courierFetch = Private(FetchProvider);
/**

View file

@ -5,6 +5,7 @@ import sinon from 'sinon';
import IndexPatternProvider from 'fixtures/stubbed_logstash_index_pattern';
import searchResp from 'fixtures/search_response';
import { requestQueue } from '../../_request_queue';
import { FetchProvider } from '../fetch';
import { DocSourceProvider } from '../../data_source/doc_source';
import { SearchSourceProvider } from '../../data_source/search_source';
@ -28,6 +29,8 @@ describe('Fetch service', function () {
DocSource = Private(DocSourceProvider);
SearchSource = Private(SearchSourceProvider);
}));
beforeEach(requestQueue.clear);
after(requestQueue.clear);
describe('#doc(docSource)', function () {
it('fetches a single doc source', function () {

View file

@ -1,13 +1,12 @@
import _ from 'lodash';
import { RequestQueueProvider } from '../_request_queue';
import { requestQueue } from '../_request_queue';
import { FetchTheseProvider } from './fetch_these';
import { CallResponseHandlersProvider } from './call_response_handlers';
import { ReqStatusProvider } from './req_status';
export function FetchProvider(Private, Promise) {
const requestQueue = Private(RequestQueueProvider);
const immediatelyFetchThese = Private(FetchTheseProvider);
const callResponseHandlers = Private(CallResponseHandlersProvider);
const INCOMPLETE = Private(ReqStatusProvider).INCOMPLETE;

View file

@ -1,29 +1,23 @@
import { Notifier } from 'ui/notify/notifier';
import { ErrorHandlersProvider } from '../../_error_handlers';
import { errorHandlersQueue } from '../../_error_handlers';
export function ErrorHandlerRequestProvider(Private) {
const errHandlers = Private(ErrorHandlersProvider);
const notify = new Notifier({
location: 'Courier Fetch Error'
});
const notify = new Notifier({
location: 'Courier Fetch Error'
export function requestErrorHandler(req, error) {
const myHandlers = [];
errorHandlersQueue.splice(0).forEach(function (handler) {
(handler.source === req.source ? myHandlers : errorHandlersQueue).push(handler);
});
function handleError(req, error) {
const myHandlers = [];
errHandlers.splice(0).forEach(function (handler) {
(handler.source === req.source ? myHandlers : errHandlers).push(handler);
if (!myHandlers.length) {
notify.fatal(new Error(`unhandled courier request error: ${ notify.describeError(error) }`));
} else {
myHandlers.forEach(function (handler) {
handler.defer.resolve(error);
});
if (!myHandlers.length) {
notify.fatal(new Error(`unhandled courier request error: ${ notify.describeError(error) }`));
} else {
myHandlers.forEach(function (handler) {
handler.defer.resolve(error);
});
}
}
return handleError;
}

View file

@ -1,12 +1,10 @@
import _ from 'lodash';
import moment from 'moment';
import { RequestQueueProvider } from '../../_request_queue';
import { ErrorHandlerRequestProvider } from './error_handler';
import { requestQueue } from '../../_request_queue';
import { requestErrorHandler } from './error_handler';
export function AbstractRequestProvider(Private, Promise) {
const requestQueue = Private(RequestQueueProvider);
const requestErrorHandler = Private(ErrorHandlerRequestProvider);
return class AbstractReq {
constructor(source, defer) {

View file

@ -1,12 +1,11 @@
import { FetchProvider } from '../fetch';
import { SearchStrategyProvider } from '../fetch/strategy/search';
import { RequestQueueProvider } from '../_request_queue';
import { requestQueue } from '../_request_queue';
import { LooperProvider } from './_looper';
export function SearchLooperProvider(Private, Promise, Notifier, $rootScope) {
const fetch = Private(FetchProvider);
const searchStrategy = Private(SearchStrategyProvider);
const requestQueue = Private(RequestQueueProvider);
const Looper = Private(LooperProvider);