Ejemplo n.º 1
0
        private Book GetBook()
        {
            Book book = null;

            try
            {
                var price = GetBestPrice();
                var url   = GetOfferUrl();
                var title = GetTitle();

                book = BookFactory.CreateBook(price, url, title);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error during book conversion from Amazon service. \nError:\n" + ex.Message);
            }

            return(book);
        }
Ejemplo n.º 2
0
        public void TestLoadAll()
        {
            int?newBookId = BookFactory.CreateNewBook(Db, "test book", "test author");

            if (newBookId == null)
            {
                Assert.Fail("Book not created properly");
            }
            else
            {
                var testBooks = BookFactory.LoadAll(Db);
                var testBook  = testBooks.Find(book => book.Id == (int)newBookId);

                Assert.IsNotNull(testBooks);
                Assert.IsNotNull(testBook);

                BookFactory.DeleteBook(Db, (int)newBookId);
            }
        }
        public async Task <HttpResponseMessage> Post([FromBody] Book book)
        {
            try
            {
                var authorized = CheckAuthorization();
                if (!authorized)
                {
                    return(new HttpResponseMessage(HttpStatusCode.Unauthorized));
                }

                if (!string.IsNullOrWhiteSpace(book.ISBN))
                {
                    return(new HttpResponseMessage(HttpStatusCode.BadRequest));
                }
                Console.WriteLine($"POST /api/books");
                Console.WriteLine(JsonConvert.SerializeObject(book));

                book.ISBN = BookFactory.CreateISBN();

                if (!ModelState.IsValid)
                {
                    return(new HttpResponseMessage(HttpStatusCode.BadRequest));
                }

                if (UserBooks.Any(x => x.ISBN == book.ISBN))
                {
                    return(new HttpResponseMessage(HttpStatusCode.Conflict));
                }

                UserBooks.Add(book);

                var json = JsonConvert.SerializeObject(book);

                HttpContext.Response.ContentType = "application/json";
                return(new HttpResponseMessage(HttpStatusCode.Created));
            }
            catch (Exception ex)
            {
                return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
        }
Ejemplo n.º 4
0
        public void TestUpdateBook()
        {
            var id = BookFactory.CreateNewBook(Db, "test book", "test author");

            if (id == null)
            {
                Assert.Fail("Book not created properly");
            }
            else
            {
                BookFactory.UpdateBook(Db, (int)id, "updated title", "updated author");

                var testBook = BookFactory.LoadSingle(Db, (int)id);

                Assert.IsNotNull(testBook);
                Assert.AreEqual("updated title", testBook.Title);
                Assert.AreEqual("updated author", testBook.Author);

                BookFactory.DeleteBook(Db, (int)id);
            }
        }
Ejemplo n.º 5
0
        private Book GetBook()
        {
            ApressBook apressBook = null;

            try
            {
                var json = _htmlDocument
                           .DocumentNode
                           .Descendants("script")
                           .Where(y => y.InnerHtml.Contains("\n   dataLayer ="))
                           .FirstOrDefault().InnerText;

                json       = json.Remove(0, 17);
                json       = json.Remove(json.Length - 3, 2);
                apressBook = JsonConvert.DeserializeObject <ApressBook>(json);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error during book conversion from Apress service. \nError:\n" + ex.Message);
            }

            return(BookFactory.CreateBook(apressBook));
        }
        async Task RequestLoanCommand_WithValidInfos_ShoudlReturnSuccess()
        {
            //arrage
            RequestLoanCommand command = new RequestLoanCommand("12345678998", Guid.NewGuid().ToString());

            Mocker.GetMock <IPersonRepository>()
            .Setup(p => p.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(() => Task.FromResult(PersonFactory.ReturnPerson()));

            Mocker.GetMock <IBookRepository>()
            .Setup(b => b.GetById(It.IsAny <Guid>()))
            .Returns(() => Task.FromResult <Book>(BookFactory.ReturnBook()));
            var sut = Mocker.CreateInstance <RequestLoanCommandHandler>();
            //act
            await sut.Handle(command, new CancellationToken());

            //assert
            Mocker.GetMock <IPersonRepository>().Verify(x => x.GetByDocument(It.IsAny <string>(), It.IsAny <bool>()), Times.Once());
            Mocker.GetMock <IBookRepository>().Verify(x => x.GetById(It.IsAny <Guid>()), Times.Once());
            Mocker.GetMock <IBookLoanRepository>().Verify(x => x.Add(It.IsAny <BookLoan>()), Times.Once);

            DomainNotifications.GetAll().Should().BeEmpty();
        }
    static void Main(string[] args)
    {
        int         booksCount  = int.Parse(Console.ReadLine());
        BookFactory bookFactory = new BookFactory();

        Library library = new Library();

        var authors = new Dictionary <string, double>();

        for (int counter = 0; counter < booksCount; counter++)
        {
            string[] bookArgs = Console.ReadLine()
                                .Split()
                                .ToArray();

            Book book = bookFactory.CreateBook(bookArgs);
            library.AddBook(book);
        }

        foreach (var book in library.Books)
        {
            if (authors.ContainsKey(book.Author) == false)
            {
                authors.Add(book.Author, 0);
            }

            authors[book.Author] += book.Price;
        }

        foreach (var author in authors
                 .OrderByDescending(x => x.Value)
                 .ThenBy(x => x.Key))
        {
            string result = $"{author.Key} -> {author.Value:F2}";
            Console.WriteLine(result);
        }
    }
Ejemplo n.º 8
0
        public void CheckBookData_WrongPriceRange_ReturnFalse()
        {
            var result = BookFactory.CheckBookData("3127876546789", 1000);

            Assert.IsFalse(result);
        }
Ejemplo n.º 9
0
        public void CheckBookData_WrongIsbnLength_ReturnFalse()
        {
            var result = BookFactory.CheckBookData("222127876546789", 100);

            Assert.IsFalse(result);
        }
Ejemplo n.º 10
0
        private static void Main()
        {
            const DesignPatterns designPatterns = DesignPatterns.装饰模式;

            switch (designPatterns)
            {
            case DesignPatterns.单例模式:
                Singleton singleton = Singleton.GetInstance();
                Console.WriteLine(singleton.Say());
                break;

            case DesignPatterns.工厂模式:
                //简单工厂
                BookFactory bookFactory  = new BookFactory();
                IBook       chineseBook1 = bookFactory.CreateBook("语文");
                IBook       mathBook1    = bookFactory.CreateBook("数学");
                chineseBook1.Info();
                mathBook1.Info();
                //工厂方法
                ChineseBookFactory chineseBookFactory = new ChineseBookFactory();
                MathBookFactory    mathBookFactory    = new MathBookFactory();
                IBook chineseBook2 = chineseBookFactory.CreateBook();
                IBook mathBook2    = mathBookFactory.CreateBook();
                chineseBook2.Info();
                mathBook2.Info();
                //抽象工厂
                FirstGradeBookFactory firstGradeBookFactory = new FirstGradeBookFactory();
                SecondGradeFactory    secondGradeFactory    = new SecondGradeFactory();
                IBook chineseBook3 = firstGradeBookFactory.CreateChineseBook();
                IBook mathBook3    = firstGradeBookFactory.CreateMathBook();
                chineseBook3.Info();
                mathBook3.Info();
                IBook chineseBook4 = secondGradeFactory.CreateChineseBook();
                IBook mathBook4    = secondGradeFactory.CreateMathBook();
                chineseBook4.Info();
                mathBook4.Info();
                break;

            case DesignPatterns.装饰模式:
                Zhangsan     zhangsan     = new Zhangsan();
                ZhangsanSayA zhangsanSayA = new ZhangsanSayA();
                ZhangsanSayB zhangsanSayB = new ZhangsanSayB();
                zhangsanSayA.Tell(zhangsan);
                zhangsanSayB.Tell(zhangsanSayA);
                zhangsanSayB.Say();
                break;

            case DesignPatterns.外观模式:
                Lisi lisi = new Lisi();
                lisi.OneDay();
                break;

            case DesignPatterns.代理模式:
                MathProxy proxy = new MathProxy();
                Console.WriteLine("8 + 2 = " + proxy.Add(8, 2));
                Console.WriteLine("8 - 2 = " + proxy.Sub(8, 2));
                Console.WriteLine("8 * 2 = " + proxy.Mul(8, 2));
                Console.WriteLine("8 / 2 = " + proxy.Div(8, 2));
                break;

            case DesignPatterns.观察者模式:
                //被观察者
                Hero hero = new Hero();
                //添加观察者
                hero.AttachObserver(new Monster());
                hero.AttachObserver(new Trap());
                hero.AttachObserver(new Treasure());
                //通知观察者
                hero.Move();
                break;
            }
        }
Ejemplo n.º 11
0
 protected override void SetUp()
 {
     base.SetUp();
     bookFactory = new BookFactory();
 }
 public Book AsBook()
 {
     return(BookFactory.BookFromHtmlNode(htmlNode));
 }
Ejemplo n.º 13
0
 public void Delete(int id)
 {
     BookFactory.DeleteBook(Db, id);
 }
Ejemplo n.º 14
0
 // returns the id of the new list as a string
 public int?Post([FromBody] BookFromBody value)
 {
     return(BookFactory.CreateNewBook(Db, value.Title, value.Author));
 }
Ejemplo n.º 15
0
 public List <Book> Get()
 {
     return(BookFactory.LoadAll(Db));
 }
Ejemplo n.º 16
0
        public void CheckBookData_CorrectData_ReturnTrue()
        {
            var result = BookFactory.CheckBookData("2547852000369", 100);

            Assert.IsTrue(result);
        }
Ejemplo n.º 17
0
 public MainWindow()
 {
     InitializeComponent();
     DataContext = new BookFactory().GetBooks();
 }
Ejemplo n.º 18
0
 public LibraryManagement()
 {
     this.authorFactory      = new AuthorFactory();
     this.bookFactory        = new BookFactory();
     this.booksManipulatable = LoadBooks();
 }