112 lines
2.8 KiB
C#
112 lines
2.8 KiB
C#
using NUnit.Framework;
|
|
using NSubstitute;
|
|
using Prism.Modularity;
|
|
using Prism.Ioc;
|
|
using Unity;
|
|
|
|
namespace YourNamespace.Tests
|
|
{
|
|
[TestFixture]
|
|
public class ModuleShould
|
|
{
|
|
private IUnityContainer _unityContainer;
|
|
private IContainerRegistry _containerRegistry;
|
|
private IContainerProvider _containerProvider;
|
|
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
_unityContainer = Substitute.For<IUnityContainer>();
|
|
_containerRegistry = Substitute.For<IContainerRegistry>();
|
|
_containerProvider = Substitute.For<IContainerProvider>();
|
|
}
|
|
|
|
[Test]
|
|
public void RegisterTypes_WhenRegisterTypesIsCalled()
|
|
{
|
|
var sut = CreateSut();
|
|
|
|
sut.RegisterTypes(_containerRegistry);
|
|
|
|
_containerRegistry.Received().Register(Arg.Any<Func<object>>());
|
|
}
|
|
|
|
[Test]
|
|
public void Initialize_WhenInitializeIsCalled()
|
|
{
|
|
var sut = CreateSut();
|
|
|
|
sut.Initialize();
|
|
|
|
_unityContainer.Received().RegisterType(Arg.Any<System.Type>(), Arg.Any<System.Type>());
|
|
}
|
|
|
|
[Test]
|
|
public void RegisterViewAndViewModel_AsSingletons()
|
|
{
|
|
var sut = CreateSut();
|
|
|
|
sut.Initialize();
|
|
|
|
_unityContainer.Received().RegisterType<ITestView, TestView>();
|
|
_unityContainer.Received().RegisterType<ITestViewModel, TestViewModel>();
|
|
}
|
|
|
|
[Test]
|
|
public void OnInitialized_DoesNotThrow()
|
|
{
|
|
var sut = CreateSut();
|
|
|
|
Assert.DoesNotThrow(() => sut.OnInitialized(_containerProvider));
|
|
}
|
|
|
|
[Test]
|
|
public void ImplementIModuleInterface()
|
|
{
|
|
var sut = CreateSut();
|
|
|
|
Assert.That(sut, Is.InstanceOf<IModule>());
|
|
}
|
|
|
|
private TestModule CreateSut()
|
|
{
|
|
return new TestModule(_unityContainer);
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
}
|
|
}
|
|
|
|
public class TestModule : IModule
|
|
{
|
|
private readonly IUnityContainer _unityContainer;
|
|
|
|
public TestModule(IUnityContainer unityContainer)
|
|
{
|
|
_unityContainer = unityContainer;
|
|
}
|
|
|
|
public void Initialize()
|
|
{
|
|
_unityContainer.RegisterType<ITestView, TestView>();
|
|
_unityContainer.RegisterType<ITestViewModel, TestViewModel>();
|
|
}
|
|
|
|
public void OnInitialized(IContainerProvider containerProvider)
|
|
{
|
|
}
|
|
|
|
public void RegisterTypes(IContainerRegistry containerRegistry)
|
|
{
|
|
Initialize();
|
|
}
|
|
}
|
|
|
|
public interface ITestView { }
|
|
public class TestView : ITestView { }
|
|
public interface ITestViewModel { }
|
|
public class TestViewModel : ITestViewModel { }
|
|
}
|