Package org.uned.agonzalo16.bitacora.dao

Source Code of org.uned.agonzalo16.bitacora.dao.ArticleDaoTest

package org.uned.agonzalo16.bitacora.dao;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

import java.util.Date;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.uned.agonzalo16.bitacora.BaseDataStoreTest;
import org.uned.agonzalo16.bitacora.domain.Article;
import org.uned.agonzalo16.bitacora.domain.Blog;
import org.uned.agonzalo16.bitacora.domain.User;
import org.uned.agonzalo16.bitacora.domain.UserType;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/META-INF/spring/applicationContext-test.xml")
public class ArticleDaoTest extends BaseDataStoreTest {

  @Autowired
  private ArticleDao articleDao;

  @Autowired
  private BlogDao blogDao;

  @Autowired
  private UserDao userDao;

  private Blog createBlog() {
    Blog blog = new Blog();
    blog.setName("blog 1");
    blog.setCreationDate(new Date());
    blog.setDescription("description 1");

    return blogDao.merge(blog);
  }

  private User createUser() {
    User user = new User();
    user.setActive(true);
    user.setCreationDate(new Date());
    user.setEmail("email@test.com");
    user.setLocalization("Spain");
    user.setPassword("password");
    user.setType(UserType.VISITOR.getType());
    user.setUsername("username");
    user.setWebSite("www.site.com");

    return userDao.merge(user);
  }

  @Test
  public void testList() {
    Blog blog = createBlog();
    User user = createUser();
    for (int i = 0; i < 100; i++) {
      Article article = new Article();
      article.setTitle("title " + i);
      article.setCreationDate(new Date());
      article.setText("text " + i);
      article.setOpenComments(true);
      article.setBlog(blog);
      article.setUser(user);

      articleDao.merge(article);
    }

    List<Article> allArticles = articleDao.findAll();

    assertEquals("100 articles in datastore", allArticles.size(), 100);
  }

  @Test
  public void testSave() {
    Article article = new Article();
    article.setTitle("title");
    article.setCreationDate(new Date());
    article.setText("text");
    article.setOpenComments(true);
    article.setBlog(createBlog());
    article.setUser(createUser());

    Article newArticle = articleDao.merge(article);

    assertEquals("Id must be the same", article.getId(), newArticle.getId());
  }

  @Test
  public void testDelete() {
    Article article = new Article();
    article.setTitle("title");
    article.setCreationDate(new Date());
    article.setText("text");
    article.setOpenComments(true);
    article.setBlog(createBlog());
    article.setUser(createUser());

    Article newArticle = articleDao.merge(article);

    articleDao.delete(newArticle.getId());

    assertNull("The entity has been deleted", articleDao.get(newArticle.getId()));
  }

  @Test
  public void testFidByBlog() {
    Blog blog1 = createBlog();
    Blog blog2 = createBlog();
    for (int i = 0; i < 10; i++) {
      Article article = new Article();
      article.setTitle("title " + i);
      article.setCreationDate(new Date());
      article.setText("text " + i);
      article.setOpenComments(true);
      article.setBlog(blog1);
      article.setUser(createUser());

      articleDao.merge(article);
    }

    for (int i = 10; i < 30; i++) {
      Article article = new Article();
      article.setTitle("title " + i);
      article.setCreationDate(new Date());
      article.setText("text " + i);
      article.setOpenComments(true);
      article.setBlog(blog2);
      article.setUser(createUser());

      articleDao.merge(article);
    }

    List<Article> blog1Articles = articleDao.findByBlog(blog1);

    assertEquals("10 articles in blog 1", blog1Articles.size(), 10);

    List<Article> blog2Articles = articleDao.findByBlog(blog2);

    assertEquals("20 articles in blog 2", blog2Articles.size(), 20);
  }

  @Test
  public void testDeleteBlogWithArticles() {
    Blog blog1 = createBlog();
    Blog blog2 = createBlog();
    for (int i = 0; i < 10; i++) {
      Article article = new Article();
      article.setTitle("title " + i);
      article.setCreationDate(new Date());
      article.setText("text " + i);
      article.setOpenComments(true);
      article.setBlog(blog1);

      articleDao.merge(article);
    }

    for (int i = 10; i < 30; i++) {
      Article article = new Article();
      article.setTitle("title " + i);
      article.setCreationDate(new Date());
      article.setText("text " + i);
      article.setOpenComments(true);
      article.setBlog(blog2);

      articleDao.merge(article);
    }

    assertEquals("30 articles", articleDao.findAll().size(), 30);

    blogDao.delete(blog1.getId());

    assertEquals("20 articles", articleDao.findAll().size(), 20);

    blogDao.delete(blog2.getId());

    assertEquals("0 articles", articleDao.findAll().size(), 0);
  }

  @Test
  public void testFidByUser() {
    Blog blog = createBlog();
    User user1 = createUser();
    User user2 = createUser();
    for (int i = 0; i < 10; i++) {
      Article article = new Article();
      article.setTitle("title " + i);
      article.setCreationDate(new Date());
      article.setText("text " + i);
      article.setOpenComments(true);
      article.setBlog(blog);
      article.setUser(user1);

      articleDao.merge(article);
    }

    for (int i = 10; i < 30; i++) {
      Article article = new Article();
      article.setTitle("title " + i);
      article.setCreationDate(new Date());
      article.setText("text " + i);
      article.setOpenComments(true);
      article.setBlog(blog);
      article.setUser(user2);

      articleDao.merge(article);
    }

    List<Article> user1Articles = articleDao.findByUser(user1);

    assertEquals("10 articles for user 1", user1Articles.size(), 10);

    List<Article> user2Articles = articleDao.findByUser(user2);

    assertEquals("20 articles for user 2", user2Articles.size(), 20);
  }

}
TOP

Related Classes of org.uned.agonzalo16.bitacora.dao.ArticleDaoTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.