Skip to content

Commit 57e0f5a

Browse files
author
Thomas Smith
committed
Add tests for assigning hunks
1 parent 9af6cce commit 57e0f5a

4 files changed

Lines changed: 76 additions & 9 deletions

File tree

src/main/java/previewcode/backend/database/DatabaseInterpreter.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package previewcode.backend.database;
22

3+
import io.atlassian.fugue.Unit;
34
import io.vavr.collection.List;
45
import org.jooq.*;
56
import org.jooq.exception.DataAccessException;
@@ -9,6 +10,7 @@
910
import javax.inject.Inject;
1011

1112
import static previewcode.backend.database.model.Tables.*;
13+
import static previewcode.backend.services.actiondsl.ActionDSL.unit;
1214
import static previewcode.backend.services.actions.DatabaseActions.*;
1315

1416
public class DatabaseInterpreter extends Interpreter {
@@ -23,6 +25,15 @@ public DatabaseInterpreter(DSLContext db) {
2325
on(InsertPullIfNotExists.class).apply(this::insertPull);
2426
on(NewGroup.class).apply(this::insertNewGroup);
2527
on(FetchGroupsForPull.class).apply(this::fetchGroups);
28+
on(AssignHunkToGroup.class).apply(this::assignHunk);
29+
}
30+
31+
protected Unit assignHunk(AssignHunkToGroup action) {
32+
db.insertInto(HUNK)
33+
.columns(HUNK.GROUP_ID, HUNK.ID)
34+
.values(action.groupID.id, action.hunkIdentifier)
35+
.execute();
36+
return unit;
2637
}
2738

2839

src/test/java/previewcode/backend/database/DatabaseInterpreterTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ public class DatabaseInterpreterTest {
1616
protected static final String name = "backend";
1717
protected static final Integer number = 42;
1818

19-
protected PullRequestIdentifier pullIdentifier = new PullRequestIdentifier(owner, name, number);
19+
protected static final PullRequestIdentifier pullIdentifier = new PullRequestIdentifier(owner, name, number);
20+
21+
protected static final PullRequestID dbPullId = new PullRequestID(42L);
22+
2023

2124
@BeforeEach
2225
public void setup(DSLContext db) {

src/test/java/previewcode/backend/database/DatabaseInterpreter_GroupTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ public class DatabaseInterpreter_GroupTest extends DatabaseInterpreterTest {
2121
private static final String groupTitle = "Title";
2222
private static final String groupDescription = "Description";
2323

24-
private static final PullRequestID dbPullId = new PullRequestID(42L);
25-
2624
@BeforeEach
2725
@Override
2826
public void setup(DSLContext db) {
Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,78 @@
11
package previewcode.backend.database;
22

3+
import io.vavr.Tuple2;
4+
import org.jooq.DSLContext;
5+
import org.jooq.exception.DataAccessException;
6+
import org.junit.jupiter.api.BeforeEach;
37
import org.junit.jupiter.api.Test;
48

5-
import static org.junit.Assert.fail;
9+
import static org.assertj.core.api.Assertions.*;
10+
import static previewcode.backend.database.model.Tables.GROUPS;
11+
import static previewcode.backend.database.model.Tables.HUNK;
12+
import static previewcode.backend.database.model.Tables.PULL_REQUEST;
13+
import static previewcode.backend.services.actions.DatabaseActions.*;
614

715
public class DatabaseInterpreter_HunksTest extends DatabaseInterpreterTest {
816

17+
private static final String hunkID = "ABCDEF";
18+
19+
private static final GroupID group_A_id = new GroupID(0L);
20+
private static final GroupID group_B_id = new GroupID(1L);
21+
22+
@BeforeEach
23+
@Override
24+
public void setup(DSLContext db) {
25+
super.setup(db);
26+
db.insertInto(PULL_REQUEST, PULL_REQUEST.ID, PULL_REQUEST.OWNER, PULL_REQUEST.NAME, PULL_REQUEST.NUMBER)
27+
.values(dbPullId.id, owner, name, number)
28+
.execute();
29+
30+
db.insertInto(GROUPS)
31+
.columns(GROUPS.ID, GROUPS.PULL_REQUEST_ID, GROUPS.TITLE, GROUPS.DESCRIPTION)
32+
.values(group_A_id.id, dbPullId.id, "A", "B")
33+
.values(group_B_id.id, dbPullId.id, "C", "D")
34+
.execute();
35+
}
36+
937
@Test
10-
public void assignHunk_groupMustExist() {
11-
fail();
38+
public void assignHunk_groupMustExist() throws Exception {
39+
GroupID invalidID = new GroupID(-1L);
40+
assertThatExceptionOfType(DataAccessException.class)
41+
.isThrownBy(() -> eval(assignToGroup(invalidID, hunkID)));
1242
}
1343

1444
@Test
1545
public void assignHunk_cannotAssignTwice_toSameGroup() {
16-
fail();
46+
AssignHunkToGroup assign = assignToGroup(group_A_id, hunkID);
47+
48+
assertThatExceptionOfType(DataAccessException.class)
49+
.isThrownBy(() -> eval(assign.then(assign)));
50+
}
51+
52+
@Test
53+
public void assignHunk_insertsIntoHunkTable(DSLContext db) throws Exception {
54+
eval(assignToGroup(group_A_id, hunkID));
55+
56+
assertThat(
57+
db.selectCount().from(HUNK).fetchOneInto(Integer.class)
58+
).isOne();
59+
}
60+
61+
@Test
62+
public void assignHunk_canInsertDuplicates(DSLContext db) throws Exception {
63+
eval(assignToGroup(group_A_id, hunkID).then(assignToGroup(group_B_id, hunkID)));
64+
65+
assertThat(
66+
db.selectCount().from(HUNK).fetchOneInto(Integer.class)
67+
).isEqualTo(2);
1768
}
1869

1970
@Test
20-
public void assignHunk_cannotAssignTwice_toDifferentGroups() {
21-
fail();
71+
public void assignHunk_insertsCorrectData(DSLContext db) throws Exception {
72+
eval(assignToGroup(group_A_id, hunkID));
73+
74+
Tuple2 record = db.select(HUNK.GROUP_ID, HUNK.ID).from(HUNK).fetchOneInto(Tuple2.class);
75+
assertThat(record).isEqualTo(new Tuple2(group_A_id.id, hunkID));
2276
}
77+
2378
}

0 commit comments

Comments
 (0)