private async Task _savePageAsync() { var book = await BookHelper.OpenAsync(WebBrowser.Source); if (book != null) { Toast.ShowInfo($"下载成功!共下载了 {book.Count} 章"); return; } book = new Book() { Name = WebBrowser.DocumentTitle, IsLocal = false, Count = 1, Url = WebBrowser.Source.AbsoluteUri }; var chapter = new BookChapter() { Name = book.Name, Url = WebBrowser.Source.ToString(), }; chapter.Content = BookHelper.HtmlToText(await GetBody()); SqlHelper.Conn.Open(); book.Save(); chapter.BookId = book.Id; chapter.Save(); SqlHelper.Conn.Close(); Toast.ShowInfo("页面保存成功!"); }
/// <summary> /// Issues the book to a specific student. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnIssue_Click(object sender, EventArgs e) { int available = int.Parse(dgvIssueBook.CurrentRow.Cells["Available"].Value.ToString()); string title = dgvIssueBook.CurrentRow.Cells["Title"].Value.ToString(); string student = cmbStudentName.SelectedItem.ToString(); BookHelper.CurrentId = int.Parse(dgvIssueBook.CurrentRow.Cells["BookId"].Value.ToString()); if (available > 0) { available--; IssuedBook book = new IssuedBook(null, int.Parse(cmbId.SelectedItem.ToString()), int.Parse(dgvIssueBook.CurrentRow.Cells["BookId"].Value.ToString()), student, title, dgvIssueBook.CurrentRow.Cells["Author"].Value.ToString(), DateTime.Today.ToString("MM/dd/yyyy"), dtpDueDate.Value.ToString("MM/dd/yyyy"), int.Parse(dgvIssueBook.CurrentRow.Cells["Copies"].Value.ToString()), available, "NO", 0); if (BookHelper.IssueBook(book) > 0) { DialogResult result = MessageBox.Show("A copy of " + title + " was issued to student: " + student, "Book Issued", MessageBoxButtons.OK, MessageBoxIcon.Information); if (result == DialogResult.OK) { BookHelper.LoadActive(dgvIssueBook); cmbId.SelectedIndex = -1; cmbStudentName.SelectedIndex = -1; dtpDueDate.Value = DateTime.Today.AddDays(10); } } } }
private void Button2_Click(object sender, EventArgs e) { Book newBook = new Book { Name = textBox1.Text }; List <Author> authors = new List <Author>(); foreach (var item in listBox1.SelectedItems) { authors.Add(AuthorHelper.MapAuthorModel((AuthorModel)item)); } newBook.Authors = authors; List <Genre> genres = new List <Genre>(); foreach (var item in listBox2.SelectedItems) { genres.Add(GenreHelper.MapGenreModel((GenreModel)(item))); } newBook.Genres = genres; newBook.PageCount = Convert.ToInt32(textBox2.Text); bool isAdded = BookHelper.Addbook(newBook); if (isAdded) { this.LoadBooks(); } }
public IHttpActionResult Search(SearchModel model) { List <Book> books; List <BookModel> models; var hostAddr = string.Format("{0}://{1}:{2}", Request.RequestUri.Scheme, Request.RequestUri.Host, Request.RequestUri.Port); string imgAddr = hostAddr + "/Content/UploadedFiles/"; if (Request.Headers.TryGetValues("Token", out IEnumerable <string> tokens)) { string token = tokens.FirstOrDefault(); string username = TokenManager.ValidateToken(token); if (username != null) { var acc = db.Accounts.Include(x => x.Role).FirstOrDefault(x => x.UserName == username); if (acc != null && acc.Role.Name == "Admin") { books = db.Books.Include(x => x.Author).Include(x => x.BookType).ToList(); books.ForEach(x => x.Image = x.Image != null ? imgAddr + x.Image : x.Image); books = BookHelper.Search(books, model); models = BookModel.Import(books); return(Ok(models)); } } } books = db.Books.Where(x => x.IsDeleted == false).Include(x => x.Author).Include(x => x.BookType).ToList(); books.ForEach(x => x.Image = x.Image != null ? imgAddr + x.Image : x.Image); books = BookHelper.Search(books, model); models = BookModel.Import(books); return(Ok(models)); }
public static bool UpdateBookCover(ref Book b, string filepath, bool submit) { if (!System.IO.File.Exists(@"D:\Program Files\PDF2Image v2.0\pdf2img.exe")) { return(false); } string imgfile = "D:\\1.bmp"; if (filepath.ToUpper().EndsWith(".PDF")) { if (System.IO.File.Exists(imgfile)) { System.IO.File.Delete(imgfile); } Process p = pdf2img(filepath, imgfile); p.WaitForExit(10000); try { b.BookCover = BookHelper.BookCoverConvert(imgfile); if (submit) { JianLiLinq.Default.DB.SubmitChanges(); } return(true); } catch (Exception ex) { Debug.WriteLine(ex.Message); return(false); } } return(false); }
/// <summary> /// Reloads the data if the search bar is empty. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void txtSearch_TextChanged(object sender, EventArgs e) { if (txtSearch.Text == "") { BookHelper.LoadActive(dgvIssueBook); } }
public void CanCreateLoan() { ILoanHelper loanHelper = new LoanHelper(); ILoanDAO loanDao = new LoanDao(loanHelper); IMemberHelper memberHelper = new MemberHelper(); IMemberDAO memberDao = new MemberDao(memberHelper); IBookHelper bookHelper = new BookHelper(); IBookDAO bookDao = new BookDao(bookHelper); var borrowDate = DateTime.Today; var dueDate = DateTime.Today.AddDays(7); var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**"); var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number"); var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate); Assert.NotNull(loan); Assert.Empty(loanDao.LoanList); Assert.Equal(book, loan.Book); Assert.Equal(member, loan.Borrower); Assert.Equal(0, loan.ID); }
//http://stackoverflow.com/questions/5826649/returning-a-file-to-view-download-in-asp-net-mvc // I have file not found issue // here is a work around // https://github.com/aspnet/Mvc/issues/5053 public IActionResult GetKindleFile(string url) { // check domain var firstPageUri = new Uri(url); if (firstPageUri.Scheme == "file") { var note = new MyNote(); var bookHelper = new BookHelper(note); var kindleFile = bookHelper.CreateKindleFiles(url, true); } else { // special for thuvienhoasen 1 tac gia if (firstPageUri.Host == "thuvienhoasen.org" && firstPageUri.Segments.Contains("author/")) { var collection = new ThuVienHoaSenCollection(); collection.GetWholeCollection(url); } else { GeneralSite setting = SettingFactory.Get(url); if (setting != null) { var bookHelper = new BookHelper(setting); var kindleFile = bookHelper.CreateKindleFiles(url); } } } return(View("Index")); }
public void CanUpdateOverdueStatus() { ILoanHelper loanHelper = new LoanHelper(); ILoanDAO loanDao = new LoanDao(loanHelper); IMemberHelper memberHelper = new MemberHelper(); IMemberDAO memberDao = new MemberDao(memberHelper); IBookHelper bookHelper = new BookHelper(); IBookDAO bookDao = new BookDao(bookHelper); var borrowDate = DateTime.Today; var dueDate = DateTime.Today.AddDays(7); var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**"); var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number"); var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate); loanDao.CommitLoan(loan); Assert.Equal(LoanState.CURRENT, loan.State); loanDao.UpdateOverDueStatus(DateTime.Today.AddMonths(1)); Assert.Equal(LoanState.OVERDUE, loan.State); }
private void SetBooks(Book[] books) { this.listView1.Items.Clear(); foreach (Book b in books) { ListViewItem i = new ListViewItem(); i.Text = b.BookName; BookAndUser bu = new BookAndUser(); bu.UserBook = JianLiLinq.Default.GetUserBook(b); bu.Book = b; i.Tag = bu; i.ToolTipText = b.BookDesc; if (b.BookCover != null) { Image bm = BookHelper.BookCoverConvert(b.BookCover); imageList1.Images.Add(bm); i.ImageIndex = imageList1.Images.Count - 1; } else { i.ImageIndex = 0; } this.listView1.Items.Add(i); } }
public void EditViewModelValidationErrorRepopulatesAuthorsDropdown() { //Arrange var repository = Mock.Create <IRepository>(); int bookId = 1; int authorId = 3; string errorMessage = "The minimal length for the title is 3"; var book = new BookEditViewModel() { AuthorId = AuthorHelper.RobertMartin(authorId).AuthorId, BookId = BookHelper.CleanCode(bookId, authorId).BookId, Title = "12", //Too short, min is 3 (defined in the view model) Genre = BookHelper.CleanCode(bookId, authorId).Genre, }; Mock.Arrange(() => repository.Save((Book)Arg.AnyObject)).OccursNever(); var authorsList = new List <Author>() { AuthorHelper.RobertMartin(1), AuthorHelper.JRRTolkien(authorId) }; Mock.Arrange(() => repository.GetAllAuthors()).Returns(authorsList).OccursOnce(); //Act var controller = new HomeController(repository); controller.ModelState.AddModelError("Title", errorMessage); //add the view model validation error controller.ControllerContext = Mock.Create <ControllerContext>(); //needed by TryValidateModel(entity) var result = controller.Edit(book) as ViewResult; //Assert StandardAssertsForEditErrors(controller, result, book, errorMessage); Mock.Assert(repository); }
public void EditDBExceptionRepopulatesAuthorsDropdown() { //Arrange var repository = Mock.Create <IRepository>(); int bookId = 1; int authorId = 1; var exceptionMessage = "test exception with message"; var book = new BookEditViewModel() { AuthorId = AuthorHelper.RobertMartin(authorId).AuthorId, BookId = BookHelper.CleanCode(bookId, authorId).BookId, Title = BookHelper.CleanCode(bookId, authorId).Title, Genre = BookHelper.CleanCode(bookId, authorId).Genre, }; Mock.Arrange(() => repository.Save((Book)Arg.AnyObject)).Throws(new Exception(exceptionMessage)).OccursOnce(); var authorsList = new List <Author>() { AuthorHelper.RobertMartin(1), AuthorHelper.JRRTolkien(authorId) }; Mock.Arrange(() => repository.GetAllAuthors()).Returns(authorsList).OccursOnce(); //Act var controller = new HomeController(repository); controller.ControllerContext = Mock.Create <ControllerContext>(); //needed by TryValidateModel(entity) var result = controller.Edit(book) as ViewResult; //Assert StandardAssertsForEditErrors(controller, result, book, exceptionMessage); Mock.Assert(repository); }
public void EditIndexShowsBookEditFormWithBookContentWithPopulatedDropDownList() { //Arrange var repository = Mock.Create <IRepository>(); var bookToEdit = BookHelper.CleanCode(bookId: 2, authorId: 1); Mock.Arrange(() => repository.GetBook(bookToEdit.BookId)).Returns(bookToEdit).OccursOnce(); //called to populate the dropdownlist Mock.Arrange(() => repository.GetAllAuthors()).Returns( new List <Author>() { AuthorHelper.RobertMartin(1), AuthorHelper.RoyOsherove(2), }).OccursOnce(); //Act var controller = new HomeController(repository); var result = controller.Edit(bookToEdit.BookId) as ViewResult; var model = result.Model as BookEditViewModel; var selectedItem = model.Authors.Find(b => Int32.Parse(b.Value) == bookToEdit.AuthorId); //Assert Assert.IsNotNull(model); Assert.AreEqual(model.BookId, bookToEdit.BookId); Assert.AreEqual(model.AuthorId, bookToEdit.AuthorId); Assert.AreEqual(model.Genre, bookToEdit.Genre); Assert.AreEqual(model.Title, bookToEdit.Title); Assert.IsTrue(selectedItem.Selected); Assert.IsNull(result.ViewBag.Message); Mock.Assert(repository); }
//http://stackoverflow.com/questions/5826649/returning-a-file-to-view-download-in-asp-net-mvc // I have file not found issue // here is a work around // https://github.com/aspnet/Mvc/issues/5053 public IActionResult GetKindleFile(string url) { // check domain var firstPageUri = new Uri(url); if (firstPageUri.Host.Contains("thuvienhoasen.org")) { var thuvienhoasen = new ThuVienHoaSen(); var bookHelper = new BookHelper(thuvienhoasen); //bookHelper.DownloadFolder = AppContext.BaseDirectory; // in case web app cannot access to a file outside of its folder // var firstUrlPath = @"/a17221/ban-do-tu-phat"; // var firstUrlPath = @"/p27a10044/1/bai-van-khuyen-phat-tam-bo-de"; // this works var kindleFile = bookHelper.CreateKindleFiles(url); // var fileContent = new System.IO.FileStream(kindleFile, System.IO.FileMode.Open); // return File(fileContent, "application/octet-stream", System.IO.Path.GetFileName(kindleFile)); } else if (firstPageUri.Scheme == "file") { var note = new MyNote(); var bookHelper = new BookHelper(note); var kindleFile = bookHelper.CreateKindleFiles(url, true); } return(View("Index")); }
/// <summary> /// Makes all data grid view rows visible if there is no text in the search textbox. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void txtSearch_TextChanged(object sender, EventArgs e) { if (txtSearch.Text == "") { BookHelper.CurrentBooksData(dgvViewBooks); } }
/// <summary> /// Updates the Books and Issued books table /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnReturn_Click(object sender, EventArgs e) { if (BookHelper.ReturnBook(int.Parse(dgvViewIssuedBooks.CurrentRow.Cells["BookId"].Value.ToString())) > 0) { BookHelper.LoadIssuedBooks(dgvViewIssuedBooks); } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (dataGridView1.Columns[e.ColumnIndex].Name == "colBtn_drop") { Book model = new Book(); model.Id = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["id"].Value); if (BookHelper.Drop(model, new List <string>() { "id" })) { ShowDataGird(); MessageBox.Show("删除成功", "", MessageBoxButtons.OK, MessageBoxIcon.Information); } } if (dataGridView1.Columns[e.ColumnIndex].Name == "colBtn_alter") { Book model = new Book(); model.Id = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["Id"].Value); model.name = dataGridView1.Rows[e.RowIndex].Cells["name"].Value.ToString(); model.author = dataGridView1.Rows[e.RowIndex].Cells["author"].Value.ToString(); model.press = dataGridView1.Rows[e.RowIndex].Cells["press"].Value.ToString(); if (BookHelper.AlterByPK(model, "id")) { ShowDataGird(); MessageBox.Show("修改成功", "", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
public void DeleteBookReturnsToIndex() { //Arrange var repository = Mock.Create <IRepository>(); const int bookIdToDelete = 1; Mock.Arrange(() => repository.GetAllBooks()).Returns(new List <Book>() { BookHelper.CleanCode(2) }).OccursOnce(); Mock.Arrange(() => repository.Delete(1)).OccursOnce(); //Act var controller = new HomeController(repository); ViewResult result = controller.Delete(bookIdToDelete) as ViewResult; var resultViewName = result.ViewName; var model = result.Model as List <Book>; var insertedBook = model.Find(b => b.BookId == bookIdToDelete); //Assert Assert.AreEqual("Index", resultViewName); Assert.AreEqual(1, model.Count); Assert.IsInstanceOfType(model, typeof(List <Book>)); Assert.IsNull(insertedBook); Assert.AreEqual("Book deleted successfully", result.ViewBag.Message); Mock.Assert(repository); }
public void Search() { BookHelper bookHelper = new BookHelper(); ElasticConnection client = new ElasticConnection("222.186.190.241", 9200); //第一个参数是数据库,第二个参数是表 SearchCommand cmd = new SearchCommand("xiaoshuo", "xiaoshuo_url"); var query = new QueryBuilder <Book>() .Query(b => b.Bool(m => //并且关系 m.Must(t => //分词的最小单位或关系查询 t.QueryString(t1 => t1.DefaultField("Name").Query("总裁")) ) ) ).Size(5).Build(); var result = client.Post(cmd, query); var count = result.Result.Count(); var serializer = new JsonNetSerializer(); var results = serializer.ToSearchResult <Book>(result); //把结果序列化 Book book; foreach (var doc in results.Documents) { book = new Book() { Name = doc.Name, Url = doc.Url }; Console.WriteLine(book.Name); Console.WriteLine(book.Url); } }
/// <summary> /// 显示数据网格控件 /// </summary> public void ShowDataGird() { this.dataGridView1.DataSource = null; this.dataGridView1.Columns.Clear(); List <Book> list = BookHelper.FindList(new Book(), new List <string>()); dataGridView1.DataSource = list; dataGridView1.Columns["name"].HeaderText = "图书名称"; dataGridView1.Columns["author"].HeaderText = "图书作者"; dataGridView1.Columns["press"].HeaderText = "出版社"; dataGridView1.Columns["id"].Visible = false; DataGridViewButtonColumn col_Btn_alter = new DataGridViewButtonColumn(); col_Btn_alter.Name = "colBtn_alter"; col_Btn_alter.HeaderText = ""; col_Btn_alter.DefaultCellStyle.NullValue = "修改"; dataGridView1.Columns.Add(col_Btn_alter); DataGridViewButtonColumn col_Btn_Drop = new DataGridViewButtonColumn(); col_Btn_Drop.Name = "colBtn_drop"; col_Btn_Drop.HeaderText = ""; col_Btn_Drop.DefaultCellStyle.NullValue = "删除"; dataGridView1.Columns.Add(col_Btn_Drop); }
public void EditFormSubmitReturnsToIndex() { //Arrange var repository = Mock.Create <IRepository>(); var submittedBookViewModel = new BookEditViewModel() { BookId = 2, AuthorId = 1, Genre = BookHelper.CleanCode().Genre, Title = BookHelper.CleanCode().Title, Authors = null //after post submit this value is null }; Mock.Arrange(() => repository.Save((Book)Arg.AnyObject)).OccursOnce(); //Act var controller = new HomeController(repository); controller.ControllerContext = Mock.Create <ControllerContext>(); //needed by TryValidateModel(entity) var result = controller.Edit(submittedBookViewModel) as RedirectToRouteResult; //Assert Assert.AreEqual("Index", result.RouteValues["action"]); Assert.AreEqual("Book edited successfully", controller.TempData["Message"]); Mock.Assert(repository); }
public LTFApiHelper(LTFrameNetClass _ltf) { BH = new BookHelper(); ltf = _ltf; //josnNovelTypes = GetNovelTypes(); //josnNovels = GetNovels(); }
/// <summary> /// Reloads the data grid view when search textbox is empty. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void txtSearch_TextChanged(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtSearch.Text)) { BookHelper.LoadIssuedBooks(dgvViewIssuedBooks); } }
/// <summary> /// Adds the autocomplete source for the search textbox. /// </summary> private void AddAutoCompleteSource() { AutoCompleteStringCollection source = new AutoCompleteStringCollection(); source.AddRange(BookHelper.GetSourceList().ToArray()); txtSearch.AutoCompleteCustomSource = source; }
/// <summary> ///Loads active books into the data grid view. ///Load selected student ids into the id combo box. ///Loads student names in the student name combo box. ///Sets the due date to 10 days from today. ///Initializes the id combo box to index -1. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void IssueBook_Load(object sender, EventArgs e) { BookHelper.LoadActive(dgvIssueBook); StudentHelper.LoadNames(cmbStudentName); cmbId.SelectedIndex = -1; dtpDueDate.Value = dtpDueDate.Value.AddDays(10); }
public void CanCommitLoan() { ILoanHelper loanHelper = new LoanHelper(); ILoanDAO loanDao = new LoanDao(loanHelper); IMemberHelper memberHelper = new MemberHelper(); IMemberDAO memberDao = new MemberDao(memberHelper); IBookHelper bookHelper = new BookHelper(); IBookDAO bookDao = new BookDao(bookHelper); var borrowDate = DateTime.Today; var dueDate = DateTime.Today.AddDays(7); var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**"); var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number"); var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate); loanDao.CommitLoan(loan); Assert.NotNull(loan); Assert.Equal(1, loanDao.LoanList.Count); Assert.Equal(loan, loanDao.LoanList[0]); Assert.NotEqual(0, loan.ID); }
private void FontBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { var font = (FontBox.SelectedItem as ComboBoxItem).Content.ToString(); Pager.FontFamily = BookHelper.GetFont(font); Pager.SetBlockProperty(); AppDataHelper.SetValue("FontFamily", font); }
public BookPage() { InitializeComponent(); lbl_notFound.Visibility = Visibility.Hidden; lbl_update.Visibility = Visibility.Hidden; _bookRepository = new BookRepository(); _bookHelper = new BookHelper(); _viewHelper = new ViewHelper(); }
public void CollectBooks(List <string> BookNeedCollect, string ListPageUrl, string NextPageUrl, string BookUrlRule, string BookInfoRule, string ChapterListUrl, string encoding, string urlTitleRule, string ContentRule) { BookHelper bh = new BookHelper("http://www.aizr.net/"); begin: string listHtml = Url.GetHtml(ListPageUrl, encoding); Match m_books = listHtml.GetMatchGroup(BookUrlRule); while (m_books.Success) { string bookUrl = m_books.Groups["url"].Value.AppendToDomain(ListPageUrl); string bookTitle = m_books.Groups["title"].Value; if (BookNeedCollect.Count != 1 || BookNeedCollect.First() != "*") { if (BookNeedCollect.Where(p => p == bookTitle).Count() == 0) { m_books = m_books.NextMatch();//不需要采集的书籍 continue; } } if (bh.SearchBook(bookTitle, "", "").Count > 0) { m_books = m_books.NextMatch();//已经存在的书籍 continue; } string bookInfoHtml = Url.GetHtml(bookUrl, encoding);; Match m_bookInfo = bookInfoHtml.GetMatchGroup(BookInfoRule); if (m_bookInfo.Success) { //获取到书籍信息,并且添加到系统 string title = m_bookInfo.Groups["title"].Value; string author = m_bookInfo.Groups["author"].Value; string cls = m_bookInfo.Groups["class"].Value; string length = (m_bookInfo.Groups["length"].Value.ToInt32() * 1024).ToS(); string intro = m_bookInfo.Groups["intro"].Value; //处理类别 Class c = bh.GetClass(cls); //添加书籍 bh.BookAdd(title, author, c.ID, intro, length.ToInt64()); //处理章节 string chapterListUrl = bookInfoHtml.GetMatch(ChapterListUrl).First().AppendToDomain(bookUrl); Collect(chapterListUrl, title, urlTitleRule , ContentRule, encoding); } }//结束书籍列表书籍采集 //开始判断是够有下一页 Match m_NextPage = listHtml.GetMatchGroup(NextPageUrl); while (m_NextPage.Success) { ListPageUrl = m_NextPage.Groups["key"].Value.AppendToDomain(ListPageUrl); goto begin;; } }
public SearchBook(bool isLibrarian) { InitializeComponent(); _bookRepository = new BookRepository(); _bookHelper = new BookHelper(); _viewHelper = new ViewHelper(); _isLibrarian = isLibrarian; SetSelection(); }
public void BookHelperImplementsIBookHelperInterface() { var helper = new BookHelper(); Assert.IsAssignableFrom <IBookHelper>(helper); var typedMember = helper as IBookHelper; Assert.NotNull(typedMember); }
public MockDataProviderModule() { _memberHelper = new MemberHelper(); _memberDAO = new MemberDAO(_memberHelper); _loanHelper = new LoanHelper(); _loanDAO = new LoanDAO(_loanHelper); _bookHelper = new BookHelper(); _bookDao = new BookDAO(_bookHelper); // Setup dates for test data _borrowDate = DateTime.Now; _loanPeriod = new TimeSpan(LoanConstants.LOAN_PERIOD, 0, 0, 0); _dueDate = _borrowDate.Add(_loanPeriod); SetupBookTestData(); SetupMemberTestData(); SetUpLoanTestData(); SetUpTestData(); }
public void CanGetOverdueLoans() { ILoanHelper loanHelper = new LoanHelper(); ILoanDAO loanDao = new LoanDao(loanHelper); IMemberHelper memberHelper = new MemberHelper(); IMemberDAO memberDao = new MemberDao(memberHelper); IBookHelper bookHelper = new BookHelper(); IBookDAO bookDao = new BookDao(bookHelper); var borrowDate = DateTime.Today; var dueDate = DateTime.Today.AddDays(7); var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**"); var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number"); var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate); loanDao.CommitLoan(loan); Assert.Equal(LoanState.CURRENT, loan.State); loanDao.UpdateOverDueStatus(DateTime.Today.AddMonths(1)); Assert.Equal(LoanState.OVERDUE, loan.State); for (int i = 0; i < 10; i++) { var m = memberDao.AddMember("Test", "Test", "Test Phone", "Test Email"); var b = bookDao.AddBook("Test", "Test", "Test"); var l = loanDao.CreateLoan(m, b, borrowDate, dueDate); loanDao.CommitLoan(l); } var overdue = loanDao.FindOverDueLoans(); Assert.Equal(1, overdue.Count); Assert.Equal(loan, overdue[0]); }
public void CanGetLoanByBookTitle() { ILoanHelper loanHelper = new LoanHelper(); ILoanDAO loanDao = new LoanDao(loanHelper); IMemberHelper memberHelper = new MemberHelper(); IMemberDAO memberDao = new MemberDao(memberHelper); IBookHelper bookHelper = new BookHelper(); IBookDAO bookDao = new BookDao(bookHelper); var borrowDate = DateTime.Today; var dueDate = DateTime.Today.AddDays(7); var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**"); var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number"); var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate); loanDao.CommitLoan(loan); for (int i = 0; i < 10; i++) { var m = memberDao.AddMember("Test", "Test", "Test Phone", "Test Email"); var b = bookDao.AddBook("Test", "Test", "Test"); var l = loanDao.CreateLoan(m, b, borrowDate, dueDate); loanDao.CommitLoan(l); } var result = loanDao.FindLoansByBookTitle(book.Title); var single = result.Single(); Assert.Equal(loan, single); }
public void GetLoanByLoanIdReturnsNullIfNotFound() { ILoanHelper loanHelper = new LoanHelper(); ILoanDAO loanDao = new LoanDao(loanHelper); IMemberHelper memberHelper = new MemberHelper(); IMemberDAO memberDao = new MemberDao(memberHelper); IBookHelper bookHelper = new BookHelper(); IBookDAO bookDao = new BookDao(bookHelper); var borrowDate = DateTime.Today; var dueDate = DateTime.Today.AddDays(7); var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**"); var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number"); var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate); loanDao.CommitLoan(loan); for (int i = 0; i < 10; i++) { var m = memberDao.AddMember("Test", "Test", "Test Phone", "Test Email"); var b = bookDao.AddBook("Test", "Test", "Test"); var l = loanDao.CreateLoan(m, b, borrowDate, dueDate); loanDao.CommitLoan(l); } var result = loanDao.GetLoanByID(1000); Assert.Null(result); }