public void Create_New_Administrator_Using_Level_One_Admin()
 {
     Init_Admin_Level_One_And_Login();
     Execute_Test(() =>
     {
         Administrator demi_administrator = TestData.Get_Administrators_Data()[1];
         Assert.ThrowsException <NotAllowedAdminActionException>(() => administrator_level_one_facade.CreateNewAdmin(administrator_level_one_token, demi_administrator));
     });
 }
        public void Remove_Admin_Using_Level_One_Admin_Should_Throw_NotAllowedAdminActionException()
        {
            Init_Admin_Level_One_And_Login();
            Execute_Test(() =>
            {
                Administrator demi_admin = TestData.Get_Administrators_Data()[1];
                int admin_id             = administrator_facade.CreateNewAdmin(administrator_token, demi_admin);

                demi_admin.Id = admin_id;

                Assert.ThrowsException <NotAllowedAdminActionException>(() => administrator_level_one_facade.RemoveAdmin(administrator_level_one_token, demi_admin));
            });
        }
        private void Init_Admin_Level_One_And_Login()
        {
            _logger.Debug($"Start Init Admin Level One Tests Data");

            Administrator admin_level_one    = TestData.Get_Administrators_Data()[0];
            int           admin_level_one_id = administrator_facade.CreateNewAdmin(administrator_token, admin_level_one);

            system.TryLogin(admin_level_one.User.UserName, admin_level_one.User.Password, out ILoginToken token, out FacadeBase facade);
            administrator_level_one_token  = token as LoginToken <Administrator>;
            administrator_level_one_facade = facade as LoggedInAdministratorFacade;

            _logger.Debug($"End Init Admin Level One Tests Data");
        }
        public void Create_Two_Administrators_With_Same_Email()
        {
            Execute_Test(() =>
            {
                Administrator demi_administrator = TestData.Get_Administrators_Data()[0];
                Administrator demi_administrator_with_same_email = TestData.Get_Administrators_Data()[4];

                int admin_id = administrator_facade.CreateNewAdmin(administrator_token, demi_administrator);
                Assert.AreEqual(admin_id, 1);

                Assert.ThrowsException <RecordAlreadyExistsException>(() => administrator_facade.CreateNewAdmin(administrator_token, demi_administrator_with_same_email));
            });
        }
        public void Create_And_Get_New_Administrator()
        {
            Execute_Test(() =>
            {
                Administrator demi_administrator = TestData.Get_Administrators_Data()[0];
                int admin_id = administrator_facade.CreateNewAdmin(administrator_token, demi_administrator);
                Assert.AreEqual(admin_id, 1);
                demi_administrator.Id = admin_id;
                Administrator administrator_from_db = administrator_facade.GetAdminById(administrator_token, admin_id);

                TestData.CompareProps(administrator_from_db, demi_administrator);
            });
        }
        public void Remove_Admin()
        {
            Execute_Test(() =>
            {
                Administrator demi_admin = TestData.Get_Administrators_Data()[0];
                int admin_id             = administrator_facade.CreateNewAdmin(administrator_token, demi_admin);

                demi_admin.Id = admin_id;

                administrator_facade.RemoveAdmin(administrator_token, demi_admin);

                Assert.AreEqual(administrator_facade.GetAllAdministrators(administrator_token).Count, 0);
            });
        }
        public void Update_Admin_Using_Level_One_Admin()
        {
            Init_Admin_Level_One_And_Login();
            Execute_Test(() =>
            {
                Administrator demi_admin = TestData.Get_Administrators_Data()[1];

                int admin_id         = administrator_facade.CreateNewAdmin(administrator_token, demi_admin);
                demi_admin.Id        = admin_id;
                demi_admin.FirstName = "Changed";
                demi_admin.LastName  = "Name";
                demi_admin.Level     = AdminLevel.Main_Admin;

                Assert.ThrowsException <NotAllowedAdminActionException>(() => administrator_level_one_facade.UpdateAdminDetails(administrator_level_one_token, demi_admin));
            });
        }
        public void Update_Admin()
        {
            Execute_Test(() =>
            {
                Administrator demi_admin = TestData.Get_Administrators_Data()[0];

                int admin_id         = administrator_facade.CreateNewAdmin(administrator_token, demi_admin);
                demi_admin.Id        = admin_id;
                demi_admin.FirstName = "Changed";
                demi_admin.LastName  = "Name";
                demi_admin.Level     = AdminLevel.Mid_Level_Admin;

                administrator_facade.UpdateAdminDetails(administrator_token, demi_admin);

                Administrator updated_admin = administrator_facade.GetAdminById(administrator_token, admin_id);

                TestData.CompareProps(demi_admin, updated_admin);
            });
        }
        public void Create_And_Get_List_Of_Administrators()
        {
            Execute_Test(() =>
            {
                Administrator[] data = TestData.Get_Administrators_Data();
                Administrator[] demi_administrators = { data[0], data[1], data[2] };
                for (int i = 0; i < demi_administrators.Length; i++)
                {
                    int admin_id = administrator_facade.CreateNewAdmin(administrator_token, demi_administrators[i]);
                    Assert.AreEqual(admin_id, i + 1);
                    demi_administrators[i].Id = admin_id;
                }

                IList <Administrator> administrators_from_db = administrator_facade.GetAllAdministrators(administrator_token);
                Assert.AreEqual(demi_administrators.Length, administrators_from_db.Count);
                for (int i = 0; i < administrators_from_db.Count; i++)
                {
                    TestData.CompareProps(administrators_from_db[i], demi_administrators[i]);
                }
            });
        }