diff --git a/wrapper/src/main/java/wekan/wrapper/api/SwimlanesService.java b/wrapper/src/main/java/wekan/wrapper/api/SwimlanesService.java index 6600066..8a3cae9 100644 --- a/wrapper/src/main/java/wekan/wrapper/api/SwimlanesService.java +++ b/wrapper/src/main/java/wekan/wrapper/api/SwimlanesService.java @@ -7,10 +7,42 @@ import wekan.wrapper.entity.Swimlane; import java.util.List; public interface SwimlanesService { + /** + * Get the list of swimlanes attached to a board. + * + * @param boardId The ID of the board + * @return The list of swimlanes + */ @GET("/api/boards/{boardId}/swimlanes") Call> getAllSwimlanes(@Path("boardId") String boardId); + /** + * Add a swimlane to a board. + * + * @param boardId The ID of the board + * @param swimlaneTitle The new title of the swimlane + * @return The new swimlane + */ @FormUrlEncoded @POST("/api/boards/{boardId}/swimlanes") - Call newSwimlane(@Path("boardId") String boardId, @Field("title") String SwimlaneTitle); + Call newSwimlane(@Path("boardId") String boardId, @Field("title") String swimlaneTitle); + + /** + * Get a swimlane. + * + * @param boardId The ID of the board + * @param swimlaneId The ID of the swimlane + * @return The swimlane + */ + @GET("/api/boards/{boardId}/swimlanes/{swimlaneId}") + Call getSwimlane(@Path("boardId") String boardId, @Path("swimlaneId") String swimlaneId); + + /** + * Delete a swimlane. + * + * @param boardId The ID of the board + * @param swimlaneId The ID of the swimlane + */ + @DELETE("/api/boards/{boardId}/swimlanes/{swimlaneId}") + Call deleteSwimlane(@Path("boardId") String boardId, @Path("swimlaneId") String swimlaneId); } diff --git a/wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java b/wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java index 9e3703e..c814763 100644 --- a/wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java +++ b/wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java @@ -2,10 +2,19 @@ package wekan.wrapper.entity; import com.google.gson.annotations.SerializedName; +import java.util.Date; + public class Swimlane { @SerializedName("_id") private String id; private String title; + private String boardId; + private Date createdAt; + private int sort; + private Color color; + private Date updatedAt; + private Date modifiedAt; + private String type; public String getId() { return id; @@ -15,11 +24,45 @@ public class Swimlane { return title; } + public String getBoardId() { + return boardId; + } + + public Date getCreatedAt() { + return createdAt; + } + + public int getSort() { + return sort; + } + + public Color getColor() { + return color; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public Date getModifiedAt() { + return modifiedAt; + } + + public String getType() { + return type; + } + @Override public String toString() { return "Swimlane{" + "id='" + id + '\'' + ", title='" + title + '\'' + + ", boardId='" + boardId + '\'' + + ", createdAt=" + createdAt + + ", sort=" + sort + + ", updatedAt=" + updatedAt + + ", modifiedAt=" + modifiedAt + + ", type='" + type + '\'' + '}'; } } diff --git a/wrapper/src/test/java/wekan/wrapper/api/SwimlanesServiceTest.java b/wrapper/src/test/java/wekan/wrapper/api/SwimlanesServiceTest.java index e90ce9e..7686589 100644 --- a/wrapper/src/test/java/wekan/wrapper/api/SwimlanesServiceTest.java +++ b/wrapper/src/test/java/wekan/wrapper/api/SwimlanesServiceTest.java @@ -7,6 +7,7 @@ import org.junit.Before; import org.junit.Test; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; +import wekan.wrapper.entity.Color; import wekan.wrapper.entity.Swimlane; import java.io.IOException; @@ -86,6 +87,38 @@ public class SwimlanesServiceTest { } } + @Test + public void getSwimlane() { + MockResponse response = new MockResponse() + .setResponseCode(HttpURLConnection.HTTP_OK) + .setBody(SWIMLANE_2); + + mockWebServer.enqueue(response); + + try { + Swimlane sl = service.getSwimlane("TtjXrJyvPkG3xsbkw", "JNmpXKCupbtyPkYMG") + .execute().body(); + + assertNotNull(sl); + assertEquals("JNmpXKCupbtyPkYMG", sl.getId()); + assertEquals("title 2", sl.getTitle()); + assertEquals(Color.NAVY, sl.getColor()); + } catch (IOException e) { + e.printStackTrace(); + } + } + final static String SWIMLANE_1 = "{\n\"_id\": \"BS4AA79YABBCpDDau\",\n\"title\": \"title 1\"\n}"; - final static String SWIMLANE_2 = "{\n\"_id\": \"QxKYvz7ZW6pcDTwAq\",\n\"title\": \"title 2\"\n}"; + final static String SWIMLANE_2 = "{" + + "\"_id\":\"JNmpXKCupbtyPkYMG\"," + + "\"title\":\"title 2\"," + + "\"boardId\":\"TtjXrJyvPkG3xsbkw\"," + + "\"sort\":1," + + "\"archived\":false," + + "\"createdAt\":\"2019-11-11T20:34:57.649Z\"," + + "\"updatedAt\":\"2019-11-12T13:56:13.844Z\"," + + "\"modifiedAt\":\"2019-11-12T13:56:13.844Z\"," + + "\"type\":\"swimlane\"," + + "\"color\":\"navy\"" + + "}"; }