public void ProvisioningService_GetSiteCollectionIdTenSitesPerCollection_ReturnsCorrectResult()
        {
            _mockParameterService.Setup(s => s.GetParameterByNameAndCache <int>(It.Is <string>(m => m == ParameterNames.SiteProvisionerSitesPerSiteCollection))).Returns(10);
            var result = _provisioningService.GetSiteCollectionId();

            Assert.AreEqual(1, result);
            _mockParameterService.Verify(v => v.GetParameterByName <int>(ParameterNames.SiteProvisionerCurrentSiteCollectionId), Times.Never);
            _mockParameterService.Verify(v => v.SaveParameter <int>(ParameterNames.SiteProvisionerCurrentSiteCollectionId, It.IsAny <int>()), Times.Never);
        }
        public void Execute(Task task)
        {
            Debug.WriteLine("Fujitsu.AFC.Provisioning.CaseSiteProvisioning.cs -> Processing Started.");
            var prfMonMethod = new PrfMon();

            var maximumNumberOfUnallocatedSites   = _parameterService.GetParameterByNameAndCache <int>(ParameterNames.SiteProvisionerTotalUnallocatedSitesMaximum);
            var maximumNumberOfSitesPerCollection = _parameterService.GetParameterByNameAndCache <int>(ParameterNames.SiteProvisionerSitesPerSiteCollection);
            var totalNumberOfUnallocatedSites     = _provisioningService.GetNumberOfUnallocatedSites();

            if (totalNumberOfUnallocatedSites < maximumNumberOfUnallocatedSites)
            {
                var currentSiteCollectionId = _provisioningService.GetSiteCollectionId();

                while (totalNumberOfUnallocatedSites < maximumNumberOfUnallocatedSites)
                {
                    var numberOfSitesProvisionedWithinSiteCollection = _provisioningService.GetNumberOfProvisionedSitesWithinCollection(currentSiteCollectionId);
                    if (numberOfSitesProvisionedWithinSiteCollection == 0)
                    {
                        currentSiteCollectionId = _provisioningService.ProvisionSiteCollection(currentSiteCollectionId);
                        _provisioningService.ConfigureSiteCollection(currentSiteCollectionId);
                        _provisioningService.CreateSiteAudit(currentSiteCollectionId, task);
                    }

                    _provisioningService.ProvisionSite(currentSiteCollectionId, task);

                    numberOfSitesProvisionedWithinSiteCollection++;
                    totalNumberOfUnallocatedSites++;

                    if (numberOfSitesProvisionedWithinSiteCollection >= maximumNumberOfSitesPerCollection && totalNumberOfUnallocatedSites < maximumNumberOfUnallocatedSites)
                    {
                        currentSiteCollectionId = _provisioningService.GetSiteCollectionId();
                    }
                }
            }
            Debug.WriteLine("Fujitsu.AFC.Provisioning.CaseSiteProvisioning.cs -> Completed Processing. Duration: {0:0.000}s", prfMonMethod.Stop());
        }