public void LoadEditPPV_VODContent_NullModel_ValidateUserAbleToLoadDefaultPpvVodContentForEdit()
        {
            using (ShimsContext.Create())
            {
                // Given a user

                // And a default ppv and vod content for a subscriber
                var ppvVodModel = new PPV_VOD_SettingsModel
                {
                    PIN = null,
                    PINRequired = false,
                    PPVCap = null,
                    PPVPrivilege = DAL.Enums.SubscriberEnums.PPVPrivilegeEnum.None,
                    PPVResetDay = 0
                };

                // When loading the ppv and vod content for edit by passing null model
                var ppvVodController = DependencyResolver.Current.GetService<PPV_VODController>();
                var actionResponse = ppvVodController.LoadEditPPV_VODContent(null) as PartialViewResult;

                // Then the user receives a response
                Assert.IsNotNull(actionResponse, "LoadEditPPV_VODContent returned null");

                // And the response is successful
                Assert.AreEqual("EditPPV_VOD_Partial", actionResponse.ViewName, "ViewName does not match");

                // And the ppv vod settings matches with the default ppv vod settings model
                var jss = new JavaScriptSerializer();
                Assert.AreEqual(jss.Serialize(ppvVodModel), jss.Serialize(actionResponse.Model));
            }
        }
        public void UpdatePPVVOD_ValidateUserAbleToUpdatePPVPrivilegeFromCappedToUnlimited()
        {
            using (ShimsContext.Create())
            {
                // Given a user that has permission to update ppv vod settings
                ShimCurrentUser.AsUserDto = () => new UserDto();

                // And a valid  provisioned subscriber
                const string subId = "subId";

                // And the subscriber has ppv vod settings with ppv privilege capped
                var ppvVodModel = new PPV_VOD_SettingsModel
                {
                    PIN = "1234",
                    PINRequired = true,
                    PPVCap = "150.00",
                    PPVPrivilege = SubscriberEnums.PPVPrivilegeEnum.Capped,
                    PPVResetDay = 15
                };

                // And the user has loaded the subscriber
                var currentSubscriber = new ShimCurrentSubscriber
                {
                    SubIdGet = () => subId,
                    NameGet = () => "subname",
                    LocationIdGet = () => "locid",
                    ServiceEnabledGet = () => true,
                    FoundInBillingGet = () => true,
                    AccountTypeGet = () => AccountTypeDto.Residential,
                    CbrGet = () => "4250010001",
                    EmailGet = () => "*****@*****.**",
                    PINGet = () => ppvVodModel.PIN,
                    PPVCapGet = () => ppvVodModel.PPVCap,
                    PPVResetDayGet = () => ppvVodModel.PPVResetDay.ToString(CultureInfo.InvariantCulture),
                    PPVPrivilegeGet = () => ppvVodModel.PPVPrivilege,
                    ProvisionedServicesListGet = () => new List<ServiceDto>()
                };

                var session = new ShimHttpSessionState
                {
                    ItemGetString = s =>
                    {
                        if (s == "")
                            return null;
                        return null;
                    }
                };
                ShimHttpContext.AllInstances.SessionGet = (o) => session;
                ShimCurrentSubscriber.SessionInstanceGet = () => new ShimCurrentSubscriber();
                ShimCurrentSubscriber.GetInstance = () => currentSubscriber;

                // And the user edits ppv privilege from capped to unlimited
                var ppvVodModel4Update = new PPV_VOD_SettingsModel
                {
                    PIN = ppvVodModel.PIN,
                    PINRequired = ppvVodModel.PINRequired,
                    PPVCap = ppvVodModel.PPVCap,
                    PPVPrivilege = SubscriberEnums.PPVPrivilegeEnum.Unlimited,
                    PPVResetDay = ppvVodModel.PPVResetDay
                };

                // When updating the ppv vod settings
                var ppvVodController = DependencyResolver.Current.GetService<PPV_VODController>();

                ShimRosettianClient.AllInstances.UpdateSubscriberSubscriberDtoBooleanUserDto =
                    (myTestClient, mySubscriberDto, myOverriteService, myUserDto) => true;

                var actionResponse = ppvVodController.UpdatePPV_VOD(ppvVodModel4Update) as JsonResult;

                // Then the user receives a response
                Assert.IsNotNull(actionResponse, "UpdatePPV_VOD action method returned null");

                // And the response is successful
                var jss = new JavaScriptSerializer();
                var expectedResult = new
                {
                    status = "valid",
                    returnedPartial = "",
                }.ToJSON();
                Assert.AreEqual(jss.Serialize(expectedResult), jss.Serialize(actionResponse.Data.ToJSON()));
            }
        }
 private static void ValidatePpvSetting(PPV_VOD_SettingsModel expected, SubscriberDto actual)
 {
     Assert.IsTrue(actual.Accounts.Any(), "Subscriber should not be null!");
     var account = actual.Accounts[0];
     switch (account.PPVPrivilege)
     {
         case "2":
             account.PPVPrivilege = "Capped";
             break;
         case "1":
             account.PPVPrivilege = "Unlimited";
             break;
         case "0":
             account.PPVPrivilege = "None";
             break;
     }
     Assert.AreEqual(expected.PPVPrivilege.ToString(), actual.Accounts[0].PPVPrivilege, "PPVPrivilege does not match");
     Assert.AreEqual(expected.PPVCap, actual.Accounts[0].PPVCap, "PPVCape does not match");
     Assert.AreEqual(expected.PPVResetDay.ToString(CultureInfo.InvariantCulture), actual.Accounts[0].PPVResetDay, "PPVResetDay does not match");
     Assert.AreEqual(expected.PINRequired, actual.Accounts[0].PinRequired, "PinRequired does not match");
     Assert.AreEqual(expected.PIN, actual.Accounts[0].PIN, "PIN does not match");
 }
 private static void ValidatePpvSetting(PPV_VOD_SettingsModel expected, CurrentSubscriber actual)
 {
     Assert.AreEqual(expected.PPVPrivilege, actual.PPVPrivilege, "PPVPrivilege does not match");
     Assert.AreEqual(expected.PPVCap, actual.PPVCap, "PPVCape does not match");
     Assert.AreEqual(expected.PPVResetDay.ToString(CultureInfo.InvariantCulture), actual.PPVResetDay, "PPVResetDay does not match");
     Assert.AreEqual(expected.PINRequired, actual.PINRequired, "PinRequired does not match");
     Assert.AreEqual(expected.PIN, actual.PIN, "PIN does not match");
 }
        public void UpdatePPV_VOD_UpdatePPVPrivilegeFromCappedToUnlimited()
        {
            var sub = new SubscriberDto();
            try
            {
                // new sub data
                sub = DataHelper.NewSubscriberData();
                sub.CustomFields = DataHelper.DefaultCustomFields_Sub();
                sub.Accounts[0].PPVPrivilege = SubscriberEnums.PPVPrivilegeEnum.Capped.ToString();
                sub.Accounts[0].PPVCap = "150.00";
                sub.Accounts[0].PPVResetDay = "10";
                sub.Accounts[0].PinRequired = true;
                sub.Accounts[0].PIN = "2345";

                // create subscriber with PPVCap privilege
                DataHelper.RestoreSubscriber1(sub, false);

                // set current subscriber
                CurrentSubscriber.SetInstance(sub);

                // get current subscriber
                var currentSub = CurrentSubscriber.GetInstance();
                Assert.AreEqual(SubscriberEnums.PPVPrivilegeEnum.Capped, currentSub.PPVPrivilege);

                // model
                var ppvSettingsModel = new PPV_VOD_SettingsModel
                {
                    PPVPrivilege = currentSub.PPVPrivilege,
                    PPVCap = currentSub.PPVCap,
                    PPVResetDay = int.Parse(currentSub.PPVResetDay),
                    PINRequired = currentSub.PINRequired,
                    PIN = currentSub.PIN
                };

                // edit ppv settings
                ppvSettingsModel.PPVPrivilege = SubscriberEnums.PPVPrivilegeEnum.Unlimited;

                // call UpdatePPV_VOD action method
                var result = PpvVodController.UpdatePPV_VOD(ppvSettingsModel) as JsonResult;

                // validate return json result
                Assert.IsNotNull(result, "Json result is null");
                Assert.IsNotNull(result.Data, "Json result data is null");
                dynamic resultStatus = result.Data;
                Assert.AreEqual("valid", resultStatus.status as string, "Response status does not match!");

                // validate current subscriber in session updated with new ppvsetting as well.
                currentSub = CurrentSubscriber.GetInstance();
                Assert.IsNotNull(currentSub, "Model is null");
                ValidatePpvSetting(ppvSettingsModel, currentSub);

                // validate subscriber ppvsettings updated in db
                var actualSub = DataHelper.LoadSubscriber(sub.ID);
                Assert.IsNotNull(actualSub, "Subscriber should not be null!");
                ValidatePpvSetting(ppvSettingsModel, actualSub);
            }
            catch (System.Exception ex)
            {
                Assert.IsTrue(ex is AssertFailedException, ex.ToString());
                throw;
            }
            finally
            {
                DataHelper.DeleteSubscriber(sub.ID);
            }
        }