// Path: src/main/java/com/tale/service/CommentsService.java
// @Bean
// public class CommentsService {
// 
//     /**
//      * 保存评论
//      *
//      * @param comments
//      */
//     public void saveComment(Comments comments) {
//         comments.setAuthor(TaleUtils.cleanXSS(comments.getAuthor()));
//         comments.setContent(TaleUtils.cleanXSS(comments.getContent()));
// 
//         comments.setAuthor(EmojiParser.parseToAliases(comments.getAuthor()));
//         comments.setContent(EmojiParser.parseToAliases(comments.getContent()));
// 
//         Contents contents = select().from(Contents.class).byId(comments.getCid());
//         if (null == contents) {
//             throw new ValidatorException("不存在的文章");
//         }
//         try {
//             comments.setOwnerId(contents.getAuthorId());
//             comments.setAuthorId(null == comments.getAuthorId() ? 0 : comments.getAuthorId());
//             comments.setCreated(DateKit.nowUnix());
//             comments.setParent(null == comments.getCoid() ? 0 : comments.getCoid());
//             comments.setCoid(null);
//             comments.save();
// 
//             new Contents().set(Contents::getCommentsNum, contents.getCommentsNum() + 1).updateById(contents.getCid());
//         } catch (Exception e) {
//             throw e;
//         }
//     }
// 
//     /**
//      * 删除评论，暂时没用
//      *
//      * @param coid
//      * @param cid
//      * @throws Exception
//      */
//     public void delete(Integer coid, Integer cid) {
//         Anima.delete().from(Comments.class).deleteById(coid);
// 
//         Contents contents = select().from(Contents.class).byId(cid);
//         if (null != contents && contents.getCommentsNum() > 0) {
//             update().from(Contents.class).set(Contents::getCommentsNum, contents.getCommentsNum() - 1).updateById(cid);
//         }
//     }
// 
//     /**
//      * 获取文章下的评论
//      *
//      * @param cid
//      * @param page
//      * @param limit
//      * @return
//      */
//     public Page<Comment> getComments(Integer cid, int page, int limit) {
//         if (null == cid) {
//             return null;
//         }
// 
//         Page<Comments> commentsPage = select().from(Comments.class)
//                 .where(Comments::getCid, cid).and(Comments::getParent, 0)
//                 .and(Comments::getStatus, COMMENT_APPROVED)
//                 .order(Comments::getCoid, OrderBy.DESC).page(page, limit);
// 
//         return commentsPage.map(this::apply);
//     }
// 
//     /**
//      * 获取文章下的评论统计
//      *
//      * @param cid 文章ID
//      */
//     public long getCommentCount(Integer cid) {
//         if (null == cid) {
//             return 0;
//         }
//         return select().from(Comments.class).where(Comments::getCid, cid).count();
//     }
// 
//     /**
//      * 获取该评论下的追加评论
//      *
//      * @param coid
//      * @return
//      */
//     private void getChildren(List<Comments> list, Integer coid) {
//         List<Comments> cms = select().from(Comments.class).where(Comments::getParent, coid).order(Comments::getCoid, OrderBy.ASC).all();
//         if (null != cms) {
//             list.addAll(cms);
//             cms.forEach(c -> getChildren(list, c.getCoid()));
//         }
//     }
// 
//     private Comment apply(Comments parent) {
//         Comment        comment  = new Comment(parent);
//         List<Comments> children = new ArrayList<>();
//         getChildren(children, comment.getCoid());
//         comment.setChildren(children);
//         if (BladeKit.isNotEmpty(children)) {
//             comment.setLevels(1);
//         }
//         return comment;
//     }
// 
//     public Page<Comments> findComments(CommentParam commentParam) {
//         return select().from(Comments.class)
//                 .order(Comments::getCoid, OrderBy.DESC)
//                 .page(commentParam.getPage(), commentParam.getLimit());
//     }
// 
// }
// 
// Path: src/test/java/com/tale/test/BaseTest.java
// @RunWith(BladeTestRunner.class)
// @BladeApplication(Application.class)
// public abstract class BaseTest {
// 
// }


import com.blade.ioc.annotation.Inject;
import com.tale.service.CommentsService;
import com.tale.test.BaseTest;
import org.junit.Test;
package com.tale.test.service;


/**
 * @author biezhi
 * @date 2018/6/3
 */
public class CommentsServiceTest extends BaseTest {

    @Inject
// Path: src/main/java/com/tale/service/CommentsService.java
// @Bean
// public class CommentsService {
// 
//     /**
//      * 保存评论
//      *
//      * @param comments
//      */
//     public void saveComment(Comments comments) {
//         comments.setAuthor(TaleUtils.cleanXSS(comments.getAuthor()));
//         comments.setContent(TaleUtils.cleanXSS(comments.getContent()));
// 
//         comments.setAuthor(EmojiParser.parseToAliases(comments.getAuthor()));
//         comments.setContent(EmojiParser.parseToAliases(comments.getContent()));
// 
//         Contents contents = select().from(Contents.class).byId(comments.getCid());
//         if (null == contents) {
//             throw new ValidatorException("不存在的文章");
//         }
//         try {
//             comments.setOwnerId(contents.getAuthorId());
//             comments.setAuthorId(null == comments.getAuthorId() ? 0 : comments.getAuthorId());
//             comments.setCreated(DateKit.nowUnix());
//             comments.setParent(null == comments.getCoid() ? 0 : comments.getCoid());
//             comments.setCoid(null);
//             comments.save();
// 
//             new Contents().set(Contents::getCommentsNum, contents.getCommentsNum() + 1).updateById(contents.getCid());
//         } catch (Exception e) {
//             throw e;
//         }
//     }
// 
//     /**
//      * 删除评论，暂时没用
//      *
//      * @param coid
//      * @param cid
//      * @throws Exception
//      */
//     public void delete(Integer coid, Integer cid) {
//         Anima.delete().from(Comments.class).deleteById(coid);
// 
//         Contents contents = select().from(Contents.class).byId(cid);
//         if (null != contents && contents.getCommentsNum() > 0) {
//             update().from(Contents.class).set(Contents::getCommentsNum, contents.getCommentsNum() - 1).updateById(cid);
//         }
//     }
// 
//     /**
//      * 获取文章下的评论
//      *
//      * @param cid
//      * @param page
//      * @param limit
//      * @return
//      */
//     public Page<Comment> getComments(Integer cid, int page, int limit) {
//         if (null == cid) {
//             return null;
//         }
// 
//         Page<Comments> commentsPage = select().from(Comments.class)
//                 .where(Comments::getCid, cid).and(Comments::getParent, 0)
//                 .and(Comments::getStatus, COMMENT_APPROVED)
//                 .order(Comments::getCoid, OrderBy.DESC).page(page, limit);
// 
//         return commentsPage.map(this::apply);
//     }
// 
//     /**
//      * 获取文章下的评论统计
//      *
//      * @param cid 文章ID
//      */
//     public long getCommentCount(Integer cid) {
//         if (null == cid) {
//             return 0;
//         }
//         return select().from(Comments.class).where(Comments::getCid, cid).count();
//     }
// 
//     /**
//      * 获取该评论下的追加评论
//      *
//      * @param coid
//      * @return
//      */
//     private void getChildren(List<Comments> list, Integer coid) {
//         List<Comments> cms = select().from(Comments.class).where(Comments::getParent, coid).order(Comments::getCoid, OrderBy.ASC).all();
//         if (null != cms) {
//             list.addAll(cms);
//             cms.forEach(c -> getChildren(list, c.getCoid()));
//         }
//     }
// 
//     private Comment apply(Comments parent) {
//         Comment        comment  = new Comment(parent);
//         List<Comments> children = new ArrayList<>();
//         getChildren(children, comment.getCoid());
//         comment.setChildren(children);
//         if (BladeKit.isNotEmpty(children)) {
//             comment.setLevels(1);
//         }
//         return comment;
//     }
// 
//     public Page<Comments> findComments(CommentParam commentParam) {
//         return select().from(Comments.class)
//                 .order(Comments::getCoid, OrderBy.DESC)
//                 .page(commentParam.getPage(), commentParam.getLimit());
//     }
// 
// }
// 
// Path: src/test/java/com/tale/test/BaseTest.java
// @RunWith(BladeTestRunner.class)
// @BladeApplication(Application.class)
// public abstract class BaseTest {
// 
// }


// Path: src/test/java/com/tale/test/service/CommentsServiceTest.java
import com.blade.ioc.annotation.Inject;
import com.tale.service.CommentsService;
import com.tale.test.BaseTest;
import org.junit.Test;

package com.tale.test.service;


/**
 * @author biezhi
 * @date 2018/6/3
 */
public class CommentsServiceTest extends BaseTest {

    @Inject
    private CommentsService commentsService;