public void GetCurrent_CustomServiceLocatorReloadsSiteOnChange()
        {
            //Arrange
            var f = new BSPConfiguredFarm();;
            var sharepointLocator = new TestableSharePointServiceLocator();

            //Arrange
            BIServiceLocatorFactory.Reset();
            BIServiceLocatorFactory.LocatorTypeToUse = typeof(FakeLocator);
            var farmTypeMappings = new List <TypeMapping> {
                TypeMapping.Create <IServiceLocatorFactory, BIServiceLocatorFactory>()
            };

            sharepointLocator.FarmTypeMappings = farmTypeMappings;
            var expectedSite = new BSPSite();
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };

            expectedSite.ID = TestsConstants.TestGuid;
            var time = new DateTime(2010, 5, 30);

            sharepointLocator.SiteTypeMappings = typeMappings;
            MDateTime.NowGet = () => time;
            var target = sharepointLocator.GetCurrent(expectedSite);     // get current to make sure it is in memory

            time = time.AddSeconds(SharePointServiceLocator.SiteCachingTimeoutInSeconds + 1);
            sharepointLocator.SiteLastUpdatedRetVal = time;

            //Act
            var targetLogger = sharepointLocator.GetCurrent(expectedSite).GetInstance <ILogger>();

            //Assert
            Assert.IsTrue(BIServiceLocatorFactory.LoadCount == 2);
        }
        public void GetCurrent_SiteUsesCachedInstance()
        {
            //Setup
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };

            BSPFarm.SetLocal();
            var expectedSite = new BSPSite {
                ID = TestsConstants.TestGuid
            };

            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings      = new List <TypeMapping>();
            sharepointLocator.SiteTypeMappings      = typeMappings;
            sharepointLocator.SiteLastUpdatedRetVal = DateTime.Now;

            var target = sharepointLocator.GetCurrent(expectedSite);        // get current to make sure it is in memory

            Assert.IsTrue(sharepointLocator.SiteGotTypeMappingsFromConfig); //getting from config and populating cache

            sharepointLocator.SiteGotTypeMappingsFromConfig = false;        // reset getting config...

            //Act
            sharepointLocator.GetCurrent(expectedSite);


            //Assert
            Assert.IsFalse(sharepointLocator.SiteGotTypeMappingsFromConfig);
        }
        public void GetCurrent_SiteTimeoutReloadDoesntDropProgrammaticOverride()
        {
            //Setup
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };

            BSPFarm.SetLocal();
            var expectedSite = new BSPSite {
                ID = TestsConstants.TestGuid
            };
            var time = new DateTime(2010, 5, 30);

            var sharepointLocator = new TestableSharePointServiceLocator
            {
                FarmTypeMappings = new List <TypeMapping>(),
                SiteTypeMappings = typeMappings
            };

            MDateTime.NowGet = () => time;
            var target = sharepointLocator.GetCurrent(expectedSite);     // get current to make sure it is in memory

            time = time.AddSeconds(SharePointServiceLocator.SiteCachingTimeoutInSeconds + 1);
            sharepointLocator.SiteLastUpdatedRetVal = time;

            //Act
            var initialLogger = target.GetInstance <ILogger>();

            ((ActivatingServiceLocator)target).RegisterTypeMapping <ILogger, SBaseLogger>();
            var targetLogger = sharepointLocator.GetCurrent(expectedSite).GetInstance <ILogger>();

            //Assert
            Assert.IsInstanceOfType(initialLogger, typeof(SharePointLogger));
            Assert.IsInstanceOfType(targetLogger, typeof(SBaseLogger));
        }
        public void GetCurrent_LoadsSiteTypeMappings()
        {
            //Arrange
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };
            var siteTypeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SBaseLogger>()
            };

            BSPFarm.SetLocal();
            var expectedSite = new BSPSite();

            expectedSite.ID = TestsConstants.TestGuid;

            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = typeMappings;
            sharepointLocator.SiteTypeMappings = siteTypeMappings;

            //Act
            var target       = sharepointLocator.GetCurrent(expectedSite);
            var targetLogger = target.GetInstance <ILogger>();

            //Assert
            Assert.IsInstanceOfType(targetLogger, typeof(SBaseLogger));
        }
        public void GetCurrent_AddNewFarmMappingAlreadyDefinedInSiteUsesSite()
        {
            //Setup
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };

            BSPFarm.SetLocal();
            var expectedSite = new BSPSite {
                ID = TestsConstants.TestGuid
            };

            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = new List <TypeMapping>();
            sharepointLocator.SiteTypeMappings = typeMappings;

            var target      = sharepointLocator.GetCurrent(expectedSite); // get current to make sure it is in memory
            var farmLocator = sharepointLocator.GetCurrent() as ActivatingServiceLocator;

            //Act
            farmLocator.RegisterTypeMapping <ILogger, SBaseLogger>();
            var targetLogger = target.GetInstance <ILogger>();

            //Assert
            Assert.IsInstanceOfType(targetLogger, typeof(SharePointLogger));
        }
        public void GetCurrent_WithContext_UsesSiteMappings()
        {
            //Arrange
            BSPFarm.SetLocal();
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };
            var siteTypeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SBaseLogger>()
            };
            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = typeMappings;
            sharepointLocator.SiteTypeMappings = siteTypeMappings;

            var site = new MSPSite()
            {
                IDGet = () => TestsConstants.TestGuid,
            };

            var context = new MSPContext
            {
                SiteGet = () => site,
            };

            MSPContext.CurrentGet = () => context;

            //Act
            var target = sharepointLocator.GetCurrent().GetInstance <ILogger>();

            // Assert
            Assert.IsInstanceOfType(target, typeof(SBaseLogger));
        }
        public void SiteCachingTimeoutInSeconds_WithConfiguration_ReturnsConfiguredValue()
        {
            //Arrange
            int expected          = 30;
            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.SiteCachingTimeoutInSecondsRetVal = 30;

            //Act
            int target = sharepointLocator.GetSiteCacheInterval();

            //Assert
            Assert.AreEqual <int>(expected, target);
        }
        public void GetCurrent_ServiceLocatorIsLoadedWithTypes()
        {
            //Arrange
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ISomething, Something>("key")
            };
            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = typeMappings;
            BSPFarm.SetLocal();

            //Act
            var target = sharepointLocator.GetCurrent() as ActivatingServiceLocator;

            //Assert
            Assert.IsInstanceOfType(SharePointServiceLocator.GetCurrent(), typeof(ActivatingServiceLocator));
            Assert.IsTrue(target.IsTypeRegistered <ISomething>());
        }
        public void GetCurrent_CanOverrideDefaultTypemapping()
        {
            //Arrange
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SBaseLogger>()
            };

            BSPFarm.SetLocal();
            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = typeMappings;

            //Act
            var target = sharepointLocator.GetCurrent().GetInstance <ILogger>();

            //Assert
            Assert.IsInstanceOfType(target, typeof(SBaseLogger));
        }
        public void GetCurrent_CanRegisterDifferentServiceLocator()
        {
            //Arrange
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <IServiceLocatorFactory, BIServiceLocatorFactory>()
            };

            BSPFarm.SetLocal();
            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = typeMappings;


            //Act
            IServiceLocator target = sharepointLocator.GetCurrent();

            //Assert
            Assert.IsInstanceOfType(target, typeof(SIServiceLocator));
        }
        public void GetCurrent_LoadsFarmTypeMappings()
        {
            //Setup
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };

            BSPFarm.SetLocal();

            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = typeMappings;

            //Act
            var target       = sharepointLocator.GetCurrent();
            var targetLogger = target.GetInstance <ILogger>();

            //Assert
            Assert.IsInstanceOfType(targetLogger, typeof(SharePointLogger));
        }
        public void GetCurrent_WithoutContext_UsesFarmMappings()
        {
            //Arrange
            BSPFarm.SetLocal();
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };
            var siteTypeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SBaseLogger>()
            };
            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = typeMappings;
            sharepointLocator.SiteTypeMappings = siteTypeMappings;


            //Act
            var target = sharepointLocator.GetCurrent().GetInstance <ILogger>();

            // Assert
            Assert.IsInstanceOfType(target, typeof(SharePointLogger));
        }
        public void GetCurrent_SiteTimeoutReloadCachesInstanceAfterReload()
        {
            //Setup
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };
            var f = new BSPConfiguredFarm();

            var expectedSite = new BSPSite {
                ID = TestsConstants.TestGuid
            };
            var time = new DateTime(2010, 5, 30);

            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = new List <TypeMapping>();
            sharepointLocator.SiteTypeMappings = typeMappings;
            MDateTime.NowGet = () => time;

            sharepointLocator.SiteGotTypeMappingsFromConfig = false;

            sharepointLocator.GetCurrent(expectedSite);

            Assert.IsTrue(sharepointLocator.SiteGotTypeMappingsFromConfig);

            sharepointLocator.SiteGotTypeMappingsFromConfig = false;
            time = time.AddSeconds(SharePointServiceLocator.SiteCachingTimeoutInSeconds + 1);
            sharepointLocator.SiteLastUpdatedRetVal = time;
            var targetLogger = sharepointLocator.GetCurrent(expectedSite).GetInstance <ILogger>();

            //Act
            sharepointLocator.SiteGotTypeMappingsFromConfig = false;
            targetLogger = sharepointLocator.GetCurrent(expectedSite).GetInstance <ILogger>();

            //Assert
            Assert.IsFalse(sharepointLocator.SiteGotTypeMappingsFromConfig);
        }
        public void GetCurrent_SiteTimeoutReloadWorks()
        {
            //Setup
            var typeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SharePointLogger>()
            };
            var f = new BSPConfiguredFarm();

            var expectedSite = new BSPSite {
                ID = TestsConstants.TestGuid
            };
            var time = new DateTime(2010, 5, 30);

            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = new List <TypeMapping>();
            sharepointLocator.SiteTypeMappings = typeMappings;

            MDateTime.NowGet = () => time;
            var target = sharepointLocator.GetCurrent(expectedSite);     // get current to make sure it is in memory

            time = time.AddSeconds(SharePointServiceLocator.SiteCachingTimeoutInSeconds + 1);
            sharepointLocator.SiteLastUpdatedRetVal = time;

            //Act
            var initialLogger = target.GetInstance <ILogger>();

            sharepointLocator.SiteTypeMappings = new List <TypeMapping> {
                TypeMapping.Create <ILogger, SBaseLogger>()
            };
            var targetLogger = sharepointLocator.GetCurrent(expectedSite).GetInstance <ILogger>();

            //Assert
            Assert.IsInstanceOfType(initialLogger, typeof(SharePointLogger));
            Assert.IsInstanceOfType(targetLogger, typeof(SBaseLogger));
        }
        public void Current_AttemptLoadingFromCommonServiceLocator_ThrowsErrorMessage()
        {
            //Arrange
            var farm = BSPFarm.SetLocal();
            var sharepointLocator = new TestableSharePointServiceLocator();

            sharepointLocator.FarmTypeMappings = null;
            bool expectedException = false;

            var sl = sharepointLocator.GetCurrent();

            //Act
            try
            {
                var sl1 = ServiceLocator.Current;
            }
            catch (NotSupportedException)
            {
                expectedException = true;
            }

            // Assert
            Assert.IsTrue(expectedException);
        }