public void AssignEquipmentToDivers(CompositeEquipment allEquipment, Dive dive)
 {
     foreach (Diver diver in diversList)
     {
         allEquipment.EquipDiver(diver, dive);
     }
     allEquipment.FindBasicEquipmentForDive(basicEquipment, dive);
 }
        public void ActivateResidentialGateway_ValidateSuccessScenario()
        {
            using (ShimsContext.Create())
            {
                // Fake the session state for HttpContext
                var session = new ShimHttpSessionState
                {
                    ItemGetString = s =>
                    {
                        if (s == "")
                            return null;
                        return null;
                    }
                };

                //Arrange
                var myContext = new SIMPLTestContext();

                //Build FakeDto
                var fakeUserDto = myContext.GetFakeUserDtoObject();

                //Fake call to CurrentUser.AsUserDto()
                ShimCurrentUser.AsUserDto = () => fakeUserDto;

                // Fake the HttpContext
                var context = new ShimHttpContext();
                ShimHttpContext.CurrentGet = () => context;

                // When the Fake HttpContext is called, provide the fake session state
                ShimHttpContext.AllInstances.SessionGet = o => session;

                var equipmentDto = new CompositeEquipment();

                ShimBusinessFacade.AllInstances.LoadCompositeEquipmentSearchFieldsDtoUserDto = (facade, dto, arg3) =>
                equipmentDto;

                ShimCurrentSubscriber.AllInstances.SubIdGet = o => "89451";
                ShimCurrentSubscriber.AllInstances.LocationIdGet = o => "0000453";
                ShimCurrentSubscriber.AllInstances.WanIpAddressGet = o => "12:12:12:12";
                ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = (client, subId, userDto) => new SubscriberDto();
                ShimCurrentSubscriber.UpdateWanIpAddressString = (myWanIpAddress) => { };

                ShimRosettianClient.AllInstances.ActivateResidentialGatewayStringStringUserDto =
                    (client, locationId, myDeviceId, userDto) => true;

                ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto =
                    (client, searchFields, userDto) => new List<EquipmentDto>();

                var deviceId = "PACE1122333";

                // create phone controller instance
                var controller = DependencyResolver.Current.GetService<ResidentialGatewayController>();
                var result = controller.ActivateResidentialGateway(deviceId, null);

                // 1st Assert
                Assert.IsNotNull(result, "ResidentialGateway.Update() returned null");

                var jsonResult = result as JsonResult;

                // 2nd Assert
                Assert.IsNotNull(jsonResult, "Cast to JsonResult result in null result");

                // 3rd Assert
                Assert.IsNotNull(jsonResult.Data, "jsonResult.Data is null");

                // 4th Assert
                Assert.AreEqual("valid", ((dynamic)jsonResult.Data).status, "Invalid status code returned from controller");
            }
        }
        public void RemoveResidentialGateway_ValidateSuccessScenario()
        {
            using (ShimsContext.Create())
            {
                //Arrange
                var myContext = new SIMPLTestContext();

                //Build FakeDto
                var fakeUserDto = myContext.GetFakeUserDtoObject();

                //Fake call to CurrentUser.AsUserDto()
                ShimCurrentUser.AsUserDto = () => fakeUserDto;

                // Fake the HttpContext
                var context = new ShimHttpContext();
                ShimHttpContext.CurrentGet = () => context;

                // Fake the session state for HttpContext
                var session = new ShimHttpSessionState
                {
                    ItemGetString = s =>
                    {
                        if (s == "")
                            return null;
                        return null;
                    }
                };

                // When the Fake HttpContext is called, provide the fake session state
                ShimHttpContext.AllInstances.SessionGet = (o) => session;

                var fakeServiceAccount = myContext.GetFakeServiceAccountDto();
                var listFakeServiceAccounts = new List<ServiceAccountDto>
                {
                    fakeServiceAccount
                };

                //Expected result
                const string expectedBaseModelValue = "A5550";
                const string expectedSerialNumber = "PACE99999991";
                const string expectedLocationId = "locId";

                ShimCurrentSubscriber.AllInstances.PhoneServicesListGet = (o) => listFakeServiceAccounts;
                ShimCurrentSubscriber.AllInstances.ServiceAccountListGet = (myTest) => listFakeServiceAccounts;
                ShimCurrentSubscriber.AllInstances.CurrentServiceAccountGet = (myTest) => fakeServiceAccount;
                ShimCurrentSubscriber.AllInstances.SubIdGet = (o) => "89451";
                ShimCurrentSubscriber.AllInstances.LocationIdGet = (o) => expectedLocationId;

                // set WanIpAddress
                ShimCurrentSubscriber.AllInstances.WanIpAddressGet = o => "12:12:12:12";
                ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = (client, subId, userDto) => new SubscriberDto();
                ShimCurrentSubscriber.UpdateWanIpAddressString = (myWanIpAddress) => { };

                var RgType = new EquipmentTypeDto
                {
                    ONTModel = new ONTModelDto
                    {
                        BaseModel = expectedBaseModelValue
                    },
                    Category = EquipmentCategoryDto.RGDataPort
                };

                var equipmentDataDto = new EquipmentDto
                {
                    SerialNumber = expectedSerialNumber + "D01",
                    LocationId = expectedLocationId,
                    Type = RgType,
                    Status = "ACTIVE"
                };

                var equipmentPhoneDto01 = new EquipmentDto
                {
                    SerialNumber = expectedSerialNumber + "P01",
                    LocationId = expectedLocationId,
                    Type = RgType,
                    Status = "ACTIVE"
                };

                var equipmentPhoneDto02 = new EquipmentDto
                {
                    SerialNumber = expectedSerialNumber + "P02",
                    LocationId = expectedLocationId,
                    Type = RgType,
                    Status = "ACTIVE"
                };

                var searchEquipmentsResult = new List<EquipmentDto>();
                searchEquipmentsResult.Add(equipmentDataDto);
                searchEquipmentsResult.Add(equipmentPhoneDto01);
                searchEquipmentsResult.Add(equipmentPhoneDto02);

                ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto =
                    (myTestClient, mySearchFields, myUserDto) => searchEquipmentsResult;

                ShimRosettianClient.AllInstances.ReturnToHeadendListOfStringUserDto = (myTestClient, mySerialNumberList, myUserDto) => true;

                var compositeEquipment = new CompositeEquipment
                {
                    ErrorDetails = new ErrorDetails()
                    {
                        Code = ResidentialGatewayErrorCode.GatewayNotFound.ToString(),
                        Message = @"Active RG not Found on Account. Provide the RG serial number and click the button below to associate."
                    }
                };
                ShimBusinessFacade.AllInstances.LoadCompositeEquipmentSearchFieldsDtoUserDto =
                    (myFacade, mySearchFields, arg3) => compositeEquipment;

                // First Act
                var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>();
                var result = residentialController.RemoveResidentialGateway("deviceID");

                // First Assert
                Assert.IsNotNull(result, "Returned Json result with rendered partial view is null.");
                Assert.IsTrue(result is JsonResult, "result is not a JsonResult");

                // Second Act
                var resultJson = result as JsonResult;

                // Second Assert
                Assert.IsNotNull(resultJson, "Returned Json result is null.");
                dynamic resultData = resultJson.Data;
                var status = resultData.status as string;
                var errorMessage = string.Empty;
                if (status == "error")
                {
                    errorMessage = resultData.errorMessage;
                }
                Assert.AreEqual("valid", status, "RemoveResidentialGateway_HappyPath() - unexpected status from RemoveResidentialGateway() - {0}", errorMessage);
                var renderedPartial = resultData.returnedPartial as string;
                Assert.IsNotNull(renderedPartial, "Prerendered partial is null.");
            }
        }
        public void PollNewDevices_ValidateFailedScenario()
        {
            using (ShimsContext.Create())
            {
                //Arrange
                var myContext = new SIMPLTestContext();

                //Build FakeDto
                var fakeUserDto = myContext.GetFakeUserDtoObject();

                //Fake call to CurrentUser.AsUserDto()
                ShimCurrentUser.AsUserDto = () => fakeUserDto;

                // Fake the HttpContext
                var context = new ShimHttpContext();
                ShimHttpContext.CurrentGet = () => context;

                // Fake the session state for HttpContext
                var session = new ShimHttpSessionState
                {
                    ItemGetString = s =>
                    {
                        if (s == "")
                            return null;
                        return null;
                    }
                };

                // When the Fake HttpContext is called, provide the fake session state
                ShimHttpContext.AllInstances.SessionGet = (o) => session;

                var equipmentDto = new CompositeEquipment();

                ShimBusinessFacade.AllInstances.LoadCompositeEquipmentSearchFieldsDtoUserDto = (facade, dto, arg3) =>
                equipmentDto;

                ShimErrorLoggingService.AllInstances.LogErrorException = (myClient, myException) => { };

                var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>();
                var result = residentialController.PollNewDevices();
                Assert.IsNotNull(result, "Partial view result returned is null.");
                Assert.IsTrue(result is JsonResult, "result is not JsonResult");

                var resultJsonResult = result as JsonResult;
                Assert.IsNotNull(resultJsonResult, "Partial view result returned is null.");
                dynamic dynResult = resultJsonResult.Data;
                Assert.AreEqual("error", dynResult.status, "Status doesn't match expected");
                Assert.AreEqual("Error polling for devices: Object reference not set to an instance of an object.", dynResult.errorMessage, "ErrorMessage doesn't match expected");
            }
        }
        public void ToResidentialGatewayModel_WithoutListOfPhones()
        {
            using (ShimsContext.Create())
            {
                var ipAddress = "999.999.999.999";
                var ce = new CompositeEquipment();
                const string expectedLocationId = "123456789";

                var session = new ShimHttpSessionState
                {
                    ItemGetString = s =>
                    {
                        return null;
                    }
                };

                //Arrange
                var myContext = new SIMPLTestContext();

                //Build FakeDto
                var fakeUserDto = myContext.GetFakeUserDtoObject();

                //Fake call to CurrentUser.AsUserDto()
                ShimCurrentUser.AsUserDto = () => fakeUserDto;

                // Fake the HttpContext
                var context = new ShimHttpContext();
                ShimHttpContext.CurrentGet = () => context;

                // When the Fake HttpContext is called, provide the fake session state
                ShimHttpContext.AllInstances.SessionGet = o => session;

                ShimCurrentSubscriber.AllInstances.SubIdGet = o => "89451";
                ShimCurrentSubscriber.AllInstances.LocationIdGet = o => expectedLocationId;
                ShimCurrentSubscriber.AllInstances.WanIpAddressGet = o => ipAddress;
                ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = (client, subId, userDto) => new SubscriberDto();
                ShimCurrentSubscriber.UpdateWanIpAddressString = (myWanIpAddress) => { };
                ShimBusinessFacade.AllInstances.LoadCompositeEquipmentSearchFieldsDtoUserDto = (facade, dto, arg3) => ce;

                var rgModel = ce.ToResidentialGatewayModel(ipAddress);

                Assert.IsNotNull(rgModel);
                Assert.AreEqual(ipAddress, rgModel.IPAddress);
            }
        }