Exemplo n.º 1
0
        public void CanRegisterViewTypeGeneric()
        {
            try
            {
                var mockRegionContentRegistry = new MockRegionContentRegistry();

                string regionName = null;
                Type   viewType   = null;

                mockRegionContentRegistry.RegisterContentWithViewType = (name, type) =>
                {
                    regionName = name;
                    viewType   = type;
                    return(null);
                };
                var containerMock = new Mock <IContainerExtension>();
                containerMock.Setup(c => c.Resolve(typeof(IRegionViewRegistry))).Returns(mockRegionContentRegistry);
                ContainerLocator.ResetContainer();
                ContainerLocator.SetContainerExtension(() => containerMock.Object);

                var regionManager = new RegionManager();

                regionManager.RegisterViewWithRegion <object>("Region1");

                Assert.Equal("Region1", regionName);
                Assert.Equal(typeof(object), viewType);
            }
            finally
            {
                ContainerLocator.ResetContainer();
            }
        }
Exemplo n.º 2
0
        public void NavigateDelegatesToIRegionNavigationService()
        {
            try
            {
                // Prepare
                IRegion region = new Region();

                object view = new object();
                region.Add(view);

                Uri uri = new Uri(view.GetType().Name, UriKind.Relative);
                Action <NavigationResult> navigationCallback   = nr => { };
                NavigationParameters      navigationParameters = new NavigationParameters();

                Mock <IRegionNavigationService> mockRegionNavigationService = new Mock <IRegionNavigationService>();
                mockRegionNavigationService.Setup(x => x.RequestNavigate(uri, navigationCallback, navigationParameters)).Verifiable();

                var containerMock = new Mock <IContainerExtension>();
                containerMock.Setup(x => x.Resolve(typeof(IRegionNavigationService))).Returns(mockRegionNavigationService.Object);
                ContainerLocator.ResetContainer();
                ContainerLocator.SetContainerExtension(() => containerMock.Object);

                // Act
                region.RequestNavigate(uri, navigationCallback, navigationParameters);

                // Verify
                mockRegionNavigationService.VerifyAll();
            }
            finally
            {
                ContainerLocator.ResetContainer();
            }
        }
Exemplo n.º 3
0
        public void ShouldGetRegisteredMapping_UsingGenericControlAndAdapter()
        {
            try
            {
                var regionAdapterMappings = new RegionAdapterMappings();
                var regionAdapter         = new MockRegionAdapter();

                var containerMock = new Mock <IContainerExtension>();
                containerMock.Setup(c => c.Resolve(typeof(MockRegionAdapter)))
                .Returns(regionAdapter);
                ContainerLocator.ResetContainer();
                ContainerLocator.SetContainerExtension(() => containerMock.Object);

                regionAdapterMappings.RegisterMapping <ItemsControl, MockRegionAdapter>();

                var returnedAdapter = regionAdapterMappings.GetMapping <ItemsControl>();

                Assert.NotNull(returnedAdapter);
                Assert.Same(regionAdapter, returnedAdapter);
            }
            finally
            {
                ContainerLocator.ResetContainer();
            }
        }
Exemplo n.º 4
0
        public void CanRegisterDelegate()
        {
            try
            {
                ContainerLocator.ResetContainer();
                var mockRegionContentRegistry = new MockRegionContentRegistry();

                string        regionName      = null;
                Func <object> contentDelegate = null;

                Func <object> expectedDelegate = () => true;
                mockRegionContentRegistry.RegisterContentWithDelegate = (name, usedDelegate) =>
                {
                    regionName      = name;
                    contentDelegate = usedDelegate;
                    return(null);
                };
                var containerMock = new Mock <IContainerExtension>();
                containerMock.Setup(c => c.Resolve(typeof(IRegionViewRegistry))).Returns(mockRegionContentRegistry);
                ContainerLocator.SetContainerExtension(() => containerMock.Object);

                var regionManager = new RegionManager();

                regionManager.RegisterViewWithRegion("Region1", expectedDelegate);

                Assert.Equal("Region1", regionName);
                Assert.Equal(expectedDelegate, contentDelegate);
            }
            finally
            {
                ContainerLocator.ResetContainer();
            }
        }
Exemplo n.º 5
0
        private static void CreateAndConfigureServiceLocatorForViewModelLocator()
        {
            var container = new MockContainerAdapter();

            container.ResolvedInstances.Add(typeof(MockViewModel), new MockViewModel());
            ContainerLocator.ResetContainer();
            ContainerLocator.SetContainerExtension(() => container);
        }
Exemplo n.º 6
0
        protected override void Initialize()
        {
            InitializeCalled = true;

            ContainerLocator.ResetContainer();
            MockContainer = new Mock <IContainerExtension>();

            base.Initialize();
        }
Exemplo n.º 7
0
        public IContainerProvider CreateContainer()
        {
            ContainerLocator.ResetContainer();
            ContainerLocator.SetContainerExtension(() => CreateContainerInternal());
            var container = ContainerLocator.Current;

            container.CreateScope();
            return(container);
        }
Exemplo n.º 8
0
        private static void CreateAndConfigureServiceLocatorWithDefaultRegionBehaviors()
        {
            var containerExtension    = new Mock <IContainerExtension>();
            var regionBehaviorFactory = new RegionBehaviorFactory(containerExtension.Object);

            containerExtension.Setup(sl => sl.Resolve(typeof(IRegionBehaviorFactory))).Returns(new RegionBehaviorFactory(containerExtension.Object));

            ContainerLocator.ResetContainer();
            ContainerLocator.SetContainerExtension(() => containerExtension.Object);
        }
Exemplo n.º 9
0
 public RegionNavigationContentLoaderFixture()
 {
     _container = CreateContainerExtension();
     _container.RegisterInstance <IContainerExtension>(_container);
     _container.Register <IRegionNavigationService, RegionNavigationService>();
     _container.Register(typeof(IRegionNavigationContentLoader), typeof(RegionNavigationContentLoader));
     _container.Register <IRegionNavigationJournal, RegionNavigationJournal>();
     ContainerLocator.ResetContainer();
     ContainerLocator.SetContainerExtension(() => _container);
 }
Exemplo n.º 10
0
 protected override void Initialize()
 {
     ContainerLocator.ResetContainer();
     MockContainer = new Mock <IContainerExtension>();
     MockContainer.Setup(x => x.Resolve(typeof(IModuleCatalog)))
     .Returns(new ModuleCatalog());
     MockContainer.Setup(x => x.Resolve(typeof(INavigationService), NavigationServiceName))
     .Returns(new PageNavigationService(MockContainer.Object, this, new PageBehaviorFactory()));
     base.Initialize();
 }
Exemplo n.º 11
0
        public void SetsContainerLocatorCurrentContainer()
        {
            ContainerLocator.ResetContainer();
            Assert.Null(ContainerLocator.Container);
            var bootstrapper = new MockBootstrapper();

            bootstrapper.Run();

            Assert.NotNull(ContainerLocator.Container);
            Assert.Same(bootstrapper.Container, ContainerLocator.Container.GetBaseContainer());
        }
Exemplo n.º 12
0
        public FixtureBase(ITestOutputHelper testOutputHelper)
        {
            _testOutputHelper = testOutputHelper;
            Xamarin.Forms.Mocks.MockForms.Init();
            PageNavigationRegistry.ClearRegistrationCache();
            ContainerLocator.ResetContainer();

            var type     = typeof(PopupNavigation);
            var property = type.GetField("_popupNavigation", BindingFlags.NonPublic | BindingFlags.Static);

            property.SetValue(null, new PluginNavigationMock());
        }
Exemplo n.º 13
0
        private static void CreateAndConfigureServiceLocatorWithRegionAdapters()
        {
            var container             = new Mock <IContainerExtension>();
            var regionBehaviorFactory = new RegionBehaviorFactory(container.Object);

            container.Setup(sl => sl.Resolve(typeof(RegionAdapterMappings))).Returns(new RegionAdapterMappings());
            container.Setup(sl => sl.Resolve(typeof(SelectorRegionAdapter))).Returns(new SelectorRegionAdapter(regionBehaviorFactory));
            container.Setup(sl => sl.Resolve(typeof(ItemsControlRegionAdapter))).Returns(new ItemsControlRegionAdapter(regionBehaviorFactory));
            container.Setup(sl => sl.Resolve(typeof(ContentControlRegionAdapter))).Returns(new ContentControlRegionAdapter(regionBehaviorFactory));

            ContainerLocator.ResetContainer();
            ContainerLocator.SetContainerExtension(() => container.Object);
        }
        public void LocatesUnregisteredServiceType()
        {
            ContainerLocator.ResetContainer();
            var container = Setup.CreateContainer();

            ContainerLocator.SetContainerExtension(() => Setup.Extension);

            var ex = Record.Exception(() => container.Resolve <ConstructorArgumentViewModel>());

            Assert.IsType <ContainerResolutionException>(ex);
            var cre    = ex as ContainerResolutionException;
            var errors = cre.GetErrors();

            Assert.Contains(typeof(IServiceA), errors.Types);
        }
        public void LocatesUnregisteredServiceWithMissingRegistration()
        {
            ContainerLocator.ResetContainer();
            var container = Setup.CreateContainer();

            ContainerLocator.SetContainerExtension(() => Setup.Extension);

            var ex = Record.Exception(() => container.Resolve <ConstructorArgumentViewModel>());

            Assert.IsType <ContainerResolutionException>(ex);
            var cre    = ex as ContainerResolutionException;
            var errors = cre.GetErrors();

            Assert.Contains(errors, x => x.Value is ContainerResolutionException innerCre && innerCre.ServiceType == typeof(IServiceA) && innerCre.Message == ContainerResolutionException.MissingRegistration);
        }
Exemplo n.º 16
0
        public void ShouldForwardResolveToInnerContainer()
        {
            var mockContainer = new Mock <IContainer>();

            Assert.Empty(mockContainer.Invocations);
            var containerExtension = new DryIocContainerExtension(mockContainer.Object);

            // We register the IContainerExtension and IContainerProvider directly with the container in the ctor.
            Assert.Equal(2, mockContainer.Invocations.Count);
            ContainerLocator.ResetContainer();
            ContainerLocator.SetContainerExtension(() => containerExtension);

            var resolved = ContainerLocator.Container.Resolve(typeof(object));

            Assert.Equal(3, mockContainer.Invocations.Count);
        }
Exemplo n.º 17
0
        public void ShouldForwardResolveToInnerContainer()
        {
            object myInstance = new object();

            var mockContainer = new Mock <IUnityContainer>();

            mockContainer.Setup(c => c.Resolve(typeof(object), null, It.IsAny <ResolverOverride[]>())).Returns(myInstance);
            var containerExtension = new UnityContainerExtension(mockContainer.Object);

            ContainerLocator.ResetContainer();
            ContainerLocator.SetContainerExtension(() => containerExtension);
            var resolved = ContainerLocator.Container.Resolve(typeof(object));

            mockContainer.Verify(c => c.Resolve(typeof(object), null, It.IsAny <ResolverOverride[]>()), Times.Once);
            Assert.Same(myInstance, resolved);
        }
        public void GetErrorsLocatesIssueWithBadView()
        {
            ContainerLocator.ResetContainer();
            var container = Setup.CreateContainer();

            ContainerLocator.SetContainerExtension(() => Setup.Extension);
            Setup.Registry.Register <object, BadView>("BadView");

            var ex = Record.Exception(() => container.Resolve <object>("BadView"));

            Assert.IsType <ContainerResolutionException>(ex);
            var cre    = ex as ContainerResolutionException;
            var errors = cre.GetErrors();

            Assert.Contains(typeof(BadView), errors.Types);
        }
        public void GetErrorsLocatesXamlParseException()
        {
            ContainerLocator.ResetContainer();
            var container = Setup.CreateContainer();

            ContainerLocator.SetContainerExtension(() => Setup.Extension);
            Setup.Registry.Register <object, BadView>("BadView");

            var ex = Record.Exception(() => container.Resolve <object>("BadView"));

            Assert.IsType <ContainerResolutionException>(ex);
            var cre    = ex as ContainerResolutionException;
            var errors = cre.GetErrors();

            Assert.Contains(errors, x => x.Value is XamlParseException);
        }
Exemplo n.º 20
0
        public void GetErrorsLocatesTargetInvocationException()
        {
            ContainerLocator.ResetContainer();
            var container = new ContainerExtension();

            ContainerLocator.SetContainerExtension(() => container);
            container.Register <object, BadView>("BadView");

            var ex = Record.Exception(() => container.Resolve <object>("BadView"));

            Assert.IsType <ContainerResolutionException>(ex);
            var cre    = ex as ContainerResolutionException;
            var errors = cre.GetErrors();

            Assert.Contains(errors, x => x.Value is TargetInvocationException);
        }
        public INavigationServiceExtensionsFixture()
        {
            ContainerLocator.ResetContainer();
            var container = new Mock <IContainerExtension>();

            container.Setup(x => x.CreateScope()).Returns(Mock.Of <IScopedProvider>());
            ContainerLocator.SetContainerExtension(() => container.Object);
            PageNavigationRegistry.ClearRegistrationCache();

            PageNavigationRegistry.Register("NavigationPage", typeof(NavigationPage));
            PageNavigationRegistry.Register("Page1", typeof(NavigationPathPageMock));
            PageNavigationRegistry.Register("Page2", typeof(NavigationPathPageMock2));
            PageNavigationRegistry.Register("Page3", typeof(NavigationPathPageMock3));
            PageNavigationRegistry.Register("Page4", typeof(NavigationPathPageMock4));
            PageNavigationRegistry.Register("TabbedPage1", typeof(NavigationPathTabbedPageMock));
            PageNavigationRegistry.Register("MasterDetailPage", typeof(MasterDetailPage));
        }
        public void GetErrorsDoesNotThrowException()
        {
            ContainerLocator.ResetContainer();
            var container = Setup.CreateContainer();

            ContainerLocator.SetContainerExtension(() => Setup.Extension);
            Setup.Registry.Register <object, BadView>("BadView");

            var ex = Record.Exception(() => container.Resolve <object>("BadView"));

            Assert.IsType <ContainerResolutionException>(ex);
            var cre = ex as ContainerResolutionException;
            ContainerResolutionErrorCollection errors = null;
            var ex2 = Record.Exception(() => errors = cre.GetErrors());

            Assert.Null(ex2);
        }
Exemplo n.º 23
0
        public void ShouldForwardResolveToInnerContainer()
        {
            object myInstance    = new object();
            var    mockContainer = new Mock <IContainer>();

            mockContainer.Setup(c => c.Resolve(typeof(object), IfUnresolved.Throw)).Returns(myInstance);

            var containerExtension = new DryIocContainerExtension(mockContainer.Object);

            ContainerLocator.ResetContainer();
            ContainerLocator.SetContainerExtension(() => containerExtension);

            var resolved = ContainerLocator.Container.Resolve(typeof(object));

            mockContainer.Verify(c => c.Resolve(typeof(object), IfUnresolved.Throw));
            Assert.Same(myInstance, resolved);
        }
Exemplo n.º 24
0
        public static IContainerExtension LocateContainer(IContainerExtension container = null)
        {
            if (container != null)
            {
                ContainerLocator.SetContainerExtension(() => container);
            }

            try
            {
                var located = ContainerLocator.Current;
                if (located != null)
                {
                    return(located);
                }

                // If somehow we have an actual null container let's be sure to refresh the Locator
                ContainerLocator.ResetContainer();
            }
            catch
            {
                // suppress any errors
                ContainerLocator.ResetContainer();
            }

            var entryAssembly       = Assembly.GetEntryAssembly();
            var containerAttributes = entryAssembly.GetCustomAttributes().OfType <ContainerExtensionAttribute>();

            if (!containerAttributes.Any())
            {
                throw new InvalidOperationException("An instance of the IContainerExtension has not been registered with the ContainerLocator, and no ContainerExtensionAttribute has been found in the entry assembly.");
            }
            else if (containerAttributes.Count() > 1)
            {
                throw new InvalidOperationException("More than one ContainerExtensionAttribute has been found on the entry assembly. Only a single ContainerExtension should be referenced.");
            }

            var containerExtensionAttribute = containerAttributes.First();

            return(containerExtensionAttribute.GetContainer());
        }
Exemplo n.º 25
0
 public PrismBootstapperSetup()
 {
     ContainerLocator.ResetContainer();
     Bootstrapper = new PrismBootstrapper();
     Bootstrapper.Run();
 }
Exemplo n.º 26
0
 public PrismApplicationSetup()
 {
     ContainerLocator.ResetContainer();
     Application = new PrismApplication();
     Application.CallOnStartup();
 }
Exemplo n.º 27
0
 public void Dispose()
 {
     ContainerLocator.ResetContainer();
     Application.Shutdown();
 }
Exemplo n.º 28
0
 public void Dispose()
 {
     ContainerLocator.ResetContainer();
 }
Exemplo n.º 29
0
 public MockedContainerBootstrapper(IContainer container)
 {
     ContainerLocator.ResetContainer();
     this._container = container;
 }
Exemplo n.º 30
0
 private void Dispose(bool disposing)
 {
     _disposed = true;
     ContainerLocator.ResetContainer();
 }