package com.yj.test;

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

import java.math.BigDecimal;

/**
 * @author yj
 * @create 2020-08-24 11:01
 *
 * BookDaoTest类用于测试BookDao接口的实现类BookDaoImpl中的各个方法。
 * 通过JUnit测试框架，验证数据库操作的正确性。
 */
public class BookDaoTest {

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

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

    /**
     * 测试删除书籍的方法
     */
    @Test
    public void deleteBook() {
        // 调用deleteBookById方法，删除ID为3的书籍
        bookDao.deleteBookById(3);
    }

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

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

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

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

    /**
     * 测试分页查询书籍的方法
     */
    @Test
    public void queryForPageItems() {
        // 调用queryForPageItems方法，分页查询书籍，并打印结果
        System.out.println(bookDao.queryForPageItems(1, 4));
    }

    /**
     * 测试根据价格范围查询书籍总记录数的方法
     */
    @Test
    public void queryForPageTotalCountByPrice() {
        // 调用queryForPageTotalCountByPrice方法，查询价格在10到50之间的书籍总记录数，并打印结果
        System.out.println(bookDao.queryForPageTotalCountByPrice(10, 50));
    }

    /**
     * 测试根据价格范围分页查询书籍的方法
     */
    @Test
    public void queryForPageItemsByPrice() {
        // 调用queryForPageItemsByPrice方法，根据价格范围分页查询书籍，并打印结果
        System.out.println(bookDao.queryForPageItemsByPrice(1, 4, 10, 50));
    }

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