[Notice] Announcing the End of Demo Server [Read me]

taskBoard Server model & test
@45d1be2829b9ac926f02fb81fbf1b1aa940dead3
--- app/Global.java
+++ app/Global.java
... | ... | @@ -1,15 +1,12 @@ |
1 | 1 |
import java.io.File; |
2 |
-import java.io.IOException; |
|
3 |
-import java.util.*; |
|
4 |
- |
|
5 |
-import javax.servlet.ServletException; |
|
6 |
- |
|
7 |
-import org.tigris.subversion.javahl.ClientException; |
|
2 |
+import java.util.List; |
|
3 |
+import java.util.Map; |
|
8 | 4 |
|
9 | 5 |
import models.Project; |
10 | 6 |
import models.User; |
11 |
-import play.*; |
|
12 | 7 |
import play.Application; |
8 |
+import play.GlobalSettings; |
|
9 |
+import play.Logger; |
|
13 | 10 |
import play.api.mvc.Handler; |
14 | 11 |
import play.libs.Yaml; |
15 | 12 |
import play.mvc.Http.RequestHeader; |
... | ... | @@ -17,14 +14,14 @@ |
17 | 14 |
|
18 | 15 |
import com.avaje.ebean.Ebean; |
19 | 16 |
|
20 |
-import controllers.*; |
|
17 |
+import controllers.routes; |
|
21 | 18 |
|
22 | 19 |
public class Global extends GlobalSettings { |
23 | 20 |
public void onStart(Application app) { |
24 | 21 |
InitialData.insert(app); |
25 | 22 |
InitialData.makeUploadFolder(); |
26 |
-// InitialData.makeTestRepository(); |
|
27 |
-// UserApp.anonymous = User.findByLoginId("anonymous"); |
|
23 |
+ InitialData.makeTestRepository(); |
|
24 |
+ // UserApp.anonymous = User.findByLoginId("anonymous"); |
|
28 | 25 |
} |
29 | 26 |
|
30 | 27 |
@Override |
... | ... | @@ -62,14 +59,11 @@ |
62 | 59 |
Ebean.saveManyToManyAssociations(role, "permissions"); |
63 | 60 |
} |
64 | 61 |
Ebean.save(all.get("projectUsers")); |
65 |
- Ebean.save(all.get("cards")); |
|
66 |
- Ebean.save(all.get("taskBoards")); |
|
67 |
- Ebean.save(all.get("labels")); |
|
68 |
- Ebean.save(all.get("lines")); |
|
69 |
- /*for (Object line : all.get("lines")){ |
|
70 |
- Ebean.saveAssociation(line, "taskBoard"); |
|
71 |
- }*/ |
|
72 | 62 |
|
63 |
+ Ebean.save(all.get("taskBoards")); |
|
64 |
+ Ebean.save(all.get("lines")); |
|
65 |
+ Ebean.save(all.get("cards")); |
|
66 |
+ Ebean.save(all.get("labels")); |
|
73 | 67 |
Ebean.save(all.get("checkLists")); |
74 | 68 |
} |
75 | 69 |
} |
... | ... | @@ -92,6 +86,6 @@ |
92 | 86 |
} |
93 | 87 |
|
94 | 88 |
public void onStop(Application app) { |
95 |
- |
|
89 |
+ |
|
96 | 90 |
} |
97 | 91 |
} |
--- app/controllers/TaskApp.java
+++ app/controllers/TaskApp.java
... | ... | @@ -3,7 +3,12 @@ |
3 | 3 |
import java.util.ArrayList; |
4 | 4 |
import java.util.HashMap; |
5 | 5 |
|
6 |
+import models.Project; |
|
7 |
+import models.task.TaskBoard; |
|
8 |
+ |
|
6 | 9 |
import org.codehaus.jackson.JsonNode; |
10 |
+ |
|
11 |
+import com.avaje.ebean.Ebean; |
|
7 | 12 |
|
8 | 13 |
import play.Logger; |
9 | 14 |
import play.libs.F.Callback; |
... | ... | @@ -55,7 +60,6 @@ |
55 | 60 |
|
56 | 61 |
public void sendNotify(WebSocketConnector that, String msg) { |
57 | 62 |
for (int i = 0; i < sockets.size(); i++) { |
58 |
- |
|
59 | 63 |
WebSocketConnector socket = sockets.get(i); |
60 | 64 |
if (socket != that) { |
61 | 65 |
socket.sendMessage(msg); |
... | ... | @@ -71,6 +75,7 @@ |
71 | 75 |
private String projectName; |
72 | 76 |
private play.mvc.WebSocket.Out<String> out; |
73 | 77 |
private WebSocketServer server; |
78 |
+ private TaskBoard taskBoard; |
|
74 | 79 |
|
75 | 80 |
public WebSocketConnector(String userName, String projectName, |
76 | 81 |
WebSocketServer webSocketServer) { |
... | ... | @@ -83,13 +88,12 @@ |
83 | 88 |
public void onReady(play.mvc.WebSocket.In<String> in, play.mvc.WebSocket.Out<String> out) { |
84 | 89 |
// For each event received on the socket, |
85 | 90 |
in.onMessage(this); |
86 |
- |
|
87 |
- // When the socket is closed. |
|
88 | 91 |
in.onClose(this); |
89 | 92 |
|
90 | 93 |
this.out = out; |
91 |
- // Send a single 'Hello!' message |
|
92 |
- //out.write("Hello!"); |
|
94 |
+ |
|
95 |
+ taskBoard = TaskBoard.findByProject(ProjectApp.getProject(userName, projectName)); |
|
96 |
+ out.write(Json.stringify(taskBoard.toJSON())); |
|
93 | 97 |
} |
94 | 98 |
|
95 | 99 |
public void sendMessage(String msg) { |
... | ... | @@ -98,16 +102,9 @@ |
98 | 102 |
|
99 | 103 |
@Override |
100 | 104 |
public void invoke(String event) throws Throwable { |
101 |
- // out.write()로 응답 |
|
102 |
- |
|
103 |
- //JsonNode data = Json.parse(event); |
|
104 |
- /*for (int i = 0; i < data.size(); i++) { |
|
105 |
- Logger.info(data.get(i).findValue("_id").asText()); |
|
106 |
- }*/ |
|
107 |
- |
|
108 |
- // model에 뭔가 저장한다. |
|
109 |
- // 같은 것에 접속해 있는 모든사람에게 노티를 보낸다. |
|
105 |
+ //클라이언트에서 모델을 보내올때 |
|
110 | 106 |
this.server.sendNotify(this, event); |
107 |
+ this.taskBoard.accecptJSON(Json.parse(event)); |
|
111 | 108 |
} |
112 | 109 |
|
113 | 110 |
@Override |
--- app/models/Task.java
... | ... | @@ -1,17 +0,0 @@ |
1 | -package models; | |
2 | - | |
3 | -import java.util.List; | |
4 | - | |
5 | -import play.db.ebean.Model; | |
6 | - | |
7 | -public class Task extends Model{ | |
8 | - public Project project; | |
9 | - public String title; | |
10 | - public String body; | |
11 | - | |
12 | - private static Finder<Long, Task> find = new Finder<Long, Task>(Long.class, Task.class); | |
13 | - | |
14 | - public static List<Task> list(String userName, String projectName){ | |
15 | - return find.where().eq("project.owner", userName).eq("project.name", projectName).findList(); | |
16 | - } | |
17 | -} |
--- app/models/task/Card.java
+++ app/models/task/Card.java
... | ... | @@ -8,10 +8,16 @@ |
8 | 8 |
|
9 | 9 |
import javax.persistence.Entity; |
10 | 10 |
import javax.persistence.Id; |
11 |
+import javax.persistence.ManyToOne; |
|
12 |
+ |
|
13 |
+import org.codehaus.jackson.JsonNode; |
|
14 |
+import org.codehaus.jackson.node.ObjectNode; |
|
11 | 15 |
|
12 | 16 |
import models.ProjectUser; |
13 | 17 |
|
18 |
+import play.Logger; |
|
14 | 19 |
import play.db.ebean.Model; |
20 |
+import play.libs.Json; |
|
15 | 21 |
|
16 | 22 |
@Entity |
17 | 23 |
public class Card extends Model{ |
... | ... | @@ -20,16 +26,19 @@ |
20 | 26 |
public String title; |
21 | 27 |
public List<TaskComment> comments = new ArrayList<TaskComment>(); |
22 | 28 |
public Set<ProjectUser> assignee = new HashSet<ProjectUser>() ; |
23 |
- int StoryPoint; //!주의 10배로 표현 |
|
29 |
+ public int storyPoint; //!주의 10배로 표현 |
|
24 | 30 |
public Set<Label> labels = new HashSet<Label>(); |
25 | 31 |
public String body; |
26 | 32 |
public Date dueDate; |
27 | 33 |
public CheckList checklist; |
28 | 34 |
|
35 |
+ @ManyToOne |
|
36 |
+ public Line line; |
|
37 |
+ |
|
29 | 38 |
private static Finder<Long, Card> find = new Finder<Long, Card>(Long.class, Card.class); |
30 | 39 |
|
31 |
- public static Card findById(Long cardid){ |
|
32 |
- return find.byId(cardid); |
|
40 |
+ public static Card findById(Long id){ |
|
41 |
+ return find.byId(id); |
|
33 | 42 |
} |
34 | 43 |
|
35 | 44 |
public void assignMember(ProjectUser member){ |
... | ... | @@ -59,4 +68,20 @@ |
59 | 68 |
this.checklist = checklist; |
60 | 69 |
checklist.save(); |
61 | 70 |
} |
71 |
+ |
|
72 |
+ public JsonNode toJSON() { |
|
73 |
+ ObjectNode json = Json.newObject(); |
|
74 |
+ json.put("_id", id); |
|
75 |
+ json.put("title", title); |
|
76 |
+ json.put("body", body); |
|
77 |
+ return json; |
|
78 |
+ } |
|
79 |
+ |
|
80 |
+ public void accecptJSON(JsonNode json) { |
|
81 |
+ title = json.get("title").asText(); |
|
82 |
+ body = json.get("body").asText(); |
|
83 |
+ //TODO 기타 다른것들도 데이터를 집어 넣어 줘야 함. |
|
84 |
+ |
|
85 |
+ save(); |
|
86 |
+ } |
|
62 | 87 |
} |
--- app/models/task/Line.java
+++ app/models/task/Line.java
... | ... | @@ -2,12 +2,19 @@ |
2 | 2 |
|
3 | 3 |
import java.util.List; |
4 | 4 |
|
5 |
+import javax.persistence.CascadeType; |
|
5 | 6 |
import javax.persistence.Entity; |
6 | 7 |
import javax.persistence.Id; |
7 | 8 |
import javax.persistence.ManyToOne; |
9 |
+import javax.persistence.OneToMany; |
|
8 | 10 |
|
9 | 11 |
import org.codehaus.jackson.JsonNode; |
12 |
+import org.codehaus.jackson.node.ArrayNode; |
|
13 |
+import org.codehaus.jackson.node.ObjectNode; |
|
10 | 14 |
|
15 |
+import com.avaje.ebean.Ebean; |
|
16 |
+ |
|
17 |
+import play.Logger; |
|
11 | 18 |
import play.db.ebean.Model; |
12 | 19 |
import play.libs.Json; |
13 | 20 |
|
... | ... | @@ -16,13 +23,50 @@ |
16 | 23 |
@Id |
17 | 24 |
public Long id; |
18 | 25 |
public String title; |
26 |
+ |
|
27 |
+ @OneToMany(cascade=CascadeType.ALL) |
|
19 | 28 |
public List<Card> cards; |
20 | 29 |
|
21 | 30 |
@ManyToOne |
22 | 31 |
public TaskBoard taskBoard; |
23 | 32 |
|
33 |
+ private static Finder<Long, Line> find = new Finder<Long, Line>(Long.class, Line.class); |
|
34 |
+ |
|
24 | 35 |
public JsonNode toJSON() { |
25 |
- // TODO Auto-generated method stub |
|
26 |
- return Json.newObject(); |
|
36 |
+ ObjectNode json = Json.newObject(); |
|
37 |
+ json.put("_id", id); |
|
38 |
+ json.put("title", this.title); |
|
39 |
+ ArrayNode arr = Json.newObject().arrayNode(); |
|
40 |
+ for(Card card : cards){ |
|
41 |
+ arr.add(card.toJSON()); |
|
42 |
+ } |
|
43 |
+ json.put("cards", arr); |
|
44 |
+ return json; |
|
45 |
+ } |
|
46 |
+ |
|
47 |
+ public static Line findById(Long id) { |
|
48 |
+ return find.byId(id); |
|
49 |
+ } |
|
50 |
+ |
|
51 |
+ public void accecptJSON(JsonNode json) { |
|
52 |
+ // TODO 한 라인에 정보들을 저장하면 된다. |
|
53 |
+ //존재하지 않는 카드는 더하고 없는 카드는 삭제한다. |
|
54 |
+ title = json.get("title").asText(); |
|
55 |
+ cards.clear(); |
|
56 |
+ JsonNode cardsJson = json.get("cards"); |
|
57 |
+ for(int i = 0; i < cardsJson.size(); i++) { |
|
58 |
+ JsonNode cardJson = cardsJson.get(i); |
|
59 |
+ Long cardId = cardJson.get("_id").asLong(); |
|
60 |
+ Card card = Card.findById(cardId); |
|
61 |
+ if(card == null){ |
|
62 |
+ card = new Card(); |
|
63 |
+ } |
|
64 |
+ cards.add(card); |
|
65 |
+ card.line = this; |
|
66 |
+ card.accecptJSON(cardJson); |
|
67 |
+ card.save(); |
|
68 |
+ } |
|
69 |
+ save();//왜 save가 안되는거야? |
|
70 |
+ //아마 지워진걸 delete를 해줘야 할듯... 안하면 안되는듯... |
|
27 | 71 |
} |
28 | 72 |
} |
--- app/models/task/TaskBoard.java
+++ app/models/task/TaskBoard.java
... | ... | @@ -6,14 +6,17 @@ |
6 | 6 |
|
7 | 7 |
import javax.persistence.CascadeType; |
8 | 8 |
import javax.persistence.Entity; |
9 |
+import javax.persistence.FetchType; |
|
9 | 10 |
import javax.persistence.Id; |
10 | 11 |
import javax.persistence.OneToMany; |
11 | 12 |
import javax.persistence.OneToOne; |
12 | 13 |
|
13 |
-import org.codehaus.jackson.JsonNode; |
|
14 |
-import org.codehaus.jackson.node.ArrayNode; |
|
15 | 14 |
import models.Project; |
16 | 15 |
|
16 |
+import org.codehaus.jackson.JsonNode; |
|
17 |
+import org.codehaus.jackson.node.ArrayNode; |
|
18 |
+ |
|
19 |
+import play.Logger; |
|
17 | 20 |
import play.db.ebean.Model; |
18 | 21 |
import play.libs.Json; |
19 | 22 |
|
... | ... | @@ -67,24 +70,31 @@ |
67 | 70 |
return find.where().eq("project.id", project.id).findUnique(); |
68 | 71 |
} |
69 | 72 |
public void accecptJSON(JsonNode json) { |
70 |
- // TODO json객체를 taskboard객체로 전환한다. 단 이때 이미 있는걸 확인해야 한다. |
|
71 |
- //아니면 특정 카드만 보내면 _id 로 찾아서 그거만 변경? |
|
72 |
- |
|
73 |
+ // 이미 있는 목록을 지워버리고 온거로만 채운다. 지원지면 난 몰라! |
|
74 |
+ // TODO delete를 고려할것. |
|
75 |
+ lines.clear(); |
|
76 |
+ for(int i =0; i < json.size(); i++){ |
|
77 |
+ JsonNode lineJson = json.get(i); |
|
78 |
+ Long lineId = lineJson.get("_id").asLong(); |
|
79 |
+ Line line = Line.findById(lineId); |
|
80 |
+ if(line == null){ |
|
81 |
+ line = new Line(); |
|
82 |
+ } |
|
83 |
+ lines.add(line); |
|
84 |
+ line.taskBoard = this; |
|
85 |
+ line.accecptJSON(lineJson); |
|
86 |
+ line.save(); |
|
87 |
+ } |
|
88 |
+ save(); |
|
73 | 89 |
} |
74 | 90 |
|
75 | 91 |
public JsonNode toJSON() { |
76 | 92 |
//라인중에서 넣을 것만 넣고 나머지는 다 위임한다. |
77 | 93 |
ArrayNode json = Json.newObject().arrayNode(); |
78 |
- for(int i = 0; i < lines.size(); i++){ |
|
79 |
- json.add(1); |
|
94 |
+ |
|
95 |
+ for(Line line : lines) { |
|
96 |
+ json.add(line.toJSON()); |
|
80 | 97 |
} |
81 |
- /*assert(lines != null); |
|
82 |
- assert(lines.size() == 2); |
|
83 |
- Iterator<Line> iter = lines.iterator(); |
|
84 |
- while(iter.hasNext()){ |
|
85 |
- Line line = iter.next(); |
|
86 |
- json.add(1); |
|
87 |
- }*/ |
|
88 | 98 |
return json; |
89 | 99 |
} |
90 | 100 |
|
--- conf/initial-data.yml
+++ conf/initial-data.yml
... | ... | @@ -1109,49 +1109,59 @@ |
1109 | 1109 |
id: 1 |
1110 | 1110 |
|
1111 | 1111 |
#Task |
1112 |
+taskBoards: |
|
1113 |
+ - !!models.task.TaskBoard |
|
1114 |
+ project: !!models.Project |
|
1115 |
+ id: 1 |
|
1116 |
+lines: |
|
1117 |
+ - !!models.task.Line |
|
1118 |
+ title: Box |
|
1119 |
+ taskBoard: !!models.task.TaskBoard |
|
1120 |
+ id: 1 |
|
1121 |
+ |
|
1122 |
+ - !!models.task.Line |
|
1123 |
+ title: TODO |
|
1124 |
+ taskBoard: !!models.task.TaskBoard |
|
1125 |
+ id: 1 |
|
1126 |
+ |
|
1112 | 1127 |
cards: |
1113 | 1128 |
- !!models.task.Card |
1114 |
- id: 1 |
|
1129 |
+ title: test title |
|
1115 | 1130 |
body: test card |
1116 | 1131 |
assignee: |
1117 | 1132 |
- !!models.ProjectUser |
1118 | 1133 |
id: 1 |
1119 | 1134 |
labels: |
1120 | 1135 |
- !!models.task.Label |
1121 |
- id: 1 |
|
1136 |
+ id: 1 |
|
1122 | 1137 |
comments: |
1123 | 1138 |
- !!models.task.TaskComment |
1124 |
- id: 1 |
|
1139 |
+ id: 1 |
|
1140 |
+ line: !!models.task.Line |
|
1141 |
+ id: 1 |
|
1125 | 1142 |
- !!models.task.Card |
1126 |
- id: 2 |
|
1143 |
+ title: alpha |
|
1127 | 1144 |
body: alpha |
1128 | 1145 |
assignee: |
1129 | 1146 |
- !!models.ProjectUser |
1130 | 1147 |
id: 1 |
1148 |
+ line: !!models.task.Line |
|
1149 |
+ id: 1 |
|
1150 |
+ - !!models.task.Card |
|
1151 |
+ title: Beta |
|
1152 |
+ body: beta |
|
1153 |
+ line: !!models.task.Line |
|
1154 |
+ id: 1 |
|
1155 |
+ |
|
1131 | 1156 |
- !!models.task.TaskComment |
1132 | 1157 |
body: test comment |
1133 | 1158 |
author: !!models.ProjectUser |
1134 |
- id: 1 |
|
1135 |
-taskBoards: |
|
1136 |
- - !!models.task.TaskBoard |
|
1137 |
- project: !!models.Project |
|
1138 |
- id: 1 |
|
1159 |
+ id: 1 |
|
1139 | 1160 |
|
1140 | 1161 |
labels: |
1141 | 1162 |
- !!models.task.Label |
1142 | 1163 |
name: HELP |
1143 | 1164 |
|
1144 |
-lines: |
|
1145 |
- - !!models.task.Line |
|
1146 |
- title: Box |
|
1147 |
- taskBoard: !!models.task.TaskBoard |
|
1148 |
- id: 1 |
|
1149 |
- |
|
1150 |
- - !!models.task.Line |
|
1151 |
- title: TODO |
|
1152 |
- taskBoard: !!models.task.TaskBoard |
|
1153 |
- id: 1 |
|
1154 |
- |
|
1155 | 1165 |
checkLists: |
1156 | 1166 |
- !!models.task.CheckList |
1157 | 1167 |
title: Box |
--- test/models/task/CardTest.java
+++ test/models/task/CardTest.java
... | ... | @@ -4,6 +4,7 @@ |
4 | 4 |
import models.ModelTest; |
5 | 5 |
import models.ProjectUser; |
6 | 6 |
|
7 |
+import org.codehaus.jackson.JsonNode; |
|
7 | 8 |
import org.junit.Test; |
8 | 9 |
|
9 | 10 |
public class CardTest extends ModelTest<Card> { |
... | ... | @@ -89,4 +90,14 @@ |
89 | 90 |
assertThat(card.checklist).isEqualTo(checklist); |
90 | 91 |
assertThat(checklist.id).isNotNull(); |
91 | 92 |
} |
93 |
+ @Test |
|
94 |
+ public void toJSON() throws Exception { |
|
95 |
+ //Given |
|
96 |
+ Card card = Card.findById(1l); |
|
97 |
+ //When |
|
98 |
+ JsonNode json = card.toJSON(); |
|
99 |
+ //Then |
|
100 |
+ assertThat(json.get("title").asText()).isEqualTo("test title"); |
|
101 |
+ assertThat(json.get("body").asText()).isEqualTo("test card"); |
|
102 |
+ } |
|
92 | 103 |
} |
+++ test/models/task/LineTest.java
... | ... | @@ -0,0 +1,26 @@ |
1 | +package models.task; | |
2 | + | |
3 | +import static org.fest.assertions.Assertions.assertThat; | |
4 | +import static play.test.Helpers.fakeApplication; | |
5 | +import static play.test.Helpers.running; | |
6 | + | |
7 | +import org.codehaus.jackson.JsonNode; | |
8 | +import org.junit.Test; | |
9 | + | |
10 | +public class LineTest { | |
11 | + @Test | |
12 | + public void toJson() throws Exception { | |
13 | + running(fakeApplication(), new Runnable() { | |
14 | + @Override | |
15 | + public void run() { | |
16 | + // Given | |
17 | + Line line = Line.findById(1l); | |
18 | + // When | |
19 | + JsonNode json = line.toJSON(); | |
20 | + // Then | |
21 | + assertThat(json.findValue("title").asText()).isEqualTo("Box"); | |
22 | + assertThat(json.findValue("cards").size()).isEqualTo(3); | |
23 | + } | |
24 | + }); | |
25 | + } | |
26 | +} |
--- test/models/task/TaskBoardTest.java
+++ test/models/task/TaskBoardTest.java
... | ... | @@ -1,7 +1,8 @@ |
1 | 1 |
package models.task; |
2 | 2 |
|
3 | 3 |
import static org.fest.assertions.Assertions.assertThat; |
4 |
-import models.ModelTest; |
|
4 |
+import static play.test.Helpers.fakeApplication; |
|
5 |
+import static play.test.Helpers.running; |
|
5 | 6 |
import models.Project; |
6 | 7 |
|
7 | 8 |
import org.codehaus.jackson.JsonNode; |
... | ... | @@ -9,57 +10,74 @@ |
9 | 10 |
import org.junit.Test; |
10 | 11 |
|
11 | 12 |
import play.libs.Json; |
12 |
- |
|
13 | 13 |
import controllers.ProjectApp; |
14 | 14 |
|
15 |
-public class TaskBoardTest extends ModelTest<TaskBoard> { |
|
15 |
+public class TaskBoardTest { |
|
16 | 16 |
|
17 | 17 |
@Test |
18 | 18 |
public void create() throws Exception { |
19 |
- // Given |
|
20 |
- Project project = ProjectApp.getProject("hobi", "nForge4java"); |
|
21 |
- // When |
|
22 |
- TaskBoard taskboard = TaskBoard.create(project); |
|
23 |
- // Then |
|
24 |
- assertThat(taskboard.id).isNotNull(); |
|
25 |
- assertThat(taskboard.lines.size()).isEqualTo(5); |
|
26 |
- assertThat(taskboard.labels.size()).isEqualTo(10); |
|
27 |
- assertThat(taskboard.project).isEqualTo(project); |
|
19 |
+ running(fakeApplication(), new Runnable() { |
|
20 |
+ @Override |
|
21 |
+ public void run() { |
|
22 |
+ // Given |
|
23 |
+ Project project = ProjectApp.getProject("hobi", "nForge4java"); |
|
24 |
+ // When |
|
25 |
+ TaskBoard taskboard = TaskBoard.create(project); |
|
26 |
+ // Then |
|
27 |
+ assertThat(taskboard.id).isNotNull(); |
|
28 |
+ assertThat(taskboard.lines.size()).isEqualTo(5); |
|
29 |
+ assertThat(taskboard.labels.size()).isEqualTo(10); |
|
30 |
+ assertThat(taskboard.project).isEqualTo(project); |
|
31 |
+ } |
|
32 |
+ }); |
|
28 | 33 |
} |
29 | 34 |
|
30 |
- @Ignore @Test |
|
35 |
+ @Test |
|
31 | 36 |
public void findByProject() throws Exception { |
37 |
+ running(fakeApplication(), new Runnable() { |
|
38 |
+ @Override |
|
39 |
+ public void run() { |
|
40 |
+ // Given |
|
41 |
+ Project project = ProjectApp.getProject("hobi", "nForge4java"); |
|
42 |
+ // When |
|
43 |
+ TaskBoard taskboard = TaskBoard.findByProject(project); |
|
44 |
+ System.out.println(taskboard.labels); |
|
45 |
+ // Then |
|
46 |
+ assertThat(taskboard).isNotNull(); |
|
47 |
+ assertThat(taskboard.project).isEqualTo(project); |
|
48 |
+ } |
|
49 |
+ }); |
|
50 |
+ } |
|
51 |
+ |
|
52 |
+ @Ignore |
|
53 |
+ @Test |
|
54 |
+ public void accecptJSON() throws Exception { |
|
32 | 55 |
// Given |
33 | 56 |
Project project = ProjectApp.getProject("hobi", "nForge4java"); |
57 |
+ JsonNode data = Json |
|
58 |
+ .parse("[{'_id':'1','title':'BOX','cards':[{'_id':'2','title':'bbb','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00G'},{'_id':'3','title':'ccc','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00I'}],'$$hashKey':'004'},{'_id':'2','title':'TODO','cards':[{'_id':'4','title':'alpha','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00K'},{'_id':'6','title':'chaile','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00O'},{'_id':'1','title':'aaa','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00E'},{'_id':'7','title':'delta','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00Q'}],'$$hashKey':'006'},{'_id':'3','title':'Doing','cards':[{'_id':'5','title':'bravo','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00M'}],'$$hashKey':'008'},{'_id':'4','title':'Test','cards':[{'_id':'8','title':'check','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00S'},{'_id':'9','title':'test','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00U'}],'$$hashKey':'00A'},{'_id':'5','title':'Done','cards':[],'$$hashKey':'00C'}]"); |
|
34 | 59 |
// When |
35 |
- TaskBoard taskboard = TaskBoard.findByProject(project); |
|
60 |
+ TaskBoard taskBoard = TaskBoard.findByProject(project); |
|
61 |
+ taskBoard.accecptJSON(data); |
|
36 | 62 |
// Then |
37 |
- assertThat(taskboard).isNotNull(); |
|
38 |
- assertThat(taskboard.project).isEqualTo(project); |
|
63 |
+ assertThat(taskBoard.lines.size()).isEqualTo(5); |
|
64 |
+ |
|
39 | 65 |
} |
40 |
- @Ignore @Test |
|
41 |
- public void accecptJSON() throws Exception{ |
|
42 |
- //Given |
|
43 |
- JsonNode data = Json.parse("[{'_id':'1','title':'BOX','cards':[{'_id':'2','title':'bbb','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00G'},{'_id':'3','title':'ccc','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00I'}],'$$hashKey':'004'},{'_id':'2','title':'TODO','cards':[{'_id':'4','title':'alpha','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00K'},{'_id':'6','title':'chaile','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00O'},{'_id':'1','title':'aaa','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00E'},{'_id':'7','title':'delta','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00Q'}],'$$hashKey':'006'},{'_id':'3','title':'Doing','cards':[{'_id':'5','title':'bravo','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00M'}],'$$hashKey':'008'},{'_id':'4','title':'Test','cards':[{'_id':'8','title':'check','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00S'},{'_id':'9','title':'test','body':[],'comment':[],'assignee':[],'labels':[],'checkList':{},'dueDate':{},'storyPoint':-1,'$$hashKey':'00U'}],'$$hashKey':'00A'},{'_id':'5','title':'Done','cards':[],'$$hashKey':'00C'}]"); |
|
44 |
- //When |
|
45 |
- TaskBoard project = TaskBoard.findByProject(getTestProject()); |
|
46 |
- project.accecptJSON(data); |
|
47 |
- //Then |
|
48 |
- assertThat(project.lines.size()).isEqualTo(5); |
|
49 |
- |
|
50 |
- } |
|
51 |
- @Ignore @Test |
|
66 |
+ @Test |
|
52 | 67 |
public void toJSON() throws Exception { |
53 |
- //현재 DB에 들어있는 놈을 JSON으로 내려 보내야 한다. |
|
54 |
- //Given |
|
55 |
- TaskBoard taskBoard = TaskBoard.findByProject(getTestProject()); |
|
56 |
- //assertThat(taskBoard).isNotNull(); |
|
57 |
- assertThat(taskBoard.lines).isNotNull(); |
|
58 |
- assertThat(taskBoard.lines.size()).isEqualTo(2); |
|
59 |
- //When |
|
60 |
- JsonNode json = taskBoard.toJSON(); |
|
61 |
- //Then |
|
62 |
- //assertThat(json.size()).isEqualTo(2); |
|
68 |
+ running(fakeApplication(), new Runnable() { |
|
69 |
+ @Override |
|
70 |
+ public void run() { |
|
71 |
+ // 현재 DB에 들어있는 놈을 JSON으로 내려 보내야 한다. |
|
72 |
+ Project project = ProjectApp.getProject("hobi", "nForge4java"); |
|
73 |
+ // Given |
|
74 |
+ TaskBoard taskBoard = TaskBoard.findByProject(project); |
|
75 |
+ // When |
|
76 |
+ JsonNode json = taskBoard.toJSON(); |
|
77 |
+ // Then |
|
78 |
+ assertThat(json.size()).isEqualTo(2); |
|
79 |
+ } |
|
80 |
+ }); |
|
63 | 81 |
} |
64 | 82 |
|
65 | 83 |
} |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?