Пример #1
0
        public void TestBookProperties()
        {
            var book      = new Book();
            var publisher = new Publisher("Publisher Test");
            var author1   = new Author("Test Author");

            author1.Id = 2;
            var a = new Author("Test")
            {
                Id = 1
            };
            var author2 = new Author("Author Test")
            {
                Id = 2
            };

            var bookAuthors = new List <BookAuthor>()
            {
                new BookAuthor()
                {
                    Book     = book,
                    BookId   = book.Id,
                    Author   = author1,
                    AuthorId = author1.Id
                },
                new BookAuthor()
                {
                    Book     = book,
                    BookId   = book.Id,
                    Author   = author2,
                    AuthorId = author2.Id
                },
            };
            var isbn           = Isbn.FromValue("9788574591865");
            var synopsis       = "Synopsis";
            var numberOfCopies = 2;

            book.Title           = "Test";
            book.Id              = 3;
            book.Publisher       = publisher;
            book.Authors         = bookAuthors;
            book.Isbn            = isbn;
            book.Synopsis        = synopsis;
            book.PublicationYear = 2002;
            book.NumberOfCopies  = numberOfCopies;

            Assert.IsNotNull(book);
            Assert.AreEqual("Test", book.Title);
            Assert.AreEqual(3, book.Id);
            Assert.AreEqual(2002, book.PublicationYear);
            Assert.AreEqual(publisher, book.Publisher);
            Assert.AreEqual(isbn, book.Isbn);
            Assert.AreEqual(synopsis, book.Synopsis);
            Assert.AreEqual(numberOfCopies, book.NumberOfCopies);
            bookAuthors.AssertListEquals(book.Authors);
        }
Пример #2
0
        public void TestGetIsbnCheckValueProperties()
        {
            var isbn = Isbn.FromValue("9788574591865");

            isbn.Id = 3;

            Assert.IsNotNull(isbn);
            Assert.AreEqual("9788574591865", isbn.Value);
            Assert.AreEqual(3, isbn.Id);
        }
Пример #3
0
        private static void SeedDatabase(IApplicationBuilder app)
        {
            using (var serviceScope = app.ApplicationServices.GetRequiredService <IServiceScopeFactory>().CreateScope())
            {
                var context = serviceScope.ServiceProvider.GetService <ZLibraryContext>();

                if (context.Users.Any())
                {
                    return;
                }

                var users = UserFactory.CreateUsers();
                context.Users.AddRange(users);

                var authors = AuthorFactory.CreateAuthors();
                context.Authors.AddRange(authors);

                var publishers = PublisherFactory.CreatePublishers();
                context.Publishers.AddRange(publishers);

                context.SaveChanges();

                /***********************************/
                /**** ONLY FOR TESTS PURPOSES   ****/
                /***********************************/


                var andrewTroelsen = context.Authors.Single(a => a.Name == "Andrew Troelsen");
                var jackPhillips   = context.Authors.Single(a => a.Name == "Jack Phillips");
                var simonSarris    = context.Authors.Single(a => a.Name == "Simon Sarris");
                var martinFowler   = context.Authors.Single(a => a.Name == "Martin Fowler");
                var bruceEckel     = context.Authors.Single(a => a.Name == "Bruce Eckel");


                var book = new Book()
                {
                    Isbn            = Isbn.FromValue("9780321127426"),
                    PublicationYear = 2014,
                    Publisher       = publishers.Where <Publisher>(p => p.Name == "Editora Futura").SingleOrDefault(),
                    Synopsis        = "HTML5 Unleashed is the authoritative guide that covers the key web components driving the future of the Web",
                    Title           = "HTML 5 - Unleashed",
                    NumberOfCopies  = 3,
                    CoverImageKey   = Guid.Parse("80ae1455-8f43-4a40-aa41-39e486fd61d1")
                };
                context.Books.Add(book);
                context.SaveChanges();

                book.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book,
                        BookId   = book.Id,
                        Author   = simonSarris,
                        AuthorId = simonSarris.Id
                    }
                };
                context.SaveChanges();

                var book2 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780672336270"),
                    PublicationYear = 2014,
                    Publisher       = publishers.FirstOrDefault(),
                    Synopsis        = "Java 2 for professional development and best practices.",
                    Title           = "Effective Java Java Java Java Java Java Java Java Java Java Java Java Java Java Java Javaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                    NumberOfCopies  = 2,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a21")
                };
                context.Books.Add(book2);
                context.SaveChanges();

                book2.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book2,
                        BookId   = book2.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book2,
                        BookId   = book2.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book2,
                        BookId   = book2.Id,
                        Author   = bruceEckel,
                        AuthorId = bruceEckel.Id
                    }
                };
                context.SaveChanges();

                var book3 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780316037723"),
                    PublicationYear = 2014,
                    Publisher       = publishers.Where <Publisher>(p => p.Name == "Addison - Wesley").SingleOrDefault(),
                    Synopsis        = "The practice of enterprise application development has benefited from the emergence of many new enabling technologies.",
                    Title           = "Enterprise Application Architecture",
                    NumberOfCopies  = 1,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a22")
                };

                context.Books.Add(book3);
                context.SaveChanges();

                book3.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book3,
                        BookId   = book3.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book3,
                        BookId   = book3.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                var book4 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780316037723"),
                    PublicationYear = 2014,
                    Publisher       = publishers.Where <Publisher>(p => p.Name == "Addison - Wesley").SingleOrDefault(),
                    Synopsis        = "The practice of enterprise application development has benefited from the emergence of many new enabling technologies.",
                    Title           = "Enterprise Application Architecture",
                    NumberOfCopies  = 1,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a23")
                };

                context.Books.Add(book4);
                context.SaveChanges();

                book4.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book4,
                        BookId   = book4.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book4,
                        BookId   = book4.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                var book5 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780316037723"),
                    PublicationYear = 2014,
                    Publisher       = publishers.Where <Publisher>(p => p.Name == "Addison - Wesley").SingleOrDefault(),
                    Synopsis        = "The practice of enterprise application development has benefited from the emergence of many new enabling technologies.",
                    Title           = "Enterprise Application Architecture",
                    NumberOfCopies  = 1,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a24")
                };

                context.Books.Add(book5);
                context.SaveChanges();

                book5.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book5,
                        BookId   = book5.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book5,
                        BookId   = book5.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                var book6 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780672336270"),
                    PublicationYear = 2014,
                    Publisher       = publishers.FirstOrDefault(),
                    Synopsis        = "Java 2 for professional development and best practices.",
                    Title           = "Effective Java",
                    NumberOfCopies  = 2,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a25")
                };
                context.Books.Add(book6);
                context.SaveChanges();

                book6.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book6,
                        BookId   = book6.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book6,
                        BookId   = book6.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                var book7 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780672336270"),
                    PublicationYear = 2014,
                    Publisher       = publishers.FirstOrDefault(),
                    Synopsis        = "Java 2 for professional development and best practices.",
                    Title           = "Effective Java",
                    NumberOfCopies  = 2,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a26")
                };
                context.Books.Add(book7);
                context.SaveChanges();

                book7.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book7,
                        BookId   = book7.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book7,
                        BookId   = book7.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                var book8 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780672336270"),
                    PublicationYear = 2014,
                    Publisher       = publishers.FirstOrDefault(),
                    Synopsis        = "Java 2 for professional development and best practices.",
                    Title           = "Effective Java",
                    NumberOfCopies  = 2,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a27")
                };
                context.Books.Add(book8);
                context.SaveChanges();

                book8.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book8,
                        BookId   = book8.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book8,
                        BookId   = book8.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                var book9 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780672336270"),
                    PublicationYear = 2014,
                    Publisher       = publishers.FirstOrDefault(),
                    Synopsis        = "Java 2 for professional development and best practices.",
                    Title           = "Effective Java",
                    NumberOfCopies  = 2,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a28")
                };
                context.Books.Add(book9);
                context.SaveChanges();

                book9.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book9,
                        BookId   = book9.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book9,
                        BookId   = book9.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                var book10 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780672336270"),
                    PublicationYear = 2014,
                    Publisher       = publishers.FirstOrDefault(),
                    Synopsis        = "Java 2 for professional development and best practices.",
                    Title           = "Effective Java",
                    NumberOfCopies  = 2,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a29")
                };
                context.Books.Add(book10);
                context.SaveChanges();

                book10.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book10,
                        BookId   = book10.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book10,
                        BookId   = book10.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                var book11 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780672336270"),
                    PublicationYear = 2014,
                    Publisher       = publishers.FirstOrDefault(),
                    Synopsis        = "Java 2 for professional development and best practices.",
                    Title           = "Effective Java",
                    NumberOfCopies  = 2,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a30")
                };
                context.Books.Add(book11);
                context.SaveChanges();

                book11.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book11,
                        BookId   = book11.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book11,
                        BookId   = book11.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                var book12 = new Book()
                {
                    Isbn            = Isbn.FromValue("9780672336270"),
                    PublicationYear = 2014,
                    Publisher       = publishers.FirstOrDefault(),
                    Synopsis        = "Java 2 for professional development and best practices.",
                    Title           = "Effective Java",
                    NumberOfCopies  = 2,
                    CoverImageKey   = Guid.Parse("5b0cf369-a0b2-4643-ac84-36058e729a31")
                };
                context.Books.Add(book12);
                context.SaveChanges();

                book12.Authors = new List <BookAuthor>()
                {
                    new BookAuthor()
                    {
                        Book     = book12,
                        BookId   = book12.Id,
                        Author   = jackPhillips,
                        AuthorId = jackPhillips.Id
                    },
                    new BookAuthor()
                    {
                        Book     = book12,
                        BookId   = book12.Id,
                        Author   = andrewTroelsen,
                        AuthorId = andrewTroelsen.Id
                    }
                };
                context.SaveChanges();

                // var book3 = new Book()
                // {
                //     Authors = new List<Author>() { martinFowler },
                //     Isbn = Isbn.FromValue("9780316037723"),
                //     PublicationYear = 2014,
                //     Publisher = publishers.Where<Publisher>(p => p.Name == "Addison - Wesley").SingleOrDefault(),
                //     Synopsis = "The practice of enterprise application development has benefited from the emergence of many new enabling technologies.",
                //     Title = "Patterns of Enterprise Application Architecture"
                // };
                // martinFowler.Books = new List<Book>() { book3 };
                // context.Books.Add(book3);
                // context.SaveChanges();

                // var book4 = new Book()
                // {
                //     Authors = new List<Author>() { andrewTroelsen },
                //     Isbn = Isbn.FromValue("9780201738292"),
                //     PublicationYear = 2014,
                //     Publisher = publishers.FirstOrDefault(),
                //     Synopsis = "Java 2 for professional development and best practices.",
                //     Title = "Java"
                // };
                // andrewTroelsen.Books = new List<Book>() { book2, book4 };
                // context.Books.Add(book4);
                // context.SaveChanges();

                // var book5 = new Book()
                // {
                //     Authors = context.Authors.Where(a => a.Name == "Andrew Troelsen" || a.Name == "Martin Fowler").ToList(),
                //     Isbn = Isbn.FromValue("9780316380508"),
                //     PublicationYear = 2014,
                //     Publisher = publishers.FirstOrDefault(),
                //     Synopsis = "Java 2 for professional development and best practices.",
                //     Title = "Java Cool"
                // };
                // context.Books.Add(book5);
                // context.SaveChanges();

                // var book6 = new Book()
                // {
                //     Authors = context.Authors.Where(a => a.Name == "Andrew Troelsen" || a.Name == "Martin Fowler").ToList(),
                //     Isbn = Isbn.FromValue("9780764542800"),
                //     PublicationYear = 2014,
                //     Publisher = publishers.Where(p => p.Name == "Addison - Wesley").SingleOrDefault(),
                //     Synopsis = "Java 2 for professional development and best practices.",
                //     Title = "Java F**k Cool"
                // };
                // context.Books.Add(book6);
                // context.SaveChanges();

                // var book7 = new Book()
                // {
                //     Authors = new List<Author>() { context.Authors.Single(a => a.Name == "Andrew Troelsen") },
                //     Isbn = Isbn.FromValue("9780764542800"),
                //     PublicationYear = 2014,
                //     Publisher = context.Publishers.Where(p => p.Name == "Addison - Wesley").SingleOrDefault(),
                //     Synopsis = "Java 2 for professional development and best practices.",
                //     Title = "Java Awesome Cool"
                // };
                // context.Books.Add(book7);
                // context.SaveChanges();

                var bookId     = 1;
                var firstUser  = users.SingleOrDefault(u => u.Id == 17);
                var secondUser = users.SingleOrDefault(u => u.Id == 16);

                var reservation1 = new Reservation(bookId, secondUser);
                reservation1.Reason.Status = ReservationStatus.Requested;
                context.Reservations.Add(reservation1);
                context.SaveChanges();

                var reservation2 = new Reservation(2, firstUser);
                reservation2.Reason.Status = ReservationStatus.Requested;
                context.Reservations.Add(reservation2);
                context.SaveChanges();

                var reservation3 = new Reservation(3, firstUser);
                reservation3.Reason.Status = ReservationStatus.Requested;
                context.Reservations.Add(reservation3);
                context.SaveChanges();

                var reservation4 = new Reservation(3, firstUser);
                reservation4.Reason.Status = ReservationStatus.Approved;
                context.Reservations.Add(reservation4);
                context.SaveChanges();

                /*
                 * var loan1 = new Loan(reservation1);
                 * loan1.Status = LoanStatus.Borrowed;
                 * //loan1.ExpirationDate = DateTime.Now.AddDays(-1);
                 * context.Loans.Add(loan1);
                 * context.SaveChanges();
                 *
                 * var loan2 = new Loan(reservation2);
                 * loan2.Status = LoanStatus.Returned;
                 * context.Loans.Add(loan2);
                 * context.SaveChanges();
                 *
                 * var loan3 = new Loan(reservation3);
                 * context.Loans.Add(loan3);
                 * context.SaveChanges();
                 *
                 * var loan4 = new Loan(reservation4);
                 * context.Loans.Add(loan4);
                 * context.SaveChanges();
                 */
            }
        }
Пример #4
0
 public void TestCreateNewIsbnFromValueWithFormatValueShouldInvalidOperationException()
 {
     var isbn = Isbn.FromValue("9728574591865");
 }
Пример #5
0
 public void TestCreateNewIsbnFromValueWithFormatValueShouldFormatException()
 {
     var isbn = Isbn.FromValue("Teste");
 }
Пример #6
0
 public void TestCreateNewIsbnFromValueWithWhiteSpaceConstructorShouldThrowException()
 {
     var isbn = Isbn.FromValue("   ");
 }
Пример #7
0
 public void TestCreateNewIsbnFromValueWithNullConstructorShouldThrowException()
 {
     var isbn = Isbn.FromValue(null);
 }
Пример #8
0
        public void TestCreateIsbnFromValue()
        {
            var isbn = Isbn.FromValue("9788574591865");

            Assert.IsNotNull(isbn);
        }
Пример #9
0
        public ValidationResult Validate(BookDTO value)
        {
            var validationResult = new ValidationResult();

            if (value == null)
            {
                validationResult.ErrorMessage = "Dados do livro inválidos.";
                return(validationResult);
            }

            if (string.IsNullOrWhiteSpace(value.Title))
            {
                validationResult.ErrorMessage = "Título não pode estar em branco.";
                return(validationResult);
            }

            try
            {
                var isbn = Isbn.FromValue(value.Isbn);
                validationResult.AddResult(isbn);
            }
            catch (IsbnException ex)
            {
                validationResult.ErrorMessage = ex.Message;
                return(validationResult);
            }

            if (value.PublicationYear < 0 || value.PublicationYear > DateTime.Today.Year)
            {
                validationResult.ErrorMessage = "Ano de publicação inválido.";
                return(validationResult);
            }

            var publisherId = value.Publisher.Id;

            var publisher = context.PublisherService.FindById(publisherId);

            if (publisher == null)
            {
                validationResult.ErrorMessage = "Editora não foi encontrada.";
                return(validationResult);
            }

            var authorIds  = value.Authors.Select(d => d.Id).ToArray();
            var authorList = new List <BookAuthor>(authorIds.Length);

            foreach (var authorId in authorIds)
            {
                var author = context.AuthorService.FindById(authorId);

                if (author == null)
                {
                    validationResult.ErrorMessage = "Autor não foi encontrado.";
                    return(validationResult);
                }
                var bookAuthor = new BookAuthor()
                {
                    Author   = author,
                    AuthorId = author.Id,
                };
                authorList.Add(bookAuthor);
            }

            validationResult.AddResult(publisher);
            validationResult.AddResult(authorList);

            return(validationResult);
        }