Files
DP44/GLM5Analysis/TestScaffolds/ModuleTestScaffold.cs
2026-04-17 14:55:32 -04:00

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 { }
}