blob: 6384bb5493fd7d1a2491f9e7c19912f7fd19aeae [file] [log] [blame]
// Licensed 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 { getJsonViewData } from '../index-results/helpers/json-view';
import { getDocUrl } from '../index-results/helpers/shared-helpers';
import '../base';
import Constants from '../constants';
describe('Docs JSON View', () => {
const databaseName = 'testdb';
let docType = Constants.INDEX_RESULTS_DOC_TYPE.VIEW;
const docs = [
{
id: "aardvark",
key: "aardvark",
value: {
rev: "5-717f5e88689af3ad191b47321de10c95"
},
doc: {
_id: "aardvark",
_rev: "5-717f5e88689af3ad191b47321de10c95",
min_weight: 40,
max_weight: 65,
min_length: 1,
max_length: 2.2,
latin_name: "Orycteropus afer",
wiki_page: "http://en.wikipedia.org/wiki/Aardvark",
class: "mammal",
diet: "omnivore"
}
},
{
id: "badger",
key: "badger",
value: {
rev: "8-db03387de9cbd5c2814523b043566dfe"
},
doc: {
_id: "badger",
_rev: "8-db03387de9cbd5c2814523b043566dfe",
wiki_page: "http://en.wikipedia.org/wiki/Badger",
min_weight: 7,
max_weight: 30,
min_length: 0.6,
max_length: 0.9,
latin_name: "Meles meles",
class: "mammal",
diet: "omnivore"
}
}
];
const mangoIndexes = [
{ddoc: null, name: "_all_docs", type: "special", def: {fields: [{_id: "asc"}]}},
{ddoc: "_design/34223ecd7b6bcdc4dcdbc1a09bd63db365dd5f69", name: "idx1", type: "json", def: {fields: [{host3: "asc"}]}}
];
let testDocs;
beforeEach(() => {
testDocs = docs;
docType = Constants.INDEX_RESULTS_DOC_TYPE.VIEW;
});
it('getJsonViewData returns proper meta object with vanilla inputs', () => {
expect(getJsonViewData(testDocs, {databaseName, docType})).toEqual({
displayedFields: null,
hasBulkDeletableDoc: true,
results: [
{
content: JSON.stringify(testDocs[0], null, ' '),
id: testDocs[0].id,
_rev: testDocs[0].value.rev,
header: testDocs[0].id,
keylabel: 'id',
url: getDocUrl('app', testDocs[0].id, databaseName),
isDeletable: true,
isEditable: true
},
{
content: JSON.stringify(testDocs[1], null, ' '),
id: testDocs[1].id,
_rev: testDocs[1].value.rev,
header: testDocs[1].id,
keylabel: 'id',
url: getDocUrl('app', testDocs[1].id, databaseName),
isDeletable: true,
isEditable: true
}
]
});
});
it('getJsonViewData false hasBulkDeletableDoc when all special mango docs', () => {
docType = Constants.INDEX_RESULTS_DOC_TYPE.MANGO_INDEX;
testDocs = mangoIndexes;
testDocs[0].type = 'special';
testDocs[1].type = 'special';
const idx0 = { ...testDocs[0] };
delete idx0.ddoc;
delete idx0.name;
const idx1 = { ...testDocs[1] };
delete idx1.ddoc;
delete idx1.name;
expect(getJsonViewData(testDocs, {databaseName, docType})).toEqual({
displayedFields: null,
hasBulkDeletableDoc: false,
results: [
{
content: JSON.stringify(idx0, null, ' '),
id: mangoIndexes[0].name,
_rev: undefined,
header: 'special: _id',
keylabel: '',
url: null,
isDeletable: false,
isEditable: false
},
{
content: JSON.stringify(idx1, null, ' '),
id: '_all_docs',
_rev: undefined,
header: 'special: host3',
keylabel: '',
url: null,
isDeletable: false,
isEditable: false
}
]
});
});
});