summaryrefslogtreecommitdiffstats
path: root/public/src/app/rule-engine/target/target.validation.spec.ts
blob: 71dc08366bc2137bc244e1ba990707441431a634 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import { TestBed, async } from '@angular/core/testing';
import { TreeModel, TreeComponent, ITreeOptions } from 'angular-tree-component';
import { validation, getBranchRequierds } from './target.util';

const _nodes = [
  {
    id: 1,
    name: 'North America',
    requiredChildren: ['United States'],
    children: [
      {
        id: 11,
        name: 'United States',
        requiredChildren: ['New York', 'Florida'],
        children: [
          { id: 111, name: 'New York' },
          { id: 112, name: 'California' },
          { id: 113, name: 'Florida' }
        ]
      },
      { id: 12, name: 'Canada' }
    ]
  },
  {
    name: 'South America',
    children: [{ name: 'Argentina', children: [] }, { name: 'Brazil' }]
  },
  {
    name: 'Europe',
    children: [
      { name: 'England' },
      { name: 'Germany' },
      { name: 'France' },
      { name: 'Italy' },
      { name: 'Spain' }
    ]
  }
];

const tree = new TreeModel();

describe('treeTest', () => {
  beforeAll(() => {
    tree.setData({
      nodes: _nodes,
      options: null,
      events: null
    });
  });

  it('should return node branch requireds', () => {
    // console.log('root', tree.getFirstRoot().data.name);
    // console.log(tree.getNodeBy((node) => node.data.name === 'California').data.uuid);
    // console.log(tree.getNodeBy((node) => node.data.name === 'California').id);
    // console.log(tree.getNodeById(1));
    const selectedNode = tree.getNodeBy(
      node => node.data.name === 'California'
    );
    const result = getBranchRequierds(selectedNode, []);
    const expected = [['New York', 'Florida'], ['United States']];

    expect(result.length).toBeGreaterThan(1);
    expect(result).toEqual(expected);
  });

  it('should return empty array - success state', () => {
    const userSelect = ['Florida', 'New York', 'United States'];
    const selectedNode = tree.getNodeBy(node => node.data.name === 'New York');
    const result = validation(selectedNode, userSelect);

    expect(result.length).toEqual(0);
    expect(result).toEqual([]);
  });

  it('should return validation array - missing required filed', () => {
    const userSelect = ['New York'];
    const selectedNode = tree.getNodeBy(node => node.data.name === 'New York');
    const result = validation(selectedNode, userSelect);
    const expected = ['Florida', 'United States'];

    expect(result).toEqual(expected);
  });
});