public void TransferableVisualState_BoundProjectManagement()
{
// Setup
var testSubject = new TransferableVisualState();
var server = new ServerViewModel(new Integration.Service.ConnectionInformation(new System.Uri("http://server")));
var project1 = new ProjectViewModel(server, new Integration.Service.ProjectInformation());
var project2 = new ProjectViewModel(server, new Integration.Service.ProjectInformation());
// Act (bind to something)
testSubject.SetBoundProject(project1);
// Verify
Assert.IsTrue(testSubject.HasBoundProject);
Assert.IsTrue(project1.IsBound);
Assert.IsFalse(project2.IsBound);
Assert.IsFalse(server.ShowAllProjects);
// Act (bind to something else)
testSubject.SetBoundProject(project2);
// Verify
Assert.IsTrue(testSubject.HasBoundProject);
Assert.IsFalse(project1.IsBound);
Assert.IsTrue(project2.IsBound);
Assert.IsFalse(server.ShowAllProjects);
// Act(clear binding)
testSubject.ClearBoundProject();
// Verify
Assert.IsFalse(testSubject.HasBoundProject);
Assert.IsFalse(project1.IsBound);
Assert.IsFalse(project2.IsBound);
Assert.IsTrue(server.ShowAllProjects);
}