public void UpdateNonExistentMarkdownReturnsError()
        {
            Mock <IRepository <Markdown> > mockMarkdownRepository = new Mock <IRepository <Markdown> >();

            mockMarkdownRepository.Setup(x => x.Update(nonExistentMarkdownWithExistingPrice)).Returns(false);
            mockMarkdownRepository.Setup(x => x.GetAll()).Returns(markdownList);

            Mock <IRepository <Product> > mockPriceRepository = new Mock <IRepository <Product> >();

            mockPriceRepository.Setup(x => x.GetAll()).Returns(productList);

            MarkdownDataAccessor markdownDataAccessor = new MarkdownDataAccessor(mockMarkdownRepository.Object,
                                                                                 mockPriceRepository.Object);

            var result = markdownDataAccessor.Update(nonExistentMarkdownWithExistingPrice);

            Assert.AreEqual(result, "Markdown does not exist, create markdown before updating price.");
        }
        public void UpdateInvalidExistingMarkdownReturnsError()
        {
            Mock <IRepository <Markdown> > mockMarkdownRepository = new Mock <IRepository <Markdown> >();

            mockMarkdownRepository.Setup(x => x.Update(invalidMarkdown)).Returns(false);
            mockMarkdownRepository.Setup(x => x.GetAll()).Returns(markdownList);

            Mock <IRepository <Product> > mockPriceRepository = new Mock <IRepository <Product> >();

            mockPriceRepository.Setup(x => x.GetAll()).Returns(productList);

            MarkdownDataAccessor markdownDataAccessor = new MarkdownDataAccessor(mockMarkdownRepository.Object,
                                                                                 mockPriceRepository.Object);

            var result = markdownDataAccessor.Update(invalidMarkdown);

            Assert.AreEqual(result, "Error: Markdown must be smaller than price.");
        }
        public void UpdateMarkdownForNonExistentPriceReturnsError()
        {
            Mock <IRepository <Markdown> > mockMarkdownRepository = new Mock <IRepository <Markdown> >();

            mockMarkdownRepository.Setup(x => x.Update(nonExistentMarkdownWithoutExistingPrice)).Returns(false);
            mockMarkdownRepository.Setup(x => x.GetAll()).Returns(markdownList);

            Mock <IRepository <Product> > mockPriceRepository = new Mock <IRepository <Product> >();

            mockPriceRepository.Setup(x => x.GetAll()).Returns(productList);

            MarkdownDataAccessor markdownDataAccessor = new MarkdownDataAccessor(mockMarkdownRepository.Object,
                                                                                 mockPriceRepository.Object);

            var result = markdownDataAccessor.Update(nonExistentMarkdownWithoutExistingPrice);

            Assert.AreEqual(result, "Error: Cannot update markdown for a product that doesn't have a price.");
        }
        public void UpdateValidExistingMarkdownReturnsSuccess()
        {
            Mock <IRepository <Markdown> > mockMarkdownRepository = new Mock <IRepository <Markdown> >();

            mockMarkdownRepository.Setup(x => x.Update(validMarkdown)).Returns(true);
            mockMarkdownRepository.Setup(x => x.GetAll()).Returns(markdownList);

            Mock <IRepository <Product> > mockPriceRepository = new Mock <IRepository <Product> >();

            mockPriceRepository.Setup(x => x.GetAll()).Returns(productList);

            MarkdownDataAccessor markdownDataAccessor = new MarkdownDataAccessor(mockMarkdownRepository.Object,
                                                                                 mockPriceRepository.Object);

            var result = markdownDataAccessor.Update(validMarkdown);

            Assert.AreEqual(result, "Success.");
        }