示例#1
0
        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);
        }