Skip to content

Commit

Permalink
Getting unit tests all caught up.
Browse files Browse the repository at this point in the history
  • Loading branch information
brentedwards committed Dec 13, 2010
1 parent 6326b5d commit 52db865
Show file tree
Hide file tree
Showing 8 changed files with 200 additions and 6 deletions.
2 changes: 2 additions & 0 deletions BrentEdwards.MVVM.Test/BrentEdwards.MVVM.Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,10 @@
<Compile Include="Messaging\MessageBusTests.cs" />
<Compile Include="Messaging\ShowViewMessageTests.cs" />
<Compile Include="Navigation\ViewConfigurationTests.cs" />
<Compile Include="Navigation\ViewControllerTests.cs" />
<Compile Include="Navigation\ViewFactoryTests.cs" />
<Compile Include="Navigation\ViewResultTests.cs" />
<Compile Include="Navigation\ViewTargetsTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
Expand Down
91 changes: 91 additions & 0 deletions BrentEdwards.MVVM.Test/Navigation/ViewControllerTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Windows;
using BrentEdwards.MVVM.Navigation;
using BrentEdwards.MVVM.Messaging;
using NSubstitute;

namespace BrentEdwards.MVVM.Test.Navigation
{
[TestClass]
public class ViewControllerTests
{
private IMessageBus _messageBus;
private IViewFactory _viewFactory;
private IViewPlacer _viewPlacer;
private IViewAuthorizer _viewAuthorizer;

private ViewController GetViewController(bool useAuthorizer)
{
_messageBus = new MessageBus();
_viewFactory = Substitute.For<IViewFactory>();
_viewPlacer = Substitute.For<IViewPlacer>();

if (useAuthorizer)
{
_viewAuthorizer = Substitute.For<IViewAuthorizer>();
}
else
{
_viewAuthorizer = null;
}

return new ViewController(_messageBus, _viewFactory, _viewPlacer, _viewAuthorizer);
}

[TestMethod]
public void ShowView()
{
var view = new FrameworkElement();
var viewController = GetViewController(false);

var viewResult = new ViewResult(view);
_viewFactory.Build(Arg.Any<ViewTargets>(), Arg.Any<Object>())
.Returns(viewResult);

var message = new ShowViewMessage(ViewTargets.DefaultView);
_messageBus.Publish<ShowViewMessage>(message);

_viewPlacer.Received().PlaceView(viewResult);
}

[TestMethod]
public void ShowViewAuthorized()
{
var view = new FrameworkElement();
var viewController = GetViewController(true);

var viewResult = new ViewResult(view);
_viewFactory.Build(Arg.Any<ViewTargets>(), Arg.Any<Object>())
.Returns(viewResult);

_viewAuthorizer.AuthorizeView(Arg.Any<ViewTargets>())
.Returns(true);

var message = new ShowViewMessage(ViewTargets.DefaultView);
_messageBus.Publish<ShowViewMessage>(message);

_viewPlacer.Received().PlaceView(viewResult);
}

[TestMethod, ExpectedException(typeof(InvalidOperationException))]
public void ShowViewNotAuthorized()
{
var view = new FrameworkElement();
var viewController = GetViewController(true);

var viewResult = new ViewResult(view);
_viewFactory.Build(Arg.Any<ViewTargets>(), Arg.Any<Object>())
.Returns(viewResult);

_viewAuthorizer.AuthorizeView(Arg.Any<ViewTargets>())
.Returns(false);

var message = new ShowViewMessage(ViewTargets.DefaultView);
_messageBus.Publish<ShowViewMessage>(message);
}
}
}
66 changes: 66 additions & 0 deletions BrentEdwards.MVVM.Test/Navigation/ViewTargetsTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace BrentEdwards.MVVM.Test.Navigation
{
[TestClass]
public class ViewTargetsTests
{
[TestMethod]
public void Enumeration_Default()
{
var enumeration = new ViewTargets();

Assert.AreEqual(0, (int)enumeration);
}

[TestMethod]
public void ImplicitOperator_Enumeration()
{
int viewTargetValue = ViewTargets.DefaultView;

Assert.AreEqual(1, viewTargetValue);
}

[TestMethod]
public void ImplicitOperator_ViewTargets()
{
ViewTargets viewTarget = 1;

Assert.AreEqual(ViewTargets.DefaultView, viewTarget);
}

[TestMethod]
public void EqualsTest()
{
Assert.AreEqual(ViewTargets.DefaultView, ViewTargets.DefaultView);
}

[TestMethod]
public void ToStringTest()
{
var viewTarget = ViewTargets.DefaultView;

Assert.AreEqual("DefaultView", viewTarget.ToString());
}

[TestMethod]
public void ToString_PropertyDoesntExist()
{
ViewTargets viewTarget = 0;

Assert.AreEqual(string.Empty, viewTarget.ToString());
}

[TestMethod]
public void GetHashCodeTest()
{
var viewTarget = ViewTargets.DefaultView;

Assert.AreEqual(((int)1).GetHashCode(), viewTarget.GetHashCode());
}
}
}
16 changes: 16 additions & 0 deletions BrentEdwards.MVVM/Enumeration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,21 @@ public override string ToString()

return string.Empty;
}

public override bool Equals(object obj)
{
var equal = false;
if (obj is Enumeration<TValue>)
{
var enumeration = (Enumeration<TValue>)obj;
equal = Value.Equals(enumeration.Value);
}
return equal;
}

public override int GetHashCode()
{
return Value.GetHashCode();
}
}
}
4 changes: 2 additions & 2 deletions BrentEdwards.MVVM/Navigation/ViewController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ namespace BrentEdwards.MVVM.Navigation
{
public sealed class ViewController
{
private IViewPlacer ViewPlacer { get; set; }
private IViewAuthorizer ViewAuthorizer { get; set; }
private IMessageBus MessageBus { get; set; }
private IViewFactory ViewFactory { get; set; }
private IViewPlacer ViewPlacer { get; set; }
private IViewAuthorizer ViewAuthorizer { get; set; }

public ViewController(IMessageBus messageBus, IViewFactory viewFactory, IViewPlacer viewPlacer)
{
Expand Down
2 changes: 1 addition & 1 deletion BrentEdwards.MVVM/Navigation/ViewTargets.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace BrentEdwards.MVVM
{
public class ViewTargets : Enumeration<int>
{
protected ViewTargets()
protected internal ViewTargets()
{
}

Expand Down
2 changes: 2 additions & 0 deletions BrentEdwards.MVVM/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: InternalsVisibleTo("BrentEdwards.MVVM.Test")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
Expand Down
23 changes: 20 additions & 3 deletions Local.testsettings
Original file line number Diff line number Diff line change
@@ -1,10 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="Local" id="82cfb174-9017-4eb7-8d31-d3d482263834" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Description>These are default test settings for a local test run.</Description>
<Deployment enabled="false" />
<Execution>
<TestTypeSpecific />
<AgentRule name="Execution Agents">
<TestTypeSpecific>
<UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b">
<AssemblyResolution>
<TestDirectory useLoadContext="true" />
</AssemblyResolution>
</UnitTestRunConfig>
</TestTypeSpecific>
<AgentRule name="LocalMachineDefaultRole">
<DataCollectors>
<DataCollector uri="datacollector://microsoft/CodeCoverage/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.CodeCoverage.CoveragePlugIn, Microsoft.VisualStudio.QualityTools.Plugins.CodeCoverage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Code Coverage">
<Configuration>
<CodeCoverage xmlns="">
<Regular>
<CodeCoverageItem binaryFile="BrentEdwards.MVVM\bin\Debug\BrentEdwards.MVVM.dll" pdbFile="BrentEdwards.MVVM\bin\Debug\BrentEdwards.MVVM.pdb" instrumentInPlace="true" />
<CodeCoverageItem binaryFile="BrentEdwards.MVVM.Test\bin\Debug\BrentEdwards.MVVM.Test.dll" pdbFile="BrentEdwards.MVVM.Test\bin\Debug\BrentEdwards.MVVM.Test.pdb" instrumentInPlace="true" />
</Regular>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</AgentRule>
</Execution>
</TestSettings>

0 comments on commit 52db865

Please sign in to comment.