blob: a4a1d309c4da9976ac24609ddc9c5cba9b4ace32 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {suite, test} from 'mocha';
import {assert} from 'chai';
import {spy} from 'sinon';
import {TestScheduler} from 'rxjs/testing';
import {Subscriber, Subject, BehaviorSubject} from 'rxjs';
import Controller from './controller';
const mocks = () => new Map([
['$scope', {
$applyAsync: spy((fn) => fn())
}],
['pageService', {
setCluster: spy()
}],
['Clusters', {
discoveries: 1,
minMemoryPolicySize: 1000
}],
['ConfigureState', {
state$: new Subject()
}],
['ConfigurationDownload', {
downloadClusterConfiguration: spy()
}],
['IgniteVersion', {
currentSbj: new BehaviorSubject({ignite: '1.9.0'}),
since: (a, b) => a === b
}],
['state$', {
params: {
clusterID: null
}
}]
]);
suite.skip('page-configure-basic component controller', () => {
test('$onInit method', () => {
const c = new Controller(...mocks().values());
c.getObservable = spy(c.getObservable.bind(c));
c.$onInit();
assert.deepEqual(
c.getObservable.lastCall.args,
[c.ConfigureState.state$, c.Version.currentSbj],
'calls getObservable with correct arguments'
);
assert.instanceOf(c.subscription, Subscriber, 'stores subscription for later');
assert.equal(c.discoveries, 1, 'exposes discoveries');
assert.equal(c.minMemorySize, 1000, 'exposes minMemorySize');
assert.deepEqual(
c.sizesMenu,
[
{label: 'Kb', value: 1024},
{label: 'Mb', value: 1024 * 1024},
{label: 'Gb', value: 1024 * 1024 * 1024}
],
'exposes sizesMenu'
);
assert.equal(c.memorySizeScale, c.sizesMenu[2], 'sets default memorySizeScale to Gb');
assert.deepEqual(
c.pageService.setCluster.lastCall.args, ['-1'],
'sets cluster to -1 by clusterID state param is missing'
);
});
test('$onDestroy method', () => {
const c = new Controller(...mocks().values());
c.$onInit();
c.subscription.unsubscribe = spy(c.subscription.unsubscribe);
c.$onDestroy();
assert(c.subscription.unsubscribe.calledOnce, 'unsubscribes from Observable');
});
test('getObservable method', () => {
const testScheduler = new TestScheduler((...args) => assert.deepEqual(...args));
const c = new Controller(...mocks().values());
c.applyValue = spy(c.applyValue.bind(c));
const version = 'a-b-';
const state = '-a-b';
const expected = '-abc';
const version$ = testScheduler.createHotObservable(version, {
a: {ignite: '1.9.0'},
b: {ignite: '2.0.0'}
});
const state$ = testScheduler.createHotObservable(state, {
a: {
list: {
clusters: new Map(),
caches: new Map()
},
configureBasic: {
newClusterCaches: [],
oldClusterCaches: [],
cluster: null
}
},
b: {
list: {
clusters: new Map([
[1, {_id: 1, name: '1', caches: [1, 2]}],
[2, {_id: 2, name: '2'}]
]),
caches: new Map([
[1, {_id: 1, name: '1'}],
[2, {_id: 2, name: '2'}]
])
},
configureBasic: {
newClusterCaches: [],
oldClusterCaches: [
{_id: 1, name: '1'},
{_id: 2, name: '2'}
],
cluster: {_id: 1, name: '1', caches: [1, 2]}
}
}
});
const expectedValues = {
a: {
clusters: new Map(),
caches: new Map(),
state: {
newClusterCaches: [],
oldClusterCaches: [],
cluster: null
},
allClusterCaches: [],
cachesMenu: [],
defaultMemoryPolicy: void 0,
memorySizeInputVisible: false
},
b: {
clusters: new Map(),
caches: new Map(),
state: {
newClusterCaches: [],
oldClusterCaches: [],
cluster: null
},
allClusterCaches: [],
cachesMenu: [],
defaultMemoryPolicy: void 0,
memorySizeInputVisible: true
},
c: {
clusters: new Map([
[1, {_id: 1, name: '1', caches: [1, 2]}],
[2, {_id: 2, name: '2'}]
]),
caches: new Map([
[1, {_id: 1, name: '1'}],
[2, {_id: 2, name: '2'}]
]),
state: {
newClusterCaches: [],
oldClusterCaches: [
{_id: 1, name: '1'},
{_id: 2, name: '2'}
],
cluster: {_id: 1, name: '1', caches: [1, 2]}
},
allClusterCaches: [
{_id: 1, name: '1'},
{_id: 2, name: '2'}
],
cachesMenu: [
{_id: 1, name: '1'},
{_id: 2, name: '2'}
],
defaultMemoryPolicy: void 0,
memorySizeInputVisible: true
}
};
testScheduler.expectObservable(c.getObservable(state$, version$)).toBe(expected, expectedValues);
testScheduler.flush();
assert.deepEqual(c.applyValue.getCall(0).args[0], expectedValues.a, 'applies value a');
assert.deepEqual(c.applyValue.getCall(1).args[0], expectedValues.b, 'applies value b');
assert.deepEqual(c.applyValue.getCall(2).args[0], expectedValues.c, 'applies value c');
assert.equal(c.applyValue.callCount, 3, 'applyValue was called correct amount of times');
});
});