$admin->addUser($bob);
            $admin->addUser($joe);
            $admin->addUser($blah);
            $expectArray = array($bob, $joe, $blah);
            $actualArray = $admin->getUsers();
            expect($actualArray)->to->be->{$expectArray};
        });
    });
    describe('->removeUser()', function () {
        it('should return a list of users', function () {
            $admin = new Admin();
            expect($admin)->to->be->instanceof('Notes\\Domain\\Entity\\UserGroup\\Admin');
            $bob = new User(new StringLiteral('Bob'));
            $joe = new User(new StringLiteral('joe'));
            $blah = new User(new StringLiteral('Blah'));
            $admin->addUser($bob);
            $admin->addUser($joe);
            $admin->addUser($blah);
            $admin->removeUser($blah);
            $expectArray = array($bob, $joe);
            $actualArray = $admin->getUsers();
            expect($actualArray)->to->be->{$expectArray};
        });
    });
    describe('->getName()', function () {
        it('should return the default name of the group', function () {
            $admin = new Admin();
            expect($admin->getName())->equal('Admin');
        });
    });
});
         $user2 = new User(new Uuid(), $username1, $password2, $email3, $firstName4, $lastName5);
         $user1Key = $user1->getUserID();
         $user2Key = $user2->getUserID();
         $initialUsers = array($user1Key => $user1, $user2Key => $user2);
         $groupName = "cs3620";
         $actual = new Admin(new Uuid(), $groupName, $initialUsers);
         // create new Admin group with name cs3620 and add an array with 2 users as initial users
         expect($actual->getUser($user1Key))->equal($user1);
         $actual->removeUser($user1Key);
         expect($actual->containsUser($user1Key))->to->be->false;
     });
 });
 //todo figure out update
 describe('->updateUser(swagzilla)', function () {
     it('should update a user in an admin user group', function () {
         $actual = new Admin();
         $userKey = new Uuid();
         $username = "******";
         $password = "******";
         $email = "*****@*****.**";
         $firstName = "Gary";
         $lastName = "Grice";
         $user1 = new User($userKey, $username, $password, $email, $firstName, $lastName);
         $user1Key = $user1->getUserID();
         $actual->addUser($user1);
         expect($actual->getUser($user1Key))->equal($user1);
         $passwordU = "OldDannyBrown12\$";
         $emailU = "*****@*****.**";
         $updatedUser1 = new User($userKey, $username, $passwordU, $emailU, $firstName, $lastName);
         $actual->updateUser($user1Key, '', '', $passwordU, $emailU, '');
         expect($actual->getUser($user1Key)->getEmail())->equal($updatedUser1->getEmail());
<?php

use Notes\Domain\Entity\UserGroup\Admin;
use Notes\Domain\ValueObject\Permissions;
describe('Notes\\Domain\\Entity\\UserGroup\\Admin', function () {
    describe('->__construct()', function () {
        it('should return an Admin object', function () {
            $actual = new Admin();
            expect($actual)->to->be->instanceof('\\Notes\\Domain\\Entity\\UserGroup\\Admin');
        });
    });
    describe('->getPermissions()', function () {
        it('should return an array of permission constants', function () {
            $actual = new Admin();
            $permissions = $actual->getPermissions();
            expect(is_array($permissions))->equal(true);
            expect(count($permissions))->equal(4);
        });
    });
    describe('->hasPermission()', function () {
        it('should return whether or not Admin has permission', function () {
            $actual = new Admin();
            expect($actual->hasPermission(Permissions::ADD_USER))->equal(true);
            expect($actual->hasPermission(Permissions::READ_USER))->equal(true);
            expect($actual->hasPermission(Permissions::MODIFY_USER))->equal(true);
            expect($actual->hasPermission(Permissions::DELETE_USER))->equal(true);
        });
    });
});
            expect($actual->containsUser($user1Key))->to->be->false;
        });
    });
    describe('->updateUser(swagzilla)', function () {
        it('should add a user to an empty Admin usergroup', function () {
            $actual = new Admin();
            $username = "******";
            $password = "******";
            $email = "*****@*****.**";
            $firstName = "Gary";
            $lastName = "Grice";
            $user1 = new User($username, $password, $email, $firstName, $lastName);
            $user1Key = $user1->getUserID();
            $actual->addUser($user1);
            expect($actual->getUser($user1Key))->equal($user1);
            $passwordU = "OldDannyBrown12\$";
            $emailU = "*****@*****.**";
            $updatedUser1 = new User($username, $passwordU, $emailU, $firstName, $lastName);
            $actual->updateUser($user1Key, '', '', $passwordU, $emailU, '');
            expect($actual->getUser($user1Key))->equal($updatedUser1);
        });
    });
    describe('->setCanManipulateNotes()', function () {
        it('determines whether or not a group can manage users if a user is added to the banned Admin group then they cant create or edit notes', function () {
            $actual = new Admin();
            $actual->setName("banned");
            $actual->setCanManipulateNotes(false);
            expect($actual->canManageUsers())->to->be->false;
        });
    });
});