You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

314 lines
6.3 KiB
JavaScript

"use strict";
const tap = require("tap");
const { build, Parent } = require("../reference-tree");
const createBoxTreeBuilder = require("../../lib/util/box-tree-builder");
let input = [{
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'confirmed-spam'
}, {
flags: ['\\HasNoChildren', '\\Trash'],
delimiter: '/',
name: 'Trash'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'SpamLikely'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Spam'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Sent Items'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Archive'
}, {
flags: ['\\HasNoChildren', '\\Drafts'],
delimiter: '/',
name: 'Drafts'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Notes'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'TeamViewer'
}, {
flags: ['\\HasNoChildren', '\\Sent'],
delimiter: '/',
name: 'Sent Messages'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'confirmed-ham'
}, {
flags: ['\\Noselect', '\\HasChildren'],
delimiter: '/',
name: 'Public'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Public/office3'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Public/office4'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Public/support'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Public/root'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Public/updates'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Public/postmaster'
}, {
flags: ['\\Noselect', '\\HasChildren'],
delimiter: '/',
name: 'Shared'
}, {
flags: ['\\Noselect', '\\HasChildren'],
delimiter: '/',
name: 'Shared/d.marteva'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'Shared/d.marteva/INBOX'
}, {
flags: ['\\HasNoChildren'],
delimiter: '/',
name: 'INBOX'
}];
let expected = build({
'confirmed-spam': {
name: "confirmed-spam",
path: [ "confirmed-spam" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: undefined
},
Trash: {
name: "Trash",
path: [ "Trash" ],
attributes: ['\\HasNoChildren', '\\Trash'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: '\\Trash'
},
SpamLikely: {
name: "SpamLikely",
path: [ "SpamLikely" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: undefined
},
Spam: {
name: "Spam",
path: [ "Spam" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: undefined
},
'Sent Items': {
name: "Sent Items",
path: [ "Sent Items" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: undefined
},
Archive: {
name: "Archive",
path: [ "Archive" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: undefined
},
Drafts: {
name: "Drafts",
path: [ "Drafts" ],
attributes: ['\\HasNoChildren', '\\Drafts'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: '\\Drafts'
},
Notes: {
name: "Notes",
path: [ "Notes" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: undefined
},
TeamViewer: {
name: "TeamViewer",
path: [ "TeamViewer" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: undefined
},
'Sent Messages': {
name: "Sent Messages",
path: [ "Sent Messages" ],
attributes: ['\\HasNoChildren', '\\Sent'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: '\\Sent'
},
'confirmed-ham': {
name: "confirmed-ham",
path: [ "confirmed-ham" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: undefined
},
Public: {
name: "Public",
path: [ "Public" ],
attributes: ['\\Noselect', '\\HasChildren'],
delimiter: '/',
children: {
office3: {
name: "office3",
path: [ "Public", "office3" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: Parent(2),
specialUseAttribute: undefined
},
office4: {
name: "office4",
path: [ "Public", "office4" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: Parent(2),
specialUseAttribute: undefined
},
support: {
name: "support",
path: [ "Public", "support" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: Parent(2),
specialUseAttribute: undefined
},
root: {
name: "root",
path: [ "Public", "root" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: Parent(2),
specialUseAttribute: undefined
},
updates: {
name: "updates",
path: [ "Public", "updates" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: Parent(2),
specialUseAttribute: undefined
},
postmaster: {
name: "postmaster",
path: [ "Public", "postmaster" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: Parent(2),
specialUseAttribute: undefined
}
},
parent: null,
specialUseAttribute: undefined
},
Shared: {
name: "Shared",
path: [ "Shared" ],
attributes: ['\\Noselect', '\\HasChildren'],
delimiter: '/',
children: {
'd.marteva': {
name: "d.marteva",
path: [ "Shared", "d.marteva" ],
attributes: ['\\Noselect', '\\HasChildren'],
delimiter: '/',
children: {
INBOX: {
name: "INBOX",
path: [ "Shared", "d.marteva", "INBOX" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: Parent(2),
specialUseAttribute: undefined
}
},
parent: Parent(2),
specialUseAttribute: undefined
}
},
parent: null,
specialUseAttribute: undefined
},
INBOX: {
name: "INBOX",
path: [ "INBOX" ],
attributes: ['\\HasNoChildren'],
delimiter: '/',
children: null,
parent: null,
specialUseAttribute: undefined
}
});
tap.test("build-box-tree", (test) => {
let builder = createBoxTreeBuilder();
for (let item of input) {
builder.add(item);
}
test.same(builder.done(), expected);
// Needed to convince node-tap that the test is completed, for some reason...
return Promise.resolve();
});