public void Search_Subscriber_When_Provisioning_Throws_TimeoutException()
        {
            using (ShimsContext.Create())
            {
                //Arrange
                var myContext = new SIMPLTestContext();

                var fakeUserDto = myContext.GetFakeUserDtoObject();
                ShimCurrentUser.AsUserDto = () => fakeUserDto;

                //search criteria
                var subscriberSearchViewModel = new SubscriberSearchViewModel
                {

                    SubscriberID = "370001704986",
                    State ="CT",
                    ProvisionedSearch = true
                };

                //expected search results

                var expectedResult = new
                {
                    status = "error",
                    isModal = false,
                    searchResults = new List<SubscriberSearchResult>(),
                    provisioned = true

                }.ToJSON();

                var billingSearchSubscriberResponse = new BillingSearchSubscriberResponse()
                {
                    new BillingSearchSubscriber()
                    {
                        USI = "370001704986",
                        SubscriberName = "BillingTestUserName"
                    }
                };

                ShimErrorLoggingService.AllInstances.LogErrorNoContextException = delegate { };
                //Search Subscriber from Triad
                ShimProvisioningServiceClient.AllInstances.SearchSubscribersSearchFieldsUser =
                    delegate
                    {
                        throw new TimeoutException("Provisioning service request timed out ");
                    };

                //Search Subscriber from Dpi
                ShimBillingServiceClient.AllInstances.SearchSubscriberBillingSearchFieldsUser =
                    delegate
                    {
                        return billingSearchSubscriberResponse;
                    };

                var searchController = DependencyResolver.Current.GetService<SearchController>();

                var actionResult = searchController.SearchCompositeSubscribers(subscriberSearchViewModel) as JsonResult;

                Assert.IsNotNull(actionResult, "SearchSubscribers  returned null");

                var actualJsonResult = actionResult.Data.ToJSON().Replace(" ", "");

                Assert.AreEqual(expectedResult, actualJsonResult);

            }
        }
        public void Search_Subscriber_Using_BillingOnlyFields()
        {
            using (ShimsContext.Create())
            {
                var myContext = new SIMPLTestContext();

                ShimCurrentUser.AsUserDto = new SIMPLTestContext().GetFakeUserDtoObject;

                var subscriberSearchViewModel = new SubscriberSearchViewModel
                {
                    AccountNumber = DataConversion(Convert.ToString(TestContext.DataRow["AccountNumber"])),
                    OrderNumber = DataConversion(Convert.ToString(TestContext.DataRow["OrderNumber"])),
                    DslamOltClli = DataConversion(Convert.ToString(TestContext.DataRow["DslamOltClli"])),
                    DslamOltPort = DataConversion(Convert.ToString(TestContext.DataRow["DslamOltPort"])),
                    State="CT"

                };

                var expectedSearchResults = new List<SubscriberSearchResult>();
                var record1 = new SubscriberSearchResult
                {
                    ID = "1",
                    Name = "Subscriber_1",
                    ExistsInBilling = true,
                    ExistsInProvisioning = false,
                    DataSource = SubscriberEnums.SubscriberDataSource.Billing,
                    Environment = "Test",
                    StateName = null
                };

                expectedSearchResults.Add(record1);

                var expectedResult = new
                {
                    status = "partialsuccessbilling",
                    isModal = false,
                    searchResults = expectedSearchResults,
                    provisioned = false

                }.ToJSON();

                var fakeSubscriberList = new BillingSearchSubscriberResponse();
                var fakeSubscriber = new BillingSearchSubscriber();
                fakeSubscriber.USI = record1.ID;
                fakeSubscriber.SubscriberName = record1.Name;
                fakeSubscriber.Environment = "Test";
                fakeSubscriberList.Add(fakeSubscriber);

                ShimErrorLoggingService.AllInstances.LogErrorNoContextException = delegate { };

                ShimBillingServiceClient.AllInstances.SearchSubscriberBillingSearchFieldsUser =
                    delegate
                    {
                        return fakeSubscriberList;
                    };

                bool isProvisioningMethodCalled = false;
                ShimProvisioningServiceClient.AllInstances.SearchSubscribersSearchFieldsUser =
                   delegate
                   {
                       isProvisioningMethodCalled = true;
                       return new SubscriberCollection();
                   };

                var searchController = DependencyResolver.Current.GetService<SearchController>();

                var actionResult = searchController.SearchCompositeSubscribers(subscriberSearchViewModel) as JsonResult;

                Assert.IsNotNull(actionResult, "SearchSubscribers  returned null");

                var actualJsonResult = actionResult.Data.ToJSON().Replace(" ", "");

                Assert.IsFalse(isProvisioningMethodCalled, "Provisioning service method should not be called.");
                Assert.AreEqual(expectedResult, actualJsonResult);
            }
        }
        public void Search_Subscriber_Using_Viryanet_Call_ID()
        {
            using (ShimsContext.Create())
            {
                var myContext = new SIMPLTestContext();

                ShimCurrentUser.AsUserDto = new SIMPLTestContext().GetFakeUserDtoObject;

                var fakeCallID = "7777";

                var subscriberSearchViewModel = new SubscriberSearchViewModel
                {
                    CallID = fakeCallID,
                    State = "CT"
                };

                var expectedSearchResults = new List<SubscriberSearchResult>();
                var record = new SubscriberSearchResult
                {
                    ID = "1",
                    Name = "ViryanetTestName",
                    ExistsInBilling = true,
                    DataSource = SubscriberEnums.SubscriberDataSource.Billing,
                    Environment = "Test"
                };
                expectedSearchResults.Add(record);

                var expectedResult = new
                {
                    status = "partialsuccessbilling",
                    isModal = false,
                    searchResults = expectedSearchResults,
                    provisioned = false

                }.ToJSON();

                var fakeSubscriberList = new BillingSearchSubscriberResponse();
                var fakeSubscriber = new BillingSearchSubscriber();
                fakeSubscriber.USI = "1";
                fakeSubscriber.SubscriberName = "ViryanetTestName";
                fakeSubscriber.Environment = "Test";
                fakeSubscriberList.Add(fakeSubscriber);

                ShimErrorLoggingService.AllInstances.LogErrorNoContextException = delegate { };
                //Search Subscriber from provisioning
                ShimProvisioningServiceClient.AllInstances.SearchSubscribersSearchFieldsUser =
                    delegate
                    {
                        return new SubscriberCollection();
                    };

                //Search Subscriber from billing
                ShimBillingServiceClient.AllInstances.SearchSubscriberBillingSearchFieldsUser =
                    delegate
                    {
                        return fakeSubscriberList;
                    };

                var searchController = DependencyResolver.Current.GetService<SearchController>();

                var actionResult = searchController.SearchCompositeSubscribers(subscriberSearchViewModel) as JsonResult;

                Assert.IsNotNull(actionResult, "SearchSubscribers  returned null");

                var actualJsonResult = actionResult.Data.ToJSON().Replace(" ", "");

                Assert.AreEqual(expectedResult, actualJsonResult);
            }
        }
        public void Search_Subscriber_Exists_Only_In_Billing_Using_TN()
        {
            using (ShimsContext.Create())
            {
                var myContext = new SIMPLTestContext();

                ShimCurrentUser.AsUserDto = new SIMPLTestContext().GetFakeUserDtoObject;

                var subscriberId = "370001704986";
                var subscriberSearchViewModel = new SubscriberSearchViewModel
                {
                    PhoneNumber = "999999999",
                    State = "CT"
                };

                var expectedSearchResults = new[]
                {
                    new
                    {
                        ID = subscriberId,
                        ExistsInBilling = true,
                        ExistsInProvisioning = false,
                        Phone = "",
                        Name = "BillingTestUserName",
                        LocationID = subscriberSearchViewModel.LocationID,
                        AddressLine1 = subscriberSearchViewModel.Address1,
                        AddressLine2 = subscriberSearchViewModel.Address2,
                        CityName = subscriberSearchViewModel.City,
                        StateName = (string)null,
                        ZipCode = subscriberSearchViewModel.Zip,
                        DataSource=2,
                        Environment = "",
                        Status = 0
                    }
                };

                var expectedResult = new
                {
                    status = "partialsuccessbilling",
                    isModal = false,
                    searchResults = expectedSearchResults,
                    provisioned = false

                }.ToJSON();

                //fake the billing response
                var fakeBillingSearchSubscriberResponse = new BillingSearchSubscriberResponse
                {
                    new BillingSearchSubscriber
                         {
                            SubscriberName = "BillingTestUserName",
                            USI = subscriberId,
                        }
                };

                //Search Subscriber from provisioning  returns null
                ShimProvisioningServiceClient.AllInstances.SearchSubscribersSearchFieldsUser =
                    delegate
                    {
                        return new SubscriberCollection();
                    };

                //Search Subscriber from billing
                ShimBillingServiceClient.AllInstances.SearchSubscriberBillingSearchFieldsUser =
                    delegate
                    {
                        return fakeBillingSearchSubscriberResponse;
                    };

                var actionResult = SearchControllerForTests.SearchCompositeSubscribers(subscriberSearchViewModel) as JsonResult;

                Assert.IsNotNull(actionResult, "SearchSubscribers  returned null");

                var actualJsonResult = actionResult.Data.ToJSON().Replace(" ", "");

                Assert.AreEqual(expectedResult, actualJsonResult);
            }
        }