public void Start_ShouldExecuteCreateToothpaste_IfInputIsInTheCorrectFormat() { Console.SetIn(new StringReader("CreateToothpaste White+ Colgate 15.50 men fluor,bqla,golqma\r\n\r\n")); Console.SetOut(new StringWriter()); var mockFactory = new Mock <ICosmeticsFactory>(); var mockCart = new Mock <IShoppingCart>(); var engine = new FakeCosmeticsEngine(mockFactory.Object, mockCart.Object); var mockToothpaste = new Mock <IToothpaste>(); mockFactory.Setup(mock => mock.CreateToothpaste( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <decimal>(), It.IsAny <GenderType>(), It.IsAny <IList <string> >())).Returns(mockToothpaste.Object); engine.Start(); mockFactory.Verify(mock => mock.CreateToothpaste( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <decimal>(), It.IsAny <GenderType>(), It.IsAny <IList <string> >()), Times.Once()); }
public void Start_ShouldExecuteCreateShampoo_IfInputIsInTheCorrectFormat() { Console.SetIn(new StringReader("CreateShampoo Cool Nivea 0.50 men 500 everyday\r\n\r\n")); Console.SetOut(new StringWriter()); var mockFactory = new Mock <ICosmeticsFactory>(); var mockCart = new Mock <IShoppingCart>(); var engine = new FakeCosmeticsEngine(mockFactory.Object, mockCart.Object); var mockShampoo = new Mock <IShampoo>(); mockFactory.Setup(mock => mock.CreateShampoo( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <decimal>(), It.IsAny <GenderType>(), It.IsAny <uint>(), It.IsAny <UsageType>())).Returns(mockShampoo.Object); engine.Start(); mockFactory.Verify(mock => mock.CreateShampoo( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <decimal>(), It.IsAny <GenderType>(), It.IsAny <uint>(), It.IsAny <UsageType>()), Times.Once()); }
public void AddSelectedProductToTargetCategory_WhenProcessingValidAddToCategoryCommand() { // arrange var factoryStub = new Mock <ICosmeticsFactory>(); var cartStub = new Mock <IShoppingCart>(); var commandParserStub = new Mock <ICommandParser>(); // setting up command var commandStub = new Mock <ICommand>(); string commandName = "AddToCategory"; string categoryToAddToName = "Chocolates"; string productToAddName = "Milka"; var commandParameters = new List <string>() { categoryToAddToName, productToAddName }; commandStub.Setup(x => x.Name).Returns(commandName); commandStub.Setup(x => x.Parameters).Returns(commandParameters); // setting up category var categoryMock = new Mock <ICategory>(); categoryMock.Setup(x => x.AddProduct(It.IsAny <IProduct>())); // setting up commandParser var commandsToReturn = new List <ICommand>() { commandStub.Object }; commandParserStub.Setup(x => x.ReadCommands()) .Returns(commandsToReturn); var engine = new FakeCosmeticsEngine( factoryStub.Object, cartStub.Object, commandParserStub.Object ); // setting up collections engine.Products.Add(productToAddName, null); engine.Categories.Add(categoryToAddToName, categoryMock.Object); // act engine.Start(); // assert categoryMock.Verify( x => x.AddProduct(It.IsAny <IProduct>()), Times.Once); }
public void RemoveProductFromTheShoppingCart_WhenProcessingValidRemoveFromShoppingCartCommand() { // arrange var factoryStub = new Mock <ICosmeticsFactory>(); var cartMock = new Mock <IShoppingCart>(); var commandParserStub = new Mock <ICommandParser>(); // setting up command var commandStub = new Mock <ICommand>(); string commandName = "RemoveFromShoppingCart"; string productName = "SomeName"; var commandParameters = new List <string>() { productName }; // setting up command to process commandStub.Setup(x => x.Name).Returns(commandName); commandStub.Setup(x => x.Parameters).Returns(commandParameters); // setting up commandParser var commandsToReturn = new List <ICommand>() { commandStub.Object }; commandParserStub.Setup(x => x.ReadCommands()) .Returns(commandsToReturn); // setting up shopping cart cartMock.Setup(x => x.RemoveProduct(It.IsAny <IProduct>())); cartMock.Setup(x => x.ContainsProduct(It.IsAny <IProduct>())) .Returns(true); var engine = new FakeCosmeticsEngine( factoryStub.Object, cartMock.Object, commandParserStub.Object ); engine.Products.Add(productName, null); // act engine.Start(); // assert cartMock.Verify(x => x.RemoveProduct(It.IsAny <IProduct>()), Times.Once); }
public void CallTargetCategoryPrintMethod_WhenProcessingValidShowCategoryCommand() { // arrange var factoryStub = new Mock <ICosmeticsFactory>(); var cartStub = new Mock <IShoppingCart>(); var commandParserStub = new Mock <ICommandParser>(); // setting up command var commandStub = new Mock <ICommand>(); string commandName = "ShowCategory"; string categoryToShowName = "Chocolates"; var commandParameters = new List <string>() { categoryToShowName, }; commandStub.Setup(x => x.Name).Returns(commandName); commandStub.Setup(x => x.Parameters).Returns(commandParameters); // setting up category var categoryMock = new Mock <ICategory>(); categoryMock.Setup(x => x.Print()); // setting up commandParser var commandsToReturn = new List <ICommand>() { commandStub.Object }; commandParserStub.Setup(x => x.ReadCommands()) .Returns(commandsToReturn); var engine = new FakeCosmeticsEngine( factoryStub.Object, cartStub.Object, commandParserStub.Object ); // setting up collections engine.Categories.Add(categoryToShowName, categoryMock.Object); // act engine.Start(); // assert categoryMock.Verify( x => x.Print(), Times.Once); }
public void ShouldProcessAndAddCategoryToCategoriesCollection_WhenProcessingValidCreateCategoryCommand() { // arrange var factoryStub = new Mock <ICosmeticsFactory>(); var cartStub = new Mock <IShoppingCart>(); var commandParserStub = new Mock <ICommandParser>(); // setting up command var commandStub = new Mock <ICommand>(); string commandName = "CreateCategory"; string categoryName = "SomeCategory"; var commandParameters = new List <string>() { categoryName }; commandStub.Setup(x => x.Name).Returns(commandName); commandStub.Setup(x => x.Parameters).Returns(commandParameters); // setting up category var categoryToAddStub = new Mock <ICategory>(); factoryStub.Setup(x => x.CreateCategory(It.IsAny <string>())) .Returns(categoryToAddStub.Object); // setting up commandParser var commandsToReturn = new List <ICommand>() { commandStub.Object }; commandParserStub.Setup(x => x.ReadCommands()) .Returns(commandsToReturn); var engine = new FakeCosmeticsEngine( factoryStub.Object, cartStub.Object, commandParserStub.Object ); // act engine.Start(); // assert Assert.AreSame(categoryToAddStub.Object, engine.Categories.First().Value); Assert.AreEqual(categoryName, engine.Categories.First().Key); }
public void Start_ShouldExecuteAddToShoppingCart_IfInputIsInTheCorrectFormat() { Console.SetIn(new StringReader("AddToShoppingCart White+\r\n\r\n")); Console.SetOut(new StringWriter()); var mockFactory = new Mock <ICosmeticsFactory>(); var mockCart = new Mock <IShoppingCart>(); var mockProduct = new Mock <IProduct>(); var engine = new FakeCosmeticsEngine(mockFactory.Object, mockCart.Object); mockCart.Setup(mock => mock.AddProduct(It.IsAny <IProduct>())); engine.BaseProducts.Add("White+", mockProduct.Object); engine.Start(); mockCart.Verify(mock => mock.AddProduct(It.IsAny <IProduct>()), Times.Once()); }
public void Start_ShouldExecuteRemoveFromCategoryCommand_IfInputIsInTheCorrectFormat() { Console.SetIn(new StringReader("RemoveFromCategory ForMale White+\r\n\r\n")); Console.SetOut(new StringWriter()); var mockFactory = new Mock <ICosmeticsFactory>(); var mockCart = new Mock <IShoppingCart>(); var mockProdcut = new Mock <IProduct>(); var mockCategory = new Mock <ICategory>(); var engine = new FakeCosmeticsEngine(mockFactory.Object, mockCart.Object); mockCategory.Setup(mock => mock.RemoveCosmetics(It.IsAny <IProduct>())); engine.BaseProducts.Add("White+", mockProdcut.Object); engine.BaseCategories.Add("ForMale", mockCategory.Object); engine.Start(); mockCategory.Verify(mock => mock.RemoveCosmetics(It.IsAny <IProduct>()), Times.Once()); }
public void AddNewlyCreatedToothpasteToProducts_WhenProcessingValidCreateToothpasteCommand() { // arrange var factoryStub = new Mock <ICosmeticsFactory>(); var cartStub = new Mock <IShoppingCart>(); var commandParserStub = new Mock <ICommandParser>(); // setting up command var commandStub = new Mock <ICommand>(); string commandName = "CreateToothpaste"; var toothpasteName = "Nivea"; var tootahpasteBrand = "Maaan"; var toothpastePrice = "15"; var toothpasteGender = "men"; var toothpasteIngredients = "Some, Some, SomeMore"; var commandParameters = new List <string>() { toothpasteName, tootahpasteBrand, toothpastePrice, toothpasteGender, toothpasteIngredients }; // setting up command to process commandStub.Setup(x => x.Name).Returns(commandName); commandStub.Setup(x => x.Parameters).Returns(commandParameters); // setting up commandParser var commandsToReturn = new List <ICommand>() { commandStub.Object }; commandParserStub.Setup(x => x.ReadCommands()) .Returns(commandsToReturn); // setting up factory var toothpasteStub = new Mock <IToothpaste>(); factoryStub.Setup( x => x.CreateToothpaste( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <decimal>(), It.IsAny <GenderType>(), It.IsAny <IList <string> >() )).Returns(toothpasteStub.Object); var engine = new FakeCosmeticsEngine( factoryStub.Object, cartStub.Object, commandParserStub.Object ); // act engine.Start(); // assert Assert.AreSame(engine.Products.First().Value, toothpasteStub.Object); }
public void AddNewlyCreatedShampoo_WhenProcessingValidCreateShampooCommnad() { // arrange var factoryStub = new Mock <ICosmeticsFactory>(); var cartStub = new Mock <IShoppingCart>(); var commandParserStub = new Mock <ICommandParser>(); // setting up command var commandStub = new Mock <ICommand>(); string commandName = "CreateShampoo"; var shampooName = "Nivea"; var shampooBrand = "Maaan"; var shampooPrice = "15"; var shampooGender = "men"; var shampooMilliliters = "100"; var shampooUsage = "everyday"; var commandParameters = new List <string>() { shampooName, shampooBrand, shampooPrice, shampooGender, shampooMilliliters, shampooUsage }; // setting up command to process commandStub.Setup(x => x.Name).Returns(commandName); commandStub.Setup(x => x.Parameters).Returns(commandParameters); // setting up commandParser var commandsToReturn = new List <ICommand>() { commandStub.Object }; commandParserStub.Setup(x => x.ReadCommands()) .Returns(commandsToReturn); // setting up factory var shampooStub = new Mock <IShampoo>(); factoryStub.Setup( x => x.CreateShampoo( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <decimal>(), It.IsAny <GenderType>(), It.IsAny <uint>(), It.IsAny <UsageType>() )).Returns(shampooStub.Object); var engine = new FakeCosmeticsEngine( factoryStub.Object, cartStub.Object, commandParserStub.Object ); // act engine.Start(); // assert Assert.AreSame(engine.Products.First().Value, shampooStub.Object); }