Exemple #1
0
        public async Task EditReviewShouldWorkCorrectly(string description, ReadingProgress progress, bool thisEdition)
        {
            var options = new DbContextOptionsBuilder <AlexandriaDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;

            var db = new AlexandriaDbContext(options);
            await db.AddAsync(
                new Review
            {
                Description     = "description1",
                AuthorId        = "author1",
                BookId          = 1,
                ReadingProgress = ReadingProgress.Unknown,
                ThisEdition     = false,
            });

            await db.SaveChangesAsync();

            var reviewsService = new ReviewsService(db);

            await reviewsService.EditReviewAsync(1, description, progress, thisEdition);

            var result = await db.Reviews.FirstOrDefaultAsync();

            Assert.NotNull(result.ModifiedOn);
            Assert.Equal(description, result.Description);
            Assert.Equal(progress, result.ReadingProgress);
            Assert.Equal(thisEdition, result.ThisEdition);
        }
Exemple #2
0
        public async Task EditReviewAsync(int id, string description, ReadingProgress readingProgress, bool thisEdition)
        {
            var review = await this.GetByIdAsync(id);

            review.Description     = description;
            review.ReadingProgress = readingProgress;
            review.ThisEdition     = thisEdition;
            review.ModifiedOn      = DateTime.UtcNow;

            await this.db.SaveChangesAsync();
        }
Exemple #3
0
        public ActionResult NewReadingProgress(
            [Bind(Include = "AssignmentId,StartPage,FinishPage,StartDateTime,EndDateTime")] ReadingProgress newProgress)
        {
            Assignment assignment = db.Assignments.First(c => c.Id == newProgress.AssignmentId);

            newProgress.Assignment = assignment;
            if (newProgress.FinishPage < newProgress.StartPage)
            {
                return(RedirectToAction("Details", "Books", new { id = assignment.BookId }));
            }

            if (newProgress.EndDateTime < newProgress.StartDateTime)
            {
                return(RedirectToAction("Details", "Books", new { id = assignment.BookId }));
            }

            assignment.Reading.Add(newProgress);
            db.SaveChanges();
            return(RedirectToAction("Details", "Books", new { id = assignment.BookId }));
        }
Exemple #4
0
        public async Task CreateReviewShouldAddInDatabase(string description, string authorId, int bookId, ReadingProgress progress, bool thisEdition)
        {
            var options = new DbContextOptionsBuilder <AlexandriaDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;

            var db = new AlexandriaDbContext(options);

            var reviewsService = new ReviewsService(db);

            await reviewsService.CreateReviewAsync(description, authorId, bookId, progress, thisEdition);

            var result = await db.Reviews.FirstOrDefaultAsync();

            Assert.Equal(1, await db.Reviews.CountAsync());
            Assert.Equal(description, result.Description);
            Assert.Equal(authorId, result.AuthorId);
            Assert.Equal(bookId, result.BookId);
            Assert.Equal(progress, result.ReadingProgress);
            Assert.Equal(thisEdition, result.ThisEdition);
            Assert.Null(result.ParentId);
        }
Exemple #5
0
        public async Task <int> CreateReviewAsync(string description, string authorId, int bookId, ReadingProgress readingProgress, bool thisEdition, int?parentId = null)
        {
            var review = new Review
            {
                Description     = description,
                ParentId        = parentId,
                AuthorId        = authorId,
                BookId          = bookId,
                ReadingProgress = readingProgress,
                ThisEdition     = thisEdition,
                CreatedOn       = DateTime.UtcNow,
            };

            await this.db.Reviews.AddAsync(review);

            await this.db.SaveChangesAsync();

            return(review.Id);
        }