package com.yj.test;

import com.yj.bean.Book;
import com.yj.dao.BookDao;
import com.yj.dao.impl.BookDaoImpl;
import com.yj.service.BookService;
import com.yj.service.impl.BookServiceImpl;
import org.junit.Test;

import java.math.BigDecimal;

/**
 * @author yj
 * @create 2020-08-24 14:57
 *
 * BookServiceTest类用于测试BookService接口的实现类BookServiceImpl中的各个方法。
 * 通过JUnit测试框架，验证业务逻辑的正确性。
 */
public class BookServiceTest {

    // 创建BookDao接口的实现类BookDaoImpl对象
    private BookDao bookDao = new BookDaoImpl();

    // 创建BookService接口的实现类BookServiceImpl对象
    private BookService bookService = new BookServiceImpl();

    /**
     * 测试添加书籍的方法
     */
    @Test
    public void addBook() {
        // 创建一个新的Book对象，并调用addBook方法将其添加到数据库中
        bookDao.addBook(new Book(null, "舌尖上的中国", "yj", new BigDecimal("5"), 100, 23, "文学", ""));
    }

    /**
     * 测试更新书籍信息的方法
     */
    @Test
    public void updateBook() {
        // 创建一个新的Book对象，并调用updateBook方法更新书籍信息
        bookDao.updateBook(new Book(null, "舌尖上的中国", "yj", new BigDecimal("5"), 100, 23, "文学", ""));
    }

    /**
     * 测试根据ID删除书籍的方法
     */
    @Test
    public void deleteBookById() {
        // 调用deleteBookById方法，删除ID为25的书籍，并打印受影响的行数
        System.out.println(bookDao.deleteBookById(25));
    }

    /**
     * 测试根据ID查询书籍的方法
     */
    @Test
    public void queryBookById() {
        // 调用queryBookById方法，查询ID为23的书籍，并打印结果
        System.out.println(bookDao.queryBookById(23));
    }

    /**
     * 测试查询所有书籍的方法
     */
    @Test
    public void queryBooks() {
        // 调用queryBooks方法，查询所有书籍，并打印结果
        System.out.println(bookDao.queryBooks());
    }

    /**
     * 测试分页查询书籍总记录数的方法
     */
    @Test
    public void page() {
        // 调用queryForPageTotalCount方法，查询所有书籍的总记录数，并打印结果
        System.out.println(bookDao.queryForPageTotalCount());
    }

    /**
     * 测试查询所有书籍的总金额的方法
     */
    @Test
    public void queryTotalMoney() {
        // 调用queryTotalMoney方法，查询所有书籍的总金额，并打印结果
        System.out.println(bookDao.queryTotalMoney());
    }
}