Merge branch 'feature_comments' of kanban/wedroid into develop
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
commit
450c4503da
@ -0,0 +1,70 @@
|
||||
package wekan.wrapper.api;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.*;
|
||||
import wekan.wrapper.entity.Comment;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface CardCommentService {
|
||||
|
||||
/**
|
||||
* Get all comments attached to a card.
|
||||
*
|
||||
* @param boardId The ID of the board
|
||||
* @param cardId The ID of the card
|
||||
* @return The list of the comments
|
||||
*/
|
||||
@GET("/api/boards/{boardId}/cards/{cardId}/comments")
|
||||
Call<List<Comment>> getAllComments(
|
||||
@Path("boardId") String boardId,
|
||||
@Path("cardId") String cardId
|
||||
);
|
||||
|
||||
/**
|
||||
* Post new comment attached on the give card.
|
||||
*
|
||||
* @param boardId The ID of the board
|
||||
* @param cardId The ID of the card
|
||||
* @param authorId The ID of the author
|
||||
* @param comment The comment
|
||||
* @return The id of the new comment
|
||||
*/
|
||||
@FormUrlEncoded
|
||||
@POST("/api/boards/{boardId}/cards/{cardId}/comments")
|
||||
Call<Comment> postNewComment(
|
||||
@Path("boardId") String boardId,
|
||||
@Path("cardId") String cardId,
|
||||
@Field("authorId") String authorId,
|
||||
@Field("comment") String comment
|
||||
);
|
||||
|
||||
/**
|
||||
* Get a comment attached to a card.
|
||||
*
|
||||
* @param boardId The ID of the board
|
||||
* @param cardId The ID of the card
|
||||
* @param commentId The ID of the comment
|
||||
* @return The comment
|
||||
*/
|
||||
@GET("/api/boards/{boardId}/cards/{cardId}/comments/{commentId}")
|
||||
Call<Comment> getComment(
|
||||
@Path("boardId") String boardId,
|
||||
@Path("cardId") String cardId,
|
||||
@Path("commentId") String commentId
|
||||
);
|
||||
|
||||
/**
|
||||
* Delete a comment attached to a card.
|
||||
*
|
||||
* @param boardId The ID of the board
|
||||
* @param cardId The ID of the card
|
||||
* @param commentId The ID of the comment
|
||||
*/
|
||||
@DELETE("/api/boards/{boardId}/cards/{cardId}/comments/{commentId}")
|
||||
Call<Void> deleteComment(
|
||||
@Path("boardId") String boardId,
|
||||
@Path("cardId") String cardId,
|
||||
@Path("commentId") String commentId
|
||||
);
|
||||
}
|
59
wrapper/src/main/java/wekan/wrapper/entity/Comment.java
Normal file
59
wrapper/src/main/java/wekan/wrapper/entity/Comment.java
Normal file
@ -0,0 +1,59 @@
|
||||
package wekan.wrapper.entity;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class Comment {
|
||||
@SerializedName("_id")
|
||||
private String id;
|
||||
@SerializedName(value = "comment", alternate = "text")
|
||||
private String comment;
|
||||
@SerializedName(value = "authorId", alternate = "userId")
|
||||
private String authorId;
|
||||
private String boardId;
|
||||
private String cardId;
|
||||
private Date createdAt;
|
||||
private Date modifiedAt;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public String getAuthorId() {
|
||||
return authorId;
|
||||
}
|
||||
|
||||
public String getBoardId() {
|
||||
return boardId;
|
||||
}
|
||||
|
||||
public String getCardId() {
|
||||
return cardId;
|
||||
}
|
||||
|
||||
public Date getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public Date getModifiedAt() {
|
||||
return modifiedAt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Comment{" +
|
||||
"id='" + id + '\'' +
|
||||
", comment='" + comment + '\'' +
|
||||
", authorId='" + authorId + '\'' +
|
||||
", boardId='" + boardId + '\'' +
|
||||
", cardId='" + cardId + '\'' +
|
||||
", createdAt=" + createdAt +
|
||||
", modifiedAt=" + modifiedAt +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,132 @@
|
||||
package wekan.wrapper.api;
|
||||
|
||||
import okhttp3.mockwebserver.MockResponse;
|
||||
import okhttp3.mockwebserver.MockWebServer;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
import wekan.wrapper.entity.Comment;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
public class CardCommentServiceTest {
|
||||
private MockWebServer mockWebServer = new MockWebServer();
|
||||
private CardCommentService service = null;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
try {
|
||||
mockWebServer.start();
|
||||
service = new Retrofit.Builder()
|
||||
.baseUrl(mockWebServer.url("/"))
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build()
|
||||
.create(CardCommentService.class);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
public void teardown() {
|
||||
try {
|
||||
mockWebServer.shutdown();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAllComments() {
|
||||
MockResponse response = new MockResponse()
|
||||
.setResponseCode(HttpURLConnection.HTTP_OK)
|
||||
.setBody(
|
||||
"[ " + COMMENT_1 + ", " + COMMENT_2 + ", " + COMMENT_3 + " ]"
|
||||
);
|
||||
|
||||
mockWebServer.enqueue(response);
|
||||
|
||||
try {
|
||||
List<Comment> lists = service.getAllComments("board id", "card id")
|
||||
.execute().body();
|
||||
|
||||
assertNotNull(lists);
|
||||
assertEquals(3, lists.size());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void postNewComment() {
|
||||
MockResponse response = new MockResponse()
|
||||
.setResponseCode(HttpURLConnection.HTTP_OK)
|
||||
.setBody(COMMENT_1);
|
||||
|
||||
mockWebServer.enqueue(response);
|
||||
|
||||
try {
|
||||
Comment comment = service.postNewComment(
|
||||
"board id",
|
||||
"card id",
|
||||
"author id",
|
||||
"comment"
|
||||
).execute().body();
|
||||
|
||||
assertNotNull(comment);
|
||||
assertNotNull(comment.getId());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getComment() {
|
||||
MockResponse response = new MockResponse()
|
||||
.setResponseCode(HttpURLConnection.HTTP_OK)
|
||||
.setBody(COMMENT_3);
|
||||
|
||||
mockWebServer.enqueue(response);
|
||||
|
||||
try {
|
||||
Comment comment = service.getComment(
|
||||
"board id",
|
||||
"card id",
|
||||
"comment id"
|
||||
).execute().body();
|
||||
|
||||
assertNotNull(comment);
|
||||
assertNotNull(comment.getAuthorId());
|
||||
assertNotNull(comment.getComment());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private final static String COMMENT_1 = "{" +
|
||||
"\"_id\":\"zwzAgjHdW4fNJ9YLc\"," +
|
||||
"\"comment\":\"comment 1\"," +
|
||||
"\"authorId\":\"Si69gNgkJfQuk6uiJ\"" +
|
||||
"}";
|
||||
private final static String COMMENT_2 = "{" +
|
||||
"\"_id\":\"zwzAgjHdW4fNJ9YLt\"," +
|
||||
"\"comment\":\"comment 2\"," +
|
||||
"\"authorId\":\"Si69gNgkJfQuk6uiJ\"" +
|
||||
"}";
|
||||
private final static String COMMENT_3 = "{" +
|
||||
"\"_id\":\"DofhD9v96DbX7Wirp\"," +
|
||||
"\"userId\":\"Si69gNgkJfQuk6uiJ\"," +
|
||||
"\"text\":\"commento api\"," +
|
||||
"\"cardId\":\"XQtnuqWEJnEcm6iy2\"," +
|
||||
"\"boardId\":\"TtjXrJyvPkG3xsbkw\"," +
|
||||
"\"createdAt\":\"2019-11-12T20:12:55.749Z\"," +
|
||||
"\"modifiedAt\":\"2019-11-12T20:12:55.749Z\"" +
|
||||
"}";
|
||||
}
|
Loading…
Reference in New Issue
Block a user