Merge branch 'feature_swimlanes' 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
3b0f522f65
@ -0,0 +1,48 @@
|
||||
package wekan.wrapper.api;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.*;
|
||||
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<List<Swimlane>> 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<Swimlane> 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<Swimlane> 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<Void> deleteSwimlane(@Path("boardId") String boardId, @Path("swimlaneId") String swimlaneId);
|
||||
}
|
68
wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java
Normal file
68
wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java
Normal file
@ -0,0 +1,68 @@
|
||||
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;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
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 + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
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.Color;
|
||||
import wekan.wrapper.entity.Swimlane;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class SwimlanesServiceTest {
|
||||
private MockWebServer mockWebServer = new MockWebServer();
|
||||
private SwimlanesService service = null;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
try {
|
||||
mockWebServer.start();
|
||||
service = new Retrofit.Builder()
|
||||
.baseUrl(mockWebServer.url("/"))
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build()
|
||||
.create(SwimlanesService.class);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
public void teardown() {
|
||||
try {
|
||||
mockWebServer.shutdown();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAllSwimlanes() {
|
||||
MockResponse response = new MockResponse()
|
||||
.setResponseCode(HttpURLConnection.HTTP_OK)
|
||||
.setBody(
|
||||
"[ " + SWIMLANE_1 + ", " + SWIMLANE_2 + " ]"
|
||||
);
|
||||
|
||||
mockWebServer.enqueue(response);
|
||||
|
||||
try {
|
||||
List<Swimlane> lists = service.getAllSwimlanes("board id").execute().body();
|
||||
|
||||
assertNotNull(lists);
|
||||
|
||||
assertEquals(2, lists.size());
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
assertEquals("title " + (i + 1), lists.get(i).getTitle());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void newSwimlane() {
|
||||
MockResponse response = new MockResponse()
|
||||
.setResponseCode(HttpURLConnection.HTTP_OK)
|
||||
.setBody(
|
||||
"{\"_id\":\"ixM8fvtBMuNPqGRSX\"}"
|
||||
);
|
||||
|
||||
mockWebServer.enqueue(response);
|
||||
|
||||
try {
|
||||
Swimlane sl = service.newSwimlane("board id", "new swimlane").execute().body();
|
||||
|
||||
assertNotNull(sl);
|
||||
assertEquals("ixM8fvtBMuNPqGRSX", sl.getId());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@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 = "{" +
|
||||
"\"_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\"" +
|
||||
"}";
|
||||
}
|
Loading…
Reference in New Issue
Block a user