it('node variables set', () => {
     assert.equal(viewModel.affiliatedInstitutions(), data.node.institutions);
     assert.equal(viewModel.affiliatedInstitutionsIds().length, 2);
     assert.equal(viewModel.affiliatedInstitutionsIds()[0], ['cos']);
     assert.equal(viewModel.affiliatedInstitutionsIds()[1], ['uoa']);
     assert.equal(viewModel.availableInstitutions().length, 1);
     assert.equal(viewModel.availableInstitutions()[0], data.currentUser.institutions[1]);
 });
    it('does not show dialog if the Node has no children', () => {

        viewModel.childExists(false);
        viewModel.submitInst(item);
        assert.isFalse(modifyStub.called);
    });
 it('shows a dialog if the Node has children', () => {
     viewModel.childExists(true);
     viewModel.submitInst(item);
     assert(modifyStub.called);
 });
describe('InstitutionSettings', () => {
    var data = {
        apiV2Prefix: 'http://localhost:8000/v2/',
        node: {
            title: 'Sample Project',
            id: 'abcde',
            urls: {
                api: '/api/v1/project/abcde'
            },
            institutions: [{
                id: 'cos',
                logo_path: '/static/img/institutions/cos-shield.png',
                name: 'Center For Open Science'
            }, {
                id: 'uoa',
                logo_path: '/static/img/institutions/cos-shield.png',
                name: 'University of Awesome'
            }]},
        currentUser: {
            fullname: 'John Cena',
            institutions: [{
                id: 'cos',
                logo_path: '/static/img/institutions/cos-shield.png',
                name: 'Center For Open Science'
            },
                {
                    id: 'bff',
                    logo_path: '/static/img/institutions/cos-shield.png',
                    name: 'Best Friend University'
                }]
        }
    };

    var item = {
        name: 'Sample Institution',
        id: 'abcde'
    };

    var modifyStub;

    beforeEach(() => {
        modifyStub = sinon.stub(viewModel, 'modifyDialog');
    });

    afterEach(() => {
        modifyStub.restore();
    });

    var viewModel = new InstitutionProjectSettings.ViewModel(data);

    it('user variables set', () => {
        assert.equal(viewModel.userInstitutions, data.currentUser.institutions);
        assert.equal(viewModel.userInstitutionsIds.length, 2);
        assert.equal(viewModel.userInstitutionsIds[0], ['cos']);
        assert.equal(viewModel.userInstitutionsIds[1], ['bff']);
    });

    it('node variables set', () => {
        assert.equal(viewModel.affiliatedInstitutions(), data.node.institutions);
        assert.equal(viewModel.affiliatedInstitutionsIds().length, 2);
        assert.equal(viewModel.affiliatedInstitutionsIds()[0], ['cos']);
        assert.equal(viewModel.affiliatedInstitutionsIds()[1], ['uoa']);
        assert.equal(viewModel.availableInstitutions().length, 1);
        assert.equal(viewModel.availableInstitutions()[0], data.currentUser.institutions[1]);
    });

    it('computed variables set', () => {
        assert.equal(viewModel.affiliatedInstitutions(), data.node.institutions);
        assert.equal(viewModel.affiliatedInstitutionsIds().length, 2);
        assert.equal(viewModel.affiliatedInstitutionsIds()[0], ['cos']);
        assert.equal(viewModel.affiliatedInstitutionsIds()[1], ['uoa']);
    });

    it('shows a dialog if the Node has children', () => {
        viewModel.childExists(true);
        viewModel.submitInst(item);
        assert(modifyStub.called);
    });

    it('does not show dialog if the Node has no children', () => {

        viewModel.childExists(false);
        viewModel.submitInst(item);
        assert.isFalse(modifyStub.called);
    });


});
 it('computed variables set', () => {
     assert.equal(viewModel.affiliatedInstitutions(), data.node.institutions);
     assert.equal(viewModel.affiliatedInstitutionsIds().length, 2);
     assert.equal(viewModel.affiliatedInstitutionsIds()[0], ['cos']);
     assert.equal(viewModel.affiliatedInstitutionsIds()[1], ['uoa']);
 });