public void StudioResourceRepository_RollbackTo_TwoItemsReturned_ItemsAttachedToParent()
{
//------------Setup for test--------------------------
var mockExplorerResourceRepository = new Mock<IClientExplorerResourceRepository>();
var v1 = new Mock<IVersionInfo>();
v1.Setup(v => v.VersionNumber).Returns("1");
var v2 = new Mock<IVersionInfo>();
v2.Setup(v => v.VersionNumber).Returns("2");
var mockVersionRepository = new Mock<IVersionRepository>();
mockVersionRepository.Setup(m => m.RollbackTo(It.IsAny<Guid>(), It.IsAny<string>()))
.Returns(new RollbackResult
{
DisplayName = "SuperWF",
VersionHistory = new List<IExplorerItem> {
new ServerExplorerItem
{
ResourceType = ResourceType.WebService, DisplayName = "v2 2012-10-10 Save", ResourceId = Guid.NewGuid(), Permissions = Permissions.View, VersionInfo = v1.Object
},
new ServerExplorerItem
{
ResourceType = ResourceType.WebService, DisplayName = "v1 2012-10-10 Save", ResourceId = Guid.NewGuid(), Permissions = Permissions.View, VersionInfo = v2.Object
}
}
})
.Verifiable();
var superWFId = Guid.NewGuid();
var parent = new ServerExplorerItem
{
ResourceType = ResourceType.WorkflowService,
DisplayName = "Super Workflow",
ResourceId = superWFId,
Permissions = Permissions.Contribute,
ResourcePath = "MANFOLDER\\APRIL WORK\\SUB FOLDER"
};
SetupEnvironmentRepo(Guid.Empty);
var repo = new StudioResourceRepository(parent, Guid.Empty, _invoke)
{
GetVersionProxy = id => mockVersionRepository.Object,
GetExplorerProxy = id => mockExplorerResourceRepository.Object,
GetCurrentEnvironment = () => Guid.Empty
};
var versionInfo = new VersionInfo
{
DateTimeStamp = DateTime.Now,
Reason = "Rollback",
ResourceId = superWFId,
User = "",
VersionId = Guid.NewGuid(),
VersionNumber = "3"
};
//------------Execute Test---------------------------
repo.RollbackTo(versionInfo, Guid.Empty);
//------------Assert Results-------------------------
var actual = repo.FindItemById(superWFId);
Assert.AreEqual(2, actual.Children.Count);
mockVersionRepository.Verify(m => m.RollbackTo(It.IsAny<Guid>(), It.IsAny<string>()), Times.Once());
}