Add collection-panel manifest map utils
[arvados-workbench2.git] / src / store / collection-panel / collection-panel-files / collection-panel-files-state.test.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { parseKeepManifestText } from "../../../models/keep-manifest";
6 import { mapManifestToFiles, mapManifestToDirectories } from './collection-panel-files-state';
7
8 test('mapManifestToFiles', () => {
9     const manifestText = `. 930625b054ce894ac40596c3f5a0d947+33 0:0:a 0:0:b 0:33:output.txt\n./c d41d8cd98f00b204e9800998ecf8427e+0 0:0:d`;
10     const manifest = parseKeepManifestText(manifestText);
11     const files = mapManifestToFiles(manifest);
12     expect(files).toEqual([{
13         parentId: '',
14         id: '/a',
15         name: 'a',
16         size: 0,
17         selected: false,
18         type: 'file'
19     }, {
20         parentId: '',
21         id: '/b',
22         name: 'b',
23         size: 0,
24         selected: false,
25         type: 'file'
26     }, {
27         parentId: '',
28         id: '/output.txt',
29         name: 'output.txt',
30         size: 33,
31         selected: false,
32         type: 'file'
33     }, {
34         parentId: '/c',
35         id: '/c/d',
36         name: 'd',
37         size: 0,
38         selected: false,
39         type: 'file'
40     },]);
41 });
42
43 test('mapManifestToDirectories', () => {
44     const manifestText = `./c/user/results 930625b054ce894ac40596c3f5a0d947+33 0:0:a 0:0:b 0:33:output.txt\n`;
45     const manifest = parseKeepManifestText(manifestText);
46     const directories = mapManifestToDirectories(manifest);
47     expect(directories).toEqual([{
48         parentId: "",
49         id: '/c',
50         name: 'c',
51         collapsed: true,
52         selected: false,
53         type: 'directory'
54     }, {
55         parentId: '/c',
56         id: '/c/user',
57         name: 'user',
58         collapsed: true,
59         selected: false,
60         type: 'directory'
61     }, {
62         parentId: '/c/user',
63         id: '/c/user/results',
64         name: 'results',
65         collapsed: true,
66         selected: false,
67         type: 'directory'
68     },]);
69 });