import './index';

describe('component vnRoleSubroles', () => {
    let controller;
    let $httpBackend;

    beforeEach(ngModule('account'));

    beforeEach(inject(($componentController, _$httpBackend_) => {
        $httpBackend = _$httpBackend_;
        controller = $componentController('vnRoleSubroles', {$element: null});
        jest.spyOn(controller.vnApp, 'showSuccess');
    }));

    describe('refresh()', () => {
        it('should delete entity and go to index', () => {
            $httpBackend.expectGET('RoleInherits').respond('foo');
            controller.refresh();
            $httpBackend.flush();

            expect(controller.$.data).toBe('foo');
        });
    });

    describe('onAddSave()', () => {
        it('should add a subrole', () => {
            controller.addData = {role: 'foo'};

            $httpBackend.expectPOST('RoleInherits', {role: 'foo'}).respond();
            $httpBackend.expectGET('RoleInherits').respond();
            controller.onAddSave();
            $httpBackend.flush();

            expect(controller.vnApp.showSuccess).toHaveBeenCalled();
        });
    });

    describe('onRemove()', () => {
        it('should remove a subrole', () => {
            controller.$.data = [
                {id: 1, name: 'foo'},
                {id: 2, name: 'bar'}
            ];

            $httpBackend.expectDELETE('RoleInherits/1').respond();
            controller.onRemove(controller.$.data[0]);
            $httpBackend.flush();

            expect(controller.$.data).toEqual([{id: 2, name: 'bar'}]);
            expect(controller.vnApp.showSuccess).toHaveBeenCalled();
        });
    });
});