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
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();
|
|
});
|