Пример #1
0
        static void Main(string[] args)
        {
            var menuHelper           = new MenuHelper();
            var outputInfoHelper     = new OutputInfoHelper();
            var businessLogicManager = new BusinessLogicManager();
            var menuManager          = new MenuManager(menuHelper, outputInfoHelper, businessLogicManager);

            while (menuManager.IsActive)
            {
                menuManager.Run();
            }
        }
        public void GetDateCost_NoWalksForDay_ReturnZero()
        {
            //Arrange
            var emptyList = new List <PetWalk>();

            var petWalkManagerMock = MockRepository.GenerateStub <IPetWalkManager>();
            var priceManagerMock   = MockRepository.GenerateMock <IPriceManager>();

            petWalkManagerMock.Stub(x => x.GetPetWalkListForDate(Arg <DateTime> .Is.Anything)).Return(emptyList);

            //Act
            var businessLogicManager = new BusinessLogicManager(null, null, petWalkManagerMock, null, priceManagerMock);
            var actualResult         = businessLogicManager.GetDateCost(DateTime.Today);

            //Assert
            Assert.AreEqual(0, actualResult);
            priceManagerMock.AssertWasNotCalled(x => x.LoadPrices());
        }
        public void GetDateCost_TwoWalksForDay_ReturnExpectedAmount()
        {
            //Arrange
            var walkList = new List <PetWalk>();

            var firstWalk = new PetWalk
            {
                Pet = new Pet
                {
                    Size        = "Small",
                    IsAgressive = true
                }
            };

            walkList.Add(firstWalk);

            var secondWalk = new PetWalk
            {
                PetPack = new PetPack
                {
                    Id = 1
                }
            };

            walkList.Add(secondWalk);

            var petList = new List <Pet>();

            var firstPetInPack = new Pet
            {
                Size        = "Large",
                IsAgressive = false
            };

            petList.Add(firstPetInPack);

            var secondPetInPack = new Pet
            {
                Size        = "Small",
                IsAgressive = false
            };

            petList.Add(secondPetInPack);


            var petWalkManagerMock = MockRepository.GenerateStub <IPetWalkManager>();
            var priceManagerMock   = MockRepository.GenerateMock <IPriceManager>();
            var petManagerMock     = MockRepository.GenerateMock <IPetManager>();

            petWalkManagerMock.Stub(x => x.GetPetWalkListForDate(Arg <DateTime> .Is.Anything)).Return(walkList);
            priceManagerMock.Stub(x => x.LoadPrices());
            priceManagerMock.Stub(x => x.GetPriceBySizeAndAgression(Arg <string> .Is.Equal("Small"), Arg <bool> .Is.Equal(true))).Return(10);
            priceManagerMock.Stub(x => x.GetPriceBySizeAndAgression(Arg <string> .Is.Equal("Small"), Arg <bool> .Is.Equal(false))).Return(20);
            priceManagerMock.Stub(x => x.GetPriceBySizeAndAgression(Arg <string> .Is.Equal("Large"), Arg <bool> .Is.Equal(false))).Return(30);

            petManagerMock.Stub(x => x.GetPetsByPackId(Arg <long> .Is.Anything)).Return(petList);

            //Act
            var businessLogicManager = new BusinessLogicManager(null, null, petWalkManagerMock, petManagerMock, priceManagerMock);
            var actualResult         = businessLogicManager.GetDateCost(DateTime.Today);

            //Assert
            Assert.AreEqual(60, actualResult);
            priceManagerMock.AssertWasCalled(x => x.LoadPrices());
            petManagerMock.AssertWasCalled(x => x.GetPetsByPackId(Arg <long> .Is.Equal(1)));
            priceManagerMock.AssertWasCalled(x => x.GetPriceBySizeAndAgression(Arg <string> .Is.Equal("Small"), Arg <bool> .Is.Equal(true)));
            priceManagerMock.AssertWasCalled(x => x.GetPriceBySizeAndAgression(Arg <string> .Is.Equal("Small"), Arg <bool> .Is.Equal(false)));
            priceManagerMock.AssertWasCalled(x => x.GetPriceBySizeAndAgression(Arg <string> .Is.Equal("Large"), Arg <bool> .Is.Equal(false)));
        }