blob: e969da9b452d71804638ee5b6b36d07a9f2a1507 [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 {
ADD_CACHE,
ADD_CLUSTER,
reducer,
REMOVE_CACHE,
REMOVE_CLUSTERS,
UPDATE_CACHE,
UPDATE_CLUSTER,
UPSERT_CACHES,
UPSERT_CLUSTERS
} from './reducer';
suite('page-configure component reducer', () => {
test('Default state', () => {
assert.deepEqual(
reducer(void 0, {}),
{
clusters: new Map(),
caches: new Map(),
spaces: new Map()
}
);
});
test('ADD_CLUSTER action', () => {
assert.deepEqual(
reducer(
{clusters: new Map([[1, {_id: 1}], [2, {_id: 2}]])},
{type: ADD_CLUSTER, cluster: {_id: 3}}
),
{
clusters: new Map([[1, {_id: 1}], [2, {_id: 2}], [3, {_id: 3}]])
},
'adds a cluster'
);
});
test('REMOVE_CLUSTERS action', () => {
assert.deepEqual(
reducer(
{clusters: new Map([[1, {_id: 1, name: 'Cluster 1'}], [2, {_id: 2, name: 'Cluster 2'}]])},
{type: REMOVE_CLUSTERS, clusterIDs: [1]}
),
{clusters: new Map([[2, {_id: 2, name: 'Cluster 2'}]])},
'deletes clusters by id'
);
});
test('UPDATE_CLUSTER action', () => {
assert.deepEqual(
reducer(
{clusters: new Map([[1, {_id: 1, name: 'Hello'}]])},
{type: UPDATE_CLUSTER, cluster: {_id: 1, name: 'Hello world'}}
),
{clusters: new Map([[1, {_id: 1, name: 'Hello world'}]])},
'updates a cluster'
);
});
test('UPSERT_CLUSTERS', () => {
assert.deepEqual(
reducer(
{clusters: new Map([
[1, {_id: 1, name: 'One'}],
[2, {_id: 2, name: 'Two'}]
])},
{type: UPSERT_CLUSTERS, clusters: [{_id: 1, name: '1', space: 1}]}
),
{clusters: new Map([
[1, {_id: 1, name: '1', space: 1}],
[2, {_id: 2, name: 'Two'}]
])},
'updates one cluster'
);
assert.deepEqual(
reducer(
{clusters: new Map([
[1, {_id: 1, name: 'One'}],
[2, {_id: 2, name: 'Two'}]
])},
{
type: UPSERT_CLUSTERS,
clusters: [
{_id: 1, name: '1', space: 1},
{_id: 2, name: '2'}
]
}
),
{clusters: new Map([
[1, {_id: 1, name: '1', space: 1}],
[2, {_id: 2, name: '2'}]
])},
'updates two clusters'
);
assert.deepEqual(
reducer(
{clusters: new Map()},
{type: UPSERT_CLUSTERS, clusters: [{_id: 1}]}
),
{clusters: new Map([
[1, {_id: 1}]
])},
'adds one cluster'
);
assert.deepEqual(
reducer(
{clusters: new Map([[1, {_id: 1}]])},
{type: UPSERT_CLUSTERS, clusters: [{_id: 2}, {_id: 3}]}
),
{clusters: new Map([
[1, {_id: 1}],
[2, {_id: 2}],
[3, {_id: 3}]
])},
'adds two clusters'
);
assert.deepEqual(
reducer(
{clusters: new Map([[1, {_id: 1}]])},
{
type: UPSERT_CLUSTERS,
clusters: [
{_id: 1, name: 'Test'},
{_id: 2},
{_id: 3}
]
}
),
{clusters: new Map([
[1, {_id: 1, name: 'Test'}],
[2, {_id: 2}],
[3, {_id: 3}]
])},
'adds and updates several clusters'
);
});
test('ADD_CACHE action', () => {
assert.deepEqual(
reducer(
{caches: new Map([[1, {_id: 1}], [2, {_id: 2}]])},
{type: ADD_CACHE, cache: {_id: 3}}
),
{
caches: new Map([[1, {_id: 1}], [2, {_id: 2}], [3, {_id: 3}]])
},
'adds a cache'
);
});
test('REMOVE_CACHE action', () => {
assert.deepEqual(
reducer({}, {type: REMOVE_CACHE}),
{},
'does nothing yet'
);
});
test('UPDATE_CACHE action', () => {
assert.deepEqual(
reducer(
{caches: new Map([[1, {_id: 1, name: 'Hello'}]])},
{type: UPDATE_CACHE, cache: {_id: 1, name: 'Hello world'}}
),
{caches: new Map([[1, {_id: 1, name: 'Hello world'}]])},
'updates a cache'
);
});
test('UPSERT_CACHES', () => {
assert.deepEqual(
reducer(
{caches: new Map([
[1, {_id: 1, name: 'One'}],
[2, {_id: 2, name: 'Two'}]
])},
{type: UPSERT_CACHES, caches: [{_id: 1, name: '1', space: 1}]}
),
{caches: new Map([
[1, {_id: 1, name: '1', space: 1}],
[2, {_id: 2, name: 'Two'}]
])},
'updates one cache'
);
assert.deepEqual(
reducer(
{caches: new Map([
[1, {_id: 1, name: 'One'}],
[2, {_id: 2, name: 'Two'}]
])},
{
type: UPSERT_CACHES,
caches: [
{_id: 1, name: '1', space: 1},
{_id: 2, name: '2'}
]
}
),
{caches: new Map([
[1, {_id: 1, name: '1', space: 1}],
[2, {_id: 2, name: '2'}]
])},
'updates two caches'
);
assert.deepEqual(
reducer(
{caches: new Map()},
{type: UPSERT_CACHES, caches: [{_id: 1}]}
),
{caches: new Map([
[1, {_id: 1}]
])},
'adds one cache'
);
assert.deepEqual(
reducer(
{caches: new Map([[1, {_id: 1}]])},
{type: UPSERT_CACHES, caches: [{_id: 2}, {_id: 3}]}
),
{caches: new Map([
[1, {_id: 1}],
[2, {_id: 2}],
[3, {_id: 3}]
])},
'adds two caches'
);
assert.deepEqual(
reducer(
{caches: new Map([[1, {_id: 1}]])},
{
type: UPSERT_CACHES,
caches: [
{_id: 1, name: 'Test'},
{_id: 2},
{_id: 3}
]
}
),
{caches: new Map([
[1, {_id: 1, name: 'Test'}],
[2, {_id: 2}],
[3, {_id: 3}]
])},
'adds and updates several caches'
);
});
});