public void ShouldGetClientShares() { // Arrange var blockOfSharesRepositoryMock = Substitute.For <IBlockOfSharesRepository>(); var clientRepositoryMock = Substitute.For <IClientRepository>(); var sharesRepositoryMock = Substitute.For <ISharesRepository>(); var sut = new BlockOfSharesManager( blockOfSharesRepositoryMock, clientRepositoryMock, sharesRepositoryMock); int clientID = 1; int firstShareID = 3; int secondShareID = 7; var blockOfShares = new[] { new BlockOfShares { ClientID = clientID, ShareID = firstShareID, Amount = 1 }, new BlockOfShares { ClientID = clientID, ShareID = secondShareID, Amount = 3 } }; blockOfSharesRepositoryMock .GetClientShares(clientID) .Returns(blockOfShares); sharesRepositoryMock .GetShareType(3) .Returns("Umbrella"); sharesRepositoryMock .GetSharePrice(3) .Returns(123); sharesRepositoryMock .GetShareType(7) .Returns("Weyland-Yutani"); sharesRepositoryMock .GetSharePrice(7) .Returns(321); // Act var clientSharesResult = sut.GetClientShares(clientID); // Asserts Assert.AreEqual(clientSharesResult.ShareWithPrice.ElementAt(0).Key, "Umbrella"); Assert.AreEqual(clientSharesResult.ShareWithPrice.ElementAt(0).Value, 123); Assert.AreEqual(clientSharesResult.ShareWithPrice.ElementAt(1).Key, "Weyland-Yutani"); Assert.AreEqual(clientSharesResult.ShareWithPrice.ElementAt(1).Value, 321); }