Service层修改 单元测试
This commit is contained in:
@@ -38,16 +38,6 @@ public class TagController {
|
||||
return ResponseUtil.success(tagService.update(id, name));
|
||||
}
|
||||
|
||||
@GetMapping("/tag/id/{id}")
|
||||
public Response retrieveOneById(@PathVariable("id") long id) {
|
||||
return ResponseUtil.success(tagService.retrieveOneById(id));
|
||||
}
|
||||
|
||||
@GetMapping("/tag/name/{name}")
|
||||
public Response retrieveOneByName(@PathVariable("name") String name) {
|
||||
return ResponseUtil.success(tagService.retrieveOneByName(name));
|
||||
}
|
||||
|
||||
@GetMapping("/tags")
|
||||
public Response getPage(@RequestParam(required = false, defaultValue = "10", value = "count") int count,
|
||||
@RequestParam(required = false, defaultValue = "1", value = "page") int page) {
|
||||
@@ -61,7 +51,7 @@ public class TagController {
|
||||
for (TagModel t : all) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("name", t.getName());
|
||||
jsonObject.put("size", t.getArticles() == null ? 0 : t.getArticles().size());
|
||||
jsonObject.put("size", t.getArticles().size());
|
||||
nameAndCount.add(jsonObject);
|
||||
}
|
||||
return ResponseUtil.success(nameAndCount);
|
||||
|
||||
@@ -20,5 +20,5 @@ public class CategoryModel {
|
||||
|
||||
private String name;
|
||||
|
||||
private List<Article> articles;
|
||||
private List<ArticleModel> articles;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
package cn.celess.blog.entity.model;
|
||||
|
||||
import cn.celess.blog.entity.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -21,21 +19,6 @@ public class TagModel {
|
||||
|
||||
private String name;
|
||||
|
||||
private List<Integer> articles;
|
||||
private List<ArticleModel> articles;
|
||||
|
||||
public TagModel(Tag tag) {
|
||||
this.id = tag.getId();
|
||||
this.name = tag.getName();
|
||||
if (tag.getArticles() == null || tag.getArticles().length() == 0) {
|
||||
articles = null;
|
||||
} else {
|
||||
articles = new ArrayList<>();
|
||||
for (String s : tag.getArticles().split(",")) {
|
||||
if ("".equals(s)) {
|
||||
return;
|
||||
}
|
||||
articles.add(Integer.parseInt(s));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ public class ArticleReq {
|
||||
private Long id;
|
||||
private String title;
|
||||
private String mdContent;
|
||||
private String tags;
|
||||
private String[] tags;
|
||||
private Boolean type;
|
||||
private String url;
|
||||
private String category;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.celess.blog.service;
|
||||
|
||||
import cn.celess.blog.entity.Tag;
|
||||
import cn.celess.blog.entity.model.PageData;
|
||||
import cn.celess.blog.entity.model.TagModel;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -21,15 +22,6 @@ public interface TagService {
|
||||
*/
|
||||
TagModel create(String name);
|
||||
|
||||
/**
|
||||
* 新增数据
|
||||
*
|
||||
* @param tag tag对象
|
||||
* @return 新增后的数据
|
||||
*/
|
||||
|
||||
TagModel create(Tag tag);
|
||||
|
||||
/**
|
||||
* 删除数据
|
||||
*
|
||||
@@ -47,23 +39,6 @@ public interface TagService {
|
||||
*/
|
||||
TagModel update(Long id, String name);
|
||||
|
||||
/**
|
||||
* 查询单个标签信息
|
||||
*
|
||||
* @param tagId id
|
||||
* @return 标签的数据
|
||||
*/
|
||||
TagModel retrieveOneById(long tagId);
|
||||
|
||||
/**
|
||||
* 通过name查询标签的信息
|
||||
*
|
||||
* @param name tag的名称
|
||||
* @return 标签数据
|
||||
*/
|
||||
TagModel retrieveOneByName(String name);
|
||||
|
||||
|
||||
/**
|
||||
* 分页获取标签数据
|
||||
*
|
||||
@@ -71,7 +46,7 @@ public interface TagService {
|
||||
* @param page 数据页
|
||||
* @return 分页数据
|
||||
*/
|
||||
PageInfo<TagModel> retrievePage(int page, int count);
|
||||
PageData<TagModel> retrievePage(int page, int count);
|
||||
|
||||
/**
|
||||
* 获取全部标签数据
|
||||
|
||||
@@ -121,7 +121,7 @@ public class ArticleServiceImpl implements ArticleService {
|
||||
Article articleFromDb = articleMapper.findArticleById(article.getId());
|
||||
|
||||
ArticleModel articleModel = ModalTrans.article(articleFromDb);
|
||||
articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(article.getId())));
|
||||
articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(article.getId()), true));
|
||||
return articleModel;
|
||||
}
|
||||
|
||||
@@ -281,8 +281,7 @@ public class ArticleServiceImpl implements ArticleService {
|
||||
PageData<ArticleModel> pageData = new PageData<ArticleModel>(new PageInfo<Article>(articleList));
|
||||
List<ArticleModel> articleModelList = new ArrayList<>();
|
||||
articleList.forEach(article -> {
|
||||
ArticleModel articleModel = ModalTrans.article(article);
|
||||
articleModel.setMdContent(null);
|
||||
ArticleModel articleModel = ModalTrans.article(article, true);
|
||||
articleModelList.add(articleModel);
|
||||
});
|
||||
pageData.setList(articleModelList);
|
||||
@@ -298,10 +297,8 @@ public class ArticleServiceImpl implements ArticleService {
|
||||
List<ArticleModel> articleModelList = new ArrayList<>();
|
||||
|
||||
articleList.forEach(article -> {
|
||||
ArticleModel model = ModalTrans.article(article);
|
||||
ArticleModel model = ModalTrans.article(article, true);
|
||||
setPreAndNextArticle(model);
|
||||
model.setOpen(null);
|
||||
model.setMdContent(null);
|
||||
articleModelList.add(model);
|
||||
});
|
||||
|
||||
@@ -321,10 +318,8 @@ public class ArticleServiceImpl implements ArticleService {
|
||||
List<ArticleModel> modelList = new ArrayList<>();
|
||||
|
||||
open.forEach(article -> {
|
||||
ArticleModel model = ModalTrans.article(article);
|
||||
model.setMdContent(null);
|
||||
ArticleModel model = ModalTrans.article(article, true);
|
||||
model.setTags(null);
|
||||
model.setOpen(null);
|
||||
setPreAndNextArticle(model);
|
||||
});
|
||||
return new PageData<ArticleModel>(new PageInfo<Article>(open), modelList);
|
||||
@@ -340,9 +335,7 @@ public class ArticleServiceImpl implements ArticleService {
|
||||
List<ArticleTag> articleByTag = articleTagMapper.findArticleByTagAndOpen(tag.getId());
|
||||
List<ArticleModel> modelList = new ArrayList<>();
|
||||
articleByTag.forEach(articleTag -> {
|
||||
ArticleModel model = ModalTrans.article(articleTag.getArticle());
|
||||
model.setMdContent(null);
|
||||
model.setOpen(null);
|
||||
ArticleModel model = ModalTrans.article(articleTag.getArticle(), true);
|
||||
});
|
||||
return new PageData<ArticleModel>(new PageInfo<ArticleTag>(articleByTag), modelList);
|
||||
}
|
||||
@@ -351,7 +344,7 @@ public class ArticleServiceImpl implements ArticleService {
|
||||
if (articleModel == null) {
|
||||
return;
|
||||
}
|
||||
articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(articleModel.getId())));
|
||||
articleModel.setNextArticle(ModalTrans.article(articleMapper.getNextArticle(articleModel.getId())));
|
||||
articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(articleModel.getId()), true));
|
||||
articleModel.setNextArticle(ModalTrans.article(articleMapper.getNextArticle(articleModel.getId()), true));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,16 +2,23 @@ package cn.celess.blog.service.serviceimpl;
|
||||
|
||||
import cn.celess.blog.enmu.ResponseEnum;
|
||||
import cn.celess.blog.entity.Article;
|
||||
import cn.celess.blog.entity.ArticleTag;
|
||||
import cn.celess.blog.entity.Tag;
|
||||
import cn.celess.blog.entity.TagCategory;
|
||||
import cn.celess.blog.entity.model.ArticleModel;
|
||||
import cn.celess.blog.entity.model.PageData;
|
||||
import cn.celess.blog.entity.model.TagModel;
|
||||
import cn.celess.blog.exception.MyException;
|
||||
import cn.celess.blog.mapper.ArticleMapper;
|
||||
import cn.celess.blog.mapper.ArticleTagMapper;
|
||||
import cn.celess.blog.mapper.TagMapper;
|
||||
import cn.celess.blog.service.TagService;
|
||||
import cn.celess.blog.util.ModalTrans;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
@@ -29,6 +36,8 @@ public class TagServiceImpl implements TagService {
|
||||
HttpServletRequest request;
|
||||
@Autowired
|
||||
ArticleMapper articleMapper;
|
||||
@Autowired
|
||||
ArticleTagMapper articleTagMapper;
|
||||
|
||||
@Override
|
||||
public TagModel create(String name) {
|
||||
@@ -39,40 +48,19 @@ public class TagServiceImpl implements TagService {
|
||||
Tag tag = new Tag();
|
||||
tag.setName(name);
|
||||
tagMapper.insert(tag);
|
||||
return new TagModel(tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagModel create(Tag tag) {
|
||||
if (tag == null) {
|
||||
throw new MyException(ResponseEnum.PARAMETERS_ERROR);
|
||||
}
|
||||
tagMapper.insert(tag);
|
||||
return new TagModel(tag);
|
||||
return ModalTrans.tag(tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean delete(long tagId) {
|
||||
Tag tag = tagMapper.findTagById(tagId);
|
||||
if (tag == null) {
|
||||
throw new MyException(ResponseEnum.TAG_NOT_EXIST);
|
||||
}
|
||||
if (tag.getArticles() == null) {
|
||||
return tagMapper.delete(tagId) == 1;
|
||||
}
|
||||
String[] articleArray = tag.getArticles().split(",");
|
||||
for (int i = 0; i < articleArray.length; i++) {
|
||||
if (articleArray[i] == null || "".equals(articleArray[i])) {
|
||||
continue;
|
||||
}
|
||||
long articleID = Long.parseLong(articleArray[i]);
|
||||
Article article = articleMapper.findArticleById(articleID);
|
||||
if (article == null) {
|
||||
continue;
|
||||
}
|
||||
article.setTagsId(article.getTagsId().replace(tagId + ",", ""));
|
||||
articleMapper.update(article);
|
||||
}
|
||||
List<ArticleTag> articleByTag = articleTagMapper.findArticleByTag(tagId);
|
||||
// 删除文章
|
||||
articleByTag.forEach(articleTag -> articleMapper.delete(articleTag.getArticle().getId()));
|
||||
return tagMapper.delete(tagId) == 1;
|
||||
}
|
||||
|
||||
@@ -82,47 +70,33 @@ public class TagServiceImpl implements TagService {
|
||||
if (id == null) {
|
||||
throw new MyException(ResponseEnum.PARAMETERS_ERROR.getCode(), "缺少ID");
|
||||
}
|
||||
Tag tagFromDB = tagMapper.findTagById(id);
|
||||
tagFromDB.setName(name);
|
||||
|
||||
tagMapper.update(tagFromDB);
|
||||
return new TagModel(tagFromDB);
|
||||
Tag tag = tagMapper.findTagById(id);
|
||||
tag.setName(name);
|
||||
tagMapper.update(tag);
|
||||
return ModalTrans.tag(tag);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagModel retrieveOneById(long tagId) {
|
||||
Tag tag = tagMapper.findTagById(tagId);
|
||||
if (tag == null) {
|
||||
throw new MyException(ResponseEnum.TAG_NOT_EXIST);
|
||||
}
|
||||
return new TagModel(tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagModel retrieveOneByName(String name) {
|
||||
Tag tag = tagMapper.findTagByName(name);
|
||||
if (tag == null) {
|
||||
throw new MyException(ResponseEnum.TAG_NOT_EXIST);
|
||||
}
|
||||
return new TagModel(tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<TagModel> retrievePage(int page, int count) {
|
||||
public PageData<TagModel> retrievePage(int page, int count) {
|
||||
PageHelper.startPage(page, count);
|
||||
List<Tag> tagList = tagMapper.findAll();
|
||||
PageInfo pageInfo = new PageInfo(tagList);
|
||||
List<TagModel> list = new ArrayList<>();
|
||||
tagList.forEach(e -> list.add(new TagModel(e)));
|
||||
pageInfo.setList(list);
|
||||
return pageInfo;
|
||||
List<TagModel> modelList = new ArrayList<>();
|
||||
tagList.forEach(tag -> modelList.add(ModalTrans.tag(tag)));
|
||||
return new PageData<TagModel>(new PageInfo<Tag>(tagList), modelList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TagModel> findAll() {
|
||||
List<TagModel> list = new ArrayList<>();
|
||||
tagMapper.findAll().forEach(e -> list.add(new TagModel(e)));
|
||||
tagMapper.findAll().forEach(e -> {
|
||||
TagModel model = ModalTrans.tag(e);
|
||||
List<ArticleTag> articleByTagAndOpen = articleTagMapper.findArticleByTagAndOpen(e.getId());
|
||||
List<ArticleModel> articleModelList = new ArrayList<>();
|
||||
articleByTagAndOpen.forEach(articleTag -> articleModelList.add(ModalTrans.article(articleTag.getArticle(), true)));
|
||||
model.setArticles(articleModelList);
|
||||
list.add(model);
|
||||
});
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,11 @@ package cn.celess.blog.util;
|
||||
|
||||
import cn.celess.blog.entity.Article;
|
||||
import cn.celess.blog.entity.Category;
|
||||
import cn.celess.blog.entity.Tag;
|
||||
import cn.celess.blog.entity.User;
|
||||
import cn.celess.blog.entity.model.ArticleModel;
|
||||
import cn.celess.blog.entity.model.CategoryModel;
|
||||
import cn.celess.blog.entity.model.TagModel;
|
||||
import cn.celess.blog.entity.model.UserModel;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
@@ -30,6 +32,17 @@ public class ModalTrans {
|
||||
}
|
||||
|
||||
|
||||
public static ArticleModel article(Article article, boolean noMdContent) {
|
||||
ArticleModel article1 = article(article);
|
||||
if (!noMdContent) {
|
||||
return article1;
|
||||
}
|
||||
article1.setMdContent(null);
|
||||
article1.setOpen(null);
|
||||
return article1;
|
||||
}
|
||||
|
||||
|
||||
public static UserModel user(User user) {
|
||||
UserModel userModel = new UserModel();
|
||||
BeanUtils.copyProperties(user, userModel);
|
||||
@@ -41,4 +54,11 @@ public class ModalTrans {
|
||||
BeanUtils.copyProperties(category, model);
|
||||
return model;
|
||||
}
|
||||
|
||||
|
||||
public static TagModel tag(Tag tag) {
|
||||
TagModel model = new TagModel();
|
||||
BeanUtils.copyProperties(tag, model);
|
||||
return model;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<select id="findAll" resultMap="tagResultMap">
|
||||
select *
|
||||
from tag_category
|
||||
where is_category = false;
|
||||
where is_category = false
|
||||
</select>
|
||||
|
||||
<select id="count" resultType="long">
|
||||
|
||||
@@ -2,9 +2,9 @@ package cn.celess.blog.controller;
|
||||
|
||||
import cn.celess.blog.BaseTest;
|
||||
import cn.celess.blog.entity.Tag;
|
||||
import cn.celess.blog.entity.model.PageData;
|
||||
import cn.celess.blog.entity.model.TagModel;
|
||||
import cn.celess.blog.mapper.TagMapper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import net.sf.json.JSONArray;
|
||||
import net.sf.json.JSONObject;
|
||||
import org.junit.Test;
|
||||
@@ -23,7 +23,7 @@ public class TagControllerTest extends BaseTest {
|
||||
|
||||
@Test
|
||||
public void addOne() throws Exception {
|
||||
String name = UUID.randomUUID().toString().substring(0, 4);
|
||||
String name = randomStr(4);
|
||||
mockMvc.perform(post("/admin/tag/create?name=" + name)).andDo(result -> assertEquals(HAVE_NOT_LOG_IN.getCode(), JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code)));
|
||||
mockMvc.perform(post("/admin/tag/create?name=" + name).header("authorization", userLogin())).andDo(result -> assertEquals(PERMISSION_ERROR.getCode(), JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code)));
|
||||
mockMvc.perform(post("/admin/tag/create?name=" + name).header("authorization", adminLogin())).andDo(result -> {
|
||||
@@ -66,42 +66,11 @@ public class TagControllerTest extends BaseTest {
|
||||
assertNotNull(object.getJSONObject(Result));
|
||||
TagModel t = (TagModel) JSONObject.toBean(object.getJSONObject(Result), TagModel.class);
|
||||
assertEquals(name, t.getName());
|
||||
StringBuilder s = new StringBuilder();
|
||||
t.getArticles().forEach(e -> s.append(e).append(","));
|
||||
assertEquals(tag.getArticles(), s.toString());
|
||||
assertEquals(tag.getId(), t.getId());
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void retrieveOneById() throws Exception {
|
||||
Tag tag = tagMapper.getLastestTag();
|
||||
assertNotNull(tag.getId());
|
||||
mockMvc.perform(get("/tag/id/" + tag.getId())).andDo(result -> {
|
||||
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
|
||||
assertEquals(SUCCESS.getCode(), object.getInt(Code));
|
||||
assertNotNull(object.getJSONObject(Result));
|
||||
TagModel t = (TagModel) JSONObject.toBean(object.getJSONObject(Result), TagModel.class);
|
||||
assertEquals(tag.getId(), t.getId());
|
||||
assertNotNull(t.getName());
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void retrieveOneByName() throws Exception {
|
||||
Tag tag = tagMapper.getLastestTag();
|
||||
assertNotNull(tag.getName());
|
||||
mockMvc.perform(get("/tag/name/" + tag.getName())).andDo(result -> {
|
||||
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
|
||||
assertEquals(SUCCESS.getCode(), object.getInt(Code));
|
||||
assertNotNull(object.getJSONObject(Result));
|
||||
TagModel t = (TagModel) JSONObject.toBean(object.getJSONObject(Result), TagModel.class);
|
||||
assertEquals(tag.getName(), t.getName());
|
||||
assertNotNull(t.getId());
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getPage() throws Exception {
|
||||
mockMvc.perform(get("/tags?page=1&count=5"))
|
||||
@@ -114,14 +83,12 @@ public class TagControllerTest extends BaseTest {
|
||||
assertNotNull(articlesJSON.getJSONObject(Result));
|
||||
// 判断pageInfo是否包装完全
|
||||
JSONObject resultJson = JSONObject.fromObject(articlesJSON.getJSONObject(Result));
|
||||
PageInfo pageInfo = (PageInfo) JSONObject.toBean(resultJson, PageInfo.class);
|
||||
assertNotEquals(0, pageInfo.getTotal());
|
||||
assertNotEquals(0, pageInfo.getStartRow());
|
||||
assertNotEquals(0, pageInfo.getEndRow());
|
||||
assertEquals(1, pageInfo.getPageNum());
|
||||
assertEquals(5, pageInfo.getPageSize());
|
||||
PageData<TagModel> pageData = (PageData<TagModel>) JSONObject.toBean(resultJson, PageData.class);
|
||||
assertNotEquals(0, pageData.getTotal());
|
||||
assertEquals(1, pageData.getPageNum());
|
||||
assertEquals(5, pageData.getPageSize());
|
||||
// 内容完整
|
||||
for (Object tag : pageInfo.getList()) {
|
||||
for (Object tag : pageData.getList()) {
|
||||
TagModel t = (TagModel) JSONObject.toBean(JSONObject.fromObject(tag), TagModel.class);
|
||||
assertNotNull(t.getId());
|
||||
assertNotNull(t.getName());
|
||||
|
||||
Reference in New Issue
Block a user