'use strict';

const { test } = require('ava');
const Projection = require('./projection');

test('should return set empty if missing', t => {
    const projection = new Projection();

    projection.substract('name-1', { yes: 1, no: 2 });

    t.deepEqual(projection.getProjection()['name-1'], { yes: 0, no: 0 });
});

test('should add and substract', t => {
    const projection = new Projection();

    t.truthy(projection.store);

    projection.add('name-1', { yes: 1, no: 2 });
    t.deepEqual(projection.getProjection()['name-1'], { yes: 1, no: 2 });

    projection.add('name-1', { yes: 1, no: 2 });
    t.deepEqual(projection.getProjection()['name-1'], { yes: 2, no: 4 });

    projection.substract('name-1', { yes: 1, no: 2 });
    t.deepEqual(projection.getProjection()['name-1'], { yes: 1, no: 2 });

    projection.substract('name-1', { yes: 1, no: 2 });
    t.deepEqual(projection.getProjection()['name-1'], { yes: 0, no: 0 });

    projection.substract('name-2', { yes: 23213, no: 23213 });
    projection.add('name-2', { yes: 3, no: 2 });
    t.deepEqual(projection.getProjection()['name-2'], { yes: 3, no: 2 });
});