Package hu.lacimol.tutorial.todo

Source Code of hu.lacimol.tutorial.todo.TodoServiceImplTest

package hu.lacimol.tutorial.todo;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;

import hu.lacimol.tutorial.todo.model.Comment;
import hu.lacimol.tutorial.todo.model.Todo;
import hu.lacimol.tutorial.todo.service.TodoServiceImpl;

import java.util.List;

import net.java.ao.EntityManager;
import net.java.ao.test.jdbc.Data;
import net.java.ao.test.jdbc.DatabaseUpdater;
import net.java.ao.test.jdbc.DynamicJdbcConfiguration;
import net.java.ao.test.jdbc.Jdbc;
import net.java.ao.test.junit.ActiveObjectsJUnitRunner;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import com.atlassian.activeobjects.external.ActiveObjects;
import com.atlassian.activeobjects.test.TestActiveObjects;

@RunWith(ActiveObjectsJUnitRunner.class)
@Jdbc(DynamicJdbcConfiguration.class)
@Data(TodoServiceImplTest.TodoServiceImplTestDatabaseUpdater.class)
public class TodoServiceImplTest {
  private static final String TODO_DESC = "This is a todo";

  private EntityManager entityManager;

  private ActiveObjects ao;

  private TodoServiceImpl todoService;

  @Before
  public void setUp() throws Exception {
    assertNotNull(entityManager);
    ao = new TestActiveObjects(entityManager);
    todoService = new TodoServiceImpl(ao);
    System.out.println("--- Do test ---");
  }

  @Test
  public void testComments() throws Exception {
    assertEquals(2, ao.find(Comment.class).length);

    Todo todo = ao.find(Todo.class)[0];
    assertEquals(2, todo.getComments().length);
  }

  @Test
  public void testAdd() throws Exception {
    final String description = TODO_DESC + "#1";

    assertEquals(1, ao.find(Todo.class).length);

    final Todo add = todoService.create(description);
    assertFalse(add.getID() == 0);

    ao.flushAll(); // clear all caches

    final Todo[] todos = ao.find(Todo.class);
    assertEquals(2, todos.length);
    assertEquals(add.getID(), todos[1].getID());
    assertEquals(description, todos[1].getDescription());
    assertEquals(false, todos[1].isComplete());
  }

  @Test
  public void testAll() throws Exception {
    assertEquals(1, todoService.findAll().size());

    final Todo todo = ao.create(Todo.class);
    todo.setDescription("Some todo");
    todo.save();

    Comment comment = ao.create(Comment.class);
    comment.setTodo(todo);
    comment.setText("Comment text 3");
    comment.save();

    comment = ao.create(Comment.class);
    comment.setTodo(todo);
    comment.setText("Comment text 4");
    comment.save();

    ao.flushAll(); // clear all caches

    final List<Todo> all = todoService.findAll();
    assertEquals(2, all.size());
    assertEquals(todo.getID(), all.get(1).getID());
    assertEquals("Comment text 3", all.get(1).getComments()[0].getText());
  }

  public static class TodoServiceImplTestDatabaseUpdater implements DatabaseUpdater {
    @SuppressWarnings("unchecked")
    @Override
    public void update(EntityManager em) throws Exception {
      System.out.println("--- Create test data ---");
      em.migrate(Todo.class, Comment.class);

      final Todo todo = em.create(Todo.class);
      todo.setDescription(TODO_DESC);
      todo.save();

      Comment comment = em.create(Comment.class);
      comment.setTodo(todo);
      comment.setText("Comment text 1");
      comment.save();

      comment = em.create(Comment.class);
      comment.setTodo(todo);
      comment.setText("Comment text 2");
      comment.save();
    }
  }
}
TOP

Related Classes of hu.lacimol.tutorial.todo.TodoServiceImplTest

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.