예제 #1
0
        public Book Add(BookToCreate bookToCreate)
        {
            var book = Book.CreateFrom(bookToCreate);

            unitOfWork.BooksRepository.Insert(book);

            unitOfWork.Complete();
            return(book);
        }
        public void AddABook_EditTheBook_ShouldReturnTheBookEdited()
        {
            var book = new BookToCreate()
            {
                ISBN = "-", Name = "Clean Code"
            };

            // In-memory database only exists while the connection is open
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();

            try
            {
                var options = new DbContextOptionsBuilder <LibraryContext>()
                              .UseSqlite(connection)
                              .Options;

                // Create the schema in the database
                using (var context = new LibraryContext(options))
                {
                    context.Database.EnsureCreated();
                }

                // Run the test against one instance of the context
                using (var context = new LibraryContext(options))
                {
                    var mockUoW = new Mock <UnitOfWork>(context);
                    var service = new Mock <BooksService>(mockUoW.Object);

                    service.Object.Add(book);
                    context.SaveChanges();
                }

                // Use a separate instance of the context to verify correct data was saved to database
                using (var context = new LibraryContext(options))
                {
                    var mockUoW = new Mock <UnitOfWork>(context);
                    var service = new Mock <BooksService>(mockUoW.Object);

                    var bookRecovered = context.Books.FirstOrDefault();
                    var bookToEdit    = new BookToEdit {
                        ISBN = "123", Name = "Life is Beautiful"
                    };

                    var result = service.Object.Edit(bookRecovered.Id.ToString(), bookToEdit);

                    result.ISBN.Should().Be(bookToEdit.ISBN);
                }
            }
            finally
            {
                connection.Close();
            }
        }
예제 #3
0
        public static Book CreateFrom(BookToCreate bookToCreate)
        {
            var book = Create <Book>();

            book.ISBN        = bookToCreate.ISBN;
            book.Name        = bookToCreate.Name;
            book.ReleaseDate = bookToCreate.ReleaseDate;
            book.AuthorName  = bookToCreate.AuthorName;

            return(book);
        }
예제 #4
0
        public async Task <object> Add(BookToCreate bookToCreate)
        {
            var request = new RestRequest("/api/books")
            {
                Method = Method.POST, RequestFormat = DataFormat.Json
            };

            request.AddJsonBody(bookToCreate);

            var result = await libraryClient.ExecutePostAsync <BookToReturn>(request);

            return(result.Data);
        }
예제 #5
0
 public IActionResult CreateBook([FromBody] BookToCreate newBook)
 {
     if (ModelState.IsValid)
     {
         _context.BooksList.Add(new Books(newBook.IBIN.Value, newBook.Title, newBook.Type.Value, newBook.AuthorId));
         _context.SaveChanges();
         return(Ok());
     }
     else
     {
         return(BadRequest(ModelState));
     }
 }
        public void GetAllBooks_Add2BooksToTheRepository_ShouldReturn2Books()
        {
            // In-memory database only exists while the connection is open
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();

            try
            {
                var options = new DbContextOptionsBuilder <LibraryContext>()
                              .UseSqlite(connection)
                              .Options;

                // Create the schema in the database
                using (var context = new LibraryContext(options))
                {
                    context.Database.EnsureCreated();
                }

                // Run the test against one instance of the context
                using (var context = new LibraryContext(options))
                {
                    var mockUoW = new Mock <UnitOfWork>(context);
                    var service = new Mock <BooksService>(mockUoW.Object);
                    var books   = new BookToCreate[] {
                        new BookToCreate {
                            Name = "Livro 1", ISBN = "ABC123"
                        },
                        new BookToCreate {
                            Name = "Livro 2", ISBN = "DEF123"
                        }
                    };

                    service.Object.AddRange(books);
                    context.SaveChanges();
                }

                // Use a separate instance of the context to verify correct data was saved to database
                using (var context = new LibraryContext(options))
                {
                    context.Books.Should().HaveCount(2, "2 books was added to the repository");
                }
            }
            finally
            {
                connection.Close();
            }
        }
예제 #7
0
 public async Task <IActionResult> Add([FromBody] BookToCreate bookToAdd)
 {
     return(Ok(await booksService.Add(bookToAdd)));
 }
예제 #8
0
 public Book Add(BookToCreate bookToCreate)
 {
     return(booksService.Add(bookToCreate));
 }