/** * Yobi, Project Hosting SW * * Copyright 2013 NAVER Corp. * http://yobi.io * * @Author Yi EungJun * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package models; import static org.fest.assertions.Assertions.assertThat; import controllers.AbstractPostingApp; import models.enumeration.Direction; import models.enumeration.Matching; import models.support.FinderTemplate; import models.support.OrderParams; import models.support.SearchParams; import org.junit.*; import utils.JodaDateUtil; import com.avaje.ebean.Page; import com.avaje.ebean.Ebean; import java.util.List; public class PostingTest extends ModelTest<Posting> { @Test public void findById() throws Exception { // Given // When Posting actual = Posting.finder.byId(1l); // Then assertThat(actual).isNotNull(); assertThat(actual.title).isEqualTo("게시판이 새로 생성되었습니다."); assertThat(actual.authorId).isEqualTo(2l); } @Test public void findOnePage() throws Exception { // Given // When SearchParams searchParam = new SearchParams() .add("project.owner", "yobi", Matching.EQUALS) .add("project.name", "projectYobi", Matching.EQUALS) .add("body", "", Matching.CONTAINS); OrderParams orderParams = new OrderParams().add("id", Direction.DESC); Page<Posting> page = FinderTemplate.getPage(orderParams, searchParam, Posting.finder, AbstractPostingApp.ITEMS_PER_PAGE, 0); // Then assertThat(page.getList()).hasSize(1); } @Test public void save() throws Exception { // Given Posting post = getNewPosting(); // When post.save(); // Then Posting actual = Posting.finder.byId(post.id); assertThat(post.id).isGreaterThan(0); assertThat(actual.title).isEqualTo(post.title); assertThat(actual.getBody()).isEqualTo(post.getBody()); assertThat(actual.createdDate).isEqualTo(post.createdDate); assertThat(actual.authorId).isEqualTo(getTestUser().id); assertThat(actual.id).isEqualTo(post.id); // To keep data clean after this test. post.delete(); } private Posting getNewPosting() { Posting post = new Posting(); post.setBody("new Contents"); post.title = "new_title"; post.createdDate = JodaDateUtil.now(); post.project = Project.find.byId(1l); post.setAuthor(getTestUser()); return post; } @Test public void delete() throws Exception { // Given Posting post = getNewPosting(); post.save(); long postId = post.id; assertThat(Posting.finder.byId(postId)).isNotNull(); // When Posting.finder.byId(postId).delete(); // Then assertThat(Posting.finder.byId(postId)).isNull(); assertThat(PostingComment.find.byId(postId)).isNull(); } @Test public void update() throws Exception { // Given Posting post = Posting.finder.byId(1l); post.setBody("수정되었습니다."); post.id = 1l; // When post.update(); // Then Posting actual = Posting.finder.byId(1l); assertThat(actual.getBody()).isEqualTo("수정되었습니다."); assertThat(actual.numOfComments).isEqualTo(1); } @Test public void author() throws Exception { // Given Long currentUserId_yobi = 2l; Long postId = 1l; // When boolean result = Posting.finder.byId(postId).asResource().getAuthorId().equals(currentUserId_yobi); // Then assertThat(result).isEqualTo(true); } }