public void Assign_Book_To_Student() { var options = new DbContextOptionsBuilder <SchoolLibraryContext>() .UseInMemoryDatabase("Book_Assignment_Student") .Options; using (var context = new SchoolLibraryContext(options)) { context.Students.Add(new Student { Id = 100, Name = "Ali" }); context.Books.Add(new Book { Id = 555, Name = "How to become a millinaire", IsIssued = false, Author = "XYZ" }); context.SaveChanges(); } using (var context = new SchoolLibraryContext(options)) { var service = new BookAssignmentService(context); service.AssignBook(555, 100); var book = context.Books.Find(555); Assert.True(book.IsIssued); } }
public void Add(Book newBook) { var book = Get(newBook.Id); if (book == null) { _context.Add(newBook); _context.SaveChanges(); } }
public void Add(Student student) { var newStudent = Get(student.Id); if (newStudent == null) { _context.Add(student); _context.SaveChanges(); } }
public string AssignBook(int bookId, int studentId) { var isValid = ValidateBookAndStudent(bookId, studentId); if (!isValid) { return("Either student or book does not exist!"); } var isBookAlreadyIssued = _context.BookAssignToStudents.Any(a => a.Book.Id == bookId && a.Book.IsIssued == true); if (isBookAlreadyIssued) { return("Book is already issued to the student."); } var book = _context.Books.First(a => a.Id == bookId); book.IsIssued = true; _context.Update(book); var now = DateTime.Now; var student = _context.Students.FirstOrDefault(a => a.Id == studentId); var bookAssignToStudent = new BookAssignToStudent { BookId = bookId, Book = book, StudentId = studentId, Student = student, IssueDate = now, DueDate = now.AddDays(7) }; _context.Add(bookAssignToStudent); _context.SaveChanges(); return("Success"); }
public void Not_Assign_Same_Book_To_Multiple_Students() { var options = new DbContextOptionsBuilder <SchoolLibraryContext>() .UseInMemoryDatabase("Not_Assign_Same_Book_To_Multiple_Students") .Options; using (var context = new SchoolLibraryContext(options)) { context.Students.Add(new Student { Id = 100, Name = "Ali" }); context.Students.Add(new Student { Id = 200, Name = "Rehmat" }); context.Books.Add(new Book { Id = 555, Name = "How to become a millinaire", IsIssued = false, Author = "XYZ" }); context.SaveChanges(); } using (var context = new SchoolLibraryContext(options)) { var service = new BookAssignmentService(context); service.AssignBook(555, 100); var bookAssignedTo100 = context.BookAssignToStudents.SingleOrDefault(a => a.Student.Id == 100); Assert.NotNull(bookAssignedTo100); service.AssignBook(555, 200); var bookAssignedTo200 = context.BookAssignToStudents.SingleOrDefault(a => a.Student.Id == 200); Assert.Null(bookAssignedTo200); } }
public void Extend_DueDate_Of_Assigned_Book() { var options = new DbContextOptionsBuilder <SchoolLibraryContext>() .UseInMemoryDatabase("Extend_DueDate_Of_Assigned_Book") .Options; using (var context = new SchoolLibraryContext(options)) { context.Students.Add(new Student { Id = 100, Name = "Ali" }); context.Books.Add(new Book { Id = 555, Name = "How to become a millinaire", IsIssued = false, Author = "XYZ" }); context.SaveChanges(); } using (var context = new SchoolLibraryContext(options)) { var service = new BookAssignmentService(context); service.AssignBook(555, 100); var assignedBook = service.GetAssignedBook(555); Assert.True(assignedBook.Book.IsIssued); var response = service.ExtendDueDate(assignedBook.BookId, assignedBook.StudentId, assignedBook.DueDate.AddDays(7)); Assert.Equal("Success", response); } }
public void Get_Overdue_Books() { var options = new DbContextOptionsBuilder <SchoolLibraryContext>() .UseInMemoryDatabase("Get_Overdue_Books") .Options; using (var context = new SchoolLibraryContext(options)) { context.Students.Add(new Student { Id = 100, Name = "Ali" }); context.Books.Add(new Book { Id = 555, Name = "How to become a millinaire", IsIssued = false, Author = "XYZ" }); context.Books.Add(new Book { Id = 556, Name = "Some New Book 1", IsIssued = false, Author = "XYZ 1" }); context.Books.Add(new Book { Id = 557, Name = "Some New Book 2", IsIssued = false, Author = "XYZ 2" }); context.SaveChanges(); } using (var context = new SchoolLibraryContext(options)) { var service = new BookAssignmentService(context); service.AssignBook(555, 100); service.AssignBook(556, 100); service.AssignBook(557, 100); var assignedBook1 = context.BookAssignToStudents.Single(b => b.BookId == 555); assignedBook1.DueDate = DateTime.Now.AddDays(-5); var assignedBook2 = context.BookAssignToStudents.Single(b => b.BookId == 557); assignedBook2.DueDate = DateTime.Now.AddDays(-5); context.UpdateRange(new object[] { assignedBook1, assignedBook2 }); context.SaveChanges(); var response = service.GetOverdueBooks(); Assert.Equal(2, response.Count()); } }