package to.rtc.rtc2jira.storage;
import static org.junit.Assert.assertEquals;
import static to.rtc.rtc2jira.storage.TestWorkItemCreator.createWorkItem;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import to.rtc.rtc2jira.TestDatabaseRule;
import com.orientechnologies.orient.core.record.impl.ODocument;
public class StorageQueryTest {
@Rule
public TestDatabaseRule testDbRule = new TestDatabaseRule();
private StorageEngine storage;
@Before
public void setUp() throws Exception {
storage = testDbRule.getEngine();
}
@Test
public void testGetWorkItems_NoWorkItems_ShouldReturnEmptyCollection() {
assertEquals(0, StorageQuery.getRTCWorkItems(storage).size());
}
@Test
public void testGetWorkItems_TwoWorkItems_ShouldReturnThem() {
List<ODocument> createdWorkItemsSorted = Stream.of(createWorkItem(1, storage), createWorkItem(2, storage)) //
.sorted().collect(Collectors.toList());
List<ODocument> storedWorkItems = StorageQuery.getRTCWorkItems(storage);
assertEquals(2, storedWorkItems.size());
List<ODocument> storedWorkItemsSorted = storedWorkItems.stream() //
.sorted().collect(Collectors.toList());
assertEquals(createdWorkItemsSorted.get(0).field(FieldNames.ID), storedWorkItemsSorted.get(0).field(FieldNames.ID));
}
@Test
public void testGetField_FieldIsNotAvailable_ShouldReturnFallBackValue() {
ODocument doc = createWorkItem(1, storage);
String fallbackValue = "aFallBackValue";
String fieldValue = StorageQuery.getField(doc, "anyFieldName", fallbackValue);
assertEquals(fallbackValue, fieldValue);
}
@Test
public void testGetField_FieldIsAvailable_ShouldReturnFieldValue() {
ODocument doc = createWorkItem(1, storage);
String fieldname = "anyFieldName";
String expectedValue = "anyValue";
doc.field(fieldname, expectedValue);
String fieldValue = StorageQuery.getField(doc, fieldname, "aFallBackValue");
assertEquals(expectedValue, fieldValue);
}
}