import flowDb from './flowDb';

describe('flow db subgraphs', () => {
  let subgraphs;
  beforeEach( ()=>{
    subgraphs = [
      {nodes:['a', 'b', 'c', 'e']},
      {nodes:['f', 'g', 'h']},
      {nodes:['i', 'j']},
      {nodes:['k']},
    ];
  });
  describe('exist', () => {
    it('should return true when the is exists in a subgraph', () => {
      expect(flowDb.exists(subgraphs, 'a')).toBe(true);
      expect(flowDb.exists(subgraphs, 'h')).toBe(true);
      expect(flowDb.exists(subgraphs, 'j')).toBe(true);
      expect(flowDb.exists(subgraphs, 'k')).toBe(true);
    });
    it('should return false when the is exists in a subgraph', () => {
      expect(flowDb.exists(subgraphs, 'a2')).toBe(false);
      expect(flowDb.exists(subgraphs, 'l')).toBe(false);
    });
  });

    describe('makeUniq', () => {
      it('should remove ids from sungraph that already exists in another subgraph even if it gets empty', () => {
        const subgraph = flowDb.makeUniq({nodes:['i', 'j']}, subgraphs);

        expect(subgraph.nodes).toEqual([]);
      });
      it('should remove ids from sungraph that already exists in another subgraph', () => {
        const subgraph = flowDb.makeUniq({nodes:['i', 'j', 'o']}, subgraphs);

        expect(subgraph.nodes).toEqual(['o']);
      });
      it('should not remove ids from subgraph if they are unique', () => {
        const subgraph = flowDb.makeUniq({nodes:['q', 'r', 's']}, subgraphs);

        expect(subgraph.nodes).toEqual(['q', 'r', 's']);
      });
    });
});

