zoukankan      html  css  js  c++  java
  • Play Framework 完整实现一个APP(三)

     1.添加Post类

    package models;
    
    import java.util.*;
    import javax.persistence.*;
    import play.db.jpa.*;
    
    @Entity
    @Table(name = "blog_post")
    public class Post extends Model {
    	public String title;
    	public Date postedAt;
    
    	@Lob
    	public String content;
    
    	@ManyToOne
    	public User author;
    
    	public Post(User author, String title, String content) {
    		this.author = author;
    		this.title = title;
    		this.content = title;
    	}
    }
    

    @Lob 标识,字段是一个large text的类型,@ManyToOne 标识每个Post只能对应一个User,一个User可以对应多个Post

    2. 添加测试用例

            @Test
    	public void createPost() {
    		// Create a new user and save it
    		User user = new User("bob@gmail.com", "####", "Bob").save();
    
    		// Create a new post
    		new Post(user, "My first post", "Hello world").save();
    
    		// Test that the post has been created
    		assertEquals(1, Post.count());
    
    		// Retrieve all posts created by user
    		List<Post> posts = Post.find("byAuthor", user).fetch();
    
    		// Tests
    		assertEquals(1, posts.size());
    		Post firstPost = posts.get(0);
    		assertNotNull(firstPost);
    		assertEquals(user, firstPost.author);
    		assertEquals("My first post", firstPost.title);
    		assertEquals("Hello world", firstPost.content);
    		assertNotNull(firstPost.postedAt);
    	}    
    

      

    3.添加Comment类

    @Entity
    public class Comment extends Model {
    	public String author;
    	public Date postedAt;
    
    	@Lob
    	public String content;
    
    	@ManyToOne
    	public Post post;
    
    	public Comment(Post post, String author, String content) {
    		this.post = post;
    		this.author = author;
    		this.content = content;
    		this.postedAt = new Date();
    	}
    }
    

      

    4.添加测试用例

    @Test
    public void postComments() {
        // Create a new user and save it
        User bob = new User("bob@gmail.com", "secret", "Bob").save();
     
        // Create a new post
        Post bobPost = new Post(bob, "My first post", "Hello world").save();
     
        // Post a first comment
        new Comment(bobPost, "Jeff", "Nice post").save();
        new Comment(bobPost, "Tom", "I knew that !").save();
     
        // Retrieve all comments
        List<Comment> bobPostComments = Comment.find("byPost", bobPost).fetch();
     
        // Tests
        assertEquals(2, bobPostComments.size());
     
        Comment firstComment = bobPostComments.get(0);
        assertNotNull(firstComment);
        assertEquals("Jeff", firstComment.author);
        assertEquals("Nice post", firstComment.content);
        assertNotNull(firstComment.postedAt);
     
        Comment secondComment = bobPostComments.get(1);
        assertNotNull(secondComment);
        assertEquals("Tom", secondComment.author);
        assertEquals("I knew that !", secondComment.content);
        assertNotNull(secondComment.postedAt);
    }
    

      

    5.在Post类中添加Comment

    @OneToMany(mappedBy="post", cascade=CascadeType.ALL)
    public List<Comment> comments;
    	
    public Post(User author, String title, String content) {
    	this.comments = new ArrayList<Comment>();
    	this.author = author;
    	this.title = title;
    	this.content = title;
    	this.postedAt = new Date();
    }
    

      

    6.在Post类中添加方法

    public Post addComment(String author, String content) {
        Comment newComment = new Comment(this, author, content).save();
        this.comments.add(newComment);
        this.save();
        return this;
    }
    

      

    7.添加测试用例

    @Test
    public void useTheCommentsRelation() {
        // Create a new user and save it
        User bob = new User("bob@gmail.com", "secret", "Bob").save();
     
        // Create a new post
        Post bobPost = new Post(bob, "My first post", "Hello world").save();
     
        // Post a first comment
        bobPost.addComment("Jeff", "Nice post");
        bobPost.addComment("Tom", "I knew that !");
     
        // Count things
        assertEquals(1, User.count());
        assertEquals(1, Post.count());
        assertEquals(2, Comment.count());
     
        // Retrieve Bob's post
        bobPost = Post.find("byAuthor", bob).first();
        assertNotNull(bobPost);
     
        // Navigate to comments
        assertEquals(2, bobPost.comments.size());
        assertEquals("Jeff", bobPost.comments.get(0).author);
        
        // Delete the post
        bobPost.delete();
        
        // Check that all comments have been deleted
        assertEquals(1, User.count());
        assertEquals(0, Post.count());
        assertEquals(0, Comment.count());
    }
    

      

    运行Test,如有异常会出现下方提示

    .

  • 相关阅读:
    DELPHI开发LINUX包
    DELPHI开发LINUX的动态库
    中间件测试工具
    CENTOS7安装OPENSSL
    咏南跨平台中间件简介
    IdHTTPServer开发https服务器
    ServiceStack.Redis常用操作
    ServiceStack.Redis 之 IRedisTypedClient<第四篇>
    Redis常用命令速查 <第二篇>
    ServiceStack.Redis之IRedisClient<第三篇>
  • 原文地址:https://www.cnblogs.com/alex09/p/4916620.html
Copyright © 2011-2022 走看看