mirror of https://github.com/tasks/tasks
Move CaldavTaskAdapterTest to androidTest
parent
3ec3c7426d
commit
783898a0bb
@ -0,0 +1,176 @@
|
||||
package com.todoroo.astrid.adapter
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.natpryce.makeiteasy.MakeItEasy.with
|
||||
import com.todoroo.astrid.dao.TaskDao
|
||||
import org.junit.Assert.*
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.tasks.data.CaldavDao
|
||||
import org.tasks.data.CaldavTask
|
||||
import org.tasks.data.SubsetCaldav
|
||||
import org.tasks.data.TaskContainer
|
||||
import org.tasks.injection.InjectingTestCase
|
||||
import org.tasks.injection.TestComponent
|
||||
import org.tasks.makers.TaskContainerMaker.PARENT
|
||||
import org.tasks.makers.TaskContainerMaker.newTaskContainer
|
||||
import javax.inject.Inject
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class CaldavTaskAdapterTest : InjectingTestCase() {
|
||||
|
||||
@Inject lateinit var taskDao: TaskDao
|
||||
@Inject lateinit var caldavDao: CaldavDao
|
||||
|
||||
private lateinit var adapter: CaldavTaskAdapter
|
||||
private val tasks = ArrayList<TaskContainer>()
|
||||
|
||||
@Before
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
|
||||
tasks.clear()
|
||||
adapter = CaldavTaskAdapter(taskDao, caldavDao)
|
||||
adapter.setDataSource(object : TaskAdapterDataSource {
|
||||
override fun getItem(position: Int) = tasks[position]
|
||||
|
||||
override val itemCount get() = tasks.size
|
||||
})
|
||||
}
|
||||
|
||||
@Test
|
||||
fun canMoveTask() {
|
||||
add(
|
||||
newTaskContainer(),
|
||||
newTaskContainer())
|
||||
|
||||
assertTrue(adapter.canMove(tasks[0], 0, tasks[1], 1))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun cantMoveTaskToChildPosition() {
|
||||
add(newTaskContainer())
|
||||
add(newTaskContainer(with(PARENT, tasks[0])),
|
||||
newTaskContainer(with(PARENT, tasks[0])))
|
||||
|
||||
assertFalse(adapter.canMove(tasks[0], 0, tasks[1], 1))
|
||||
assertFalse(adapter.canMove(tasks[0], 0, tasks[2], 2))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun canMoveChildAboveParent() {
|
||||
add(newTaskContainer())
|
||||
add(newTaskContainer(with(PARENT, tasks[0])))
|
||||
|
||||
assertTrue(adapter.canMove(tasks[1], 1, tasks[0], 0))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun canMoveChildBetweenSiblings() {
|
||||
add(newTaskContainer())
|
||||
add(newTaskContainer(with(PARENT, tasks[0])),
|
||||
newTaskContainer(with(PARENT, tasks[0])))
|
||||
|
||||
assertTrue(adapter.canMove(tasks[1], 1, tasks[2], 2))
|
||||
assertTrue(adapter.canMove(tasks[2], 2, tasks[1], 1))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun maxIndentNoChildren() {
|
||||
add(newTaskContainer(),
|
||||
newTaskContainer())
|
||||
|
||||
assertEquals(1, adapter.maxIndent(0, tasks[1]))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun maxIndentMultiLevelSubtask() {
|
||||
add(newTaskContainer())
|
||||
add(newTaskContainer(with(PARENT, tasks[0])),
|
||||
newTaskContainer())
|
||||
|
||||
assertEquals(2, adapter.maxIndent(1, tasks[2]))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun movingTaskToNewParentSetsId() {
|
||||
add(newTaskContainer(),
|
||||
newTaskContainer())
|
||||
|
||||
adapter.moved(1, 1, 1)
|
||||
|
||||
assertEquals(tasks[0].id, taskDao.fetch(tasks[1].id)!!.parent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun movingTaskToNewParentSetsRemoteId() {
|
||||
add(newTaskContainer(),
|
||||
newTaskContainer())
|
||||
|
||||
adapter.moved(1, 1, 1)
|
||||
|
||||
val parentId = caldavDao.getTask(tasks[0].id)!!.remoteId!!
|
||||
|
||||
assertTrue(parentId.isNotBlank())
|
||||
assertEquals(parentId, caldavDao.getTask(tasks[1].id)!!.remoteParent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun unindentingTaskRemovesParent() {
|
||||
add(newTaskContainer())
|
||||
add(newTaskContainer(with(PARENT, tasks[0])))
|
||||
|
||||
adapter.moved(1, 1, 0)
|
||||
|
||||
assertTrue(caldavDao.getTask(tasks[1].id)!!.remoteParent.isNullOrBlank())
|
||||
assertEquals(0, taskDao.fetch(tasks[1].id)!!.parent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun moveSubtaskUpToParent() {
|
||||
add(newTaskContainer())
|
||||
add(newTaskContainer(with(PARENT, tasks[0])))
|
||||
add(newTaskContainer(with(PARENT, tasks[1])))
|
||||
|
||||
adapter.moved(2, 2, 1)
|
||||
|
||||
assertEquals(tasks[0].id, taskDao.fetch(tasks[2].id)!!.parent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun moveSubtaskUpToGrandparent() {
|
||||
add(newTaskContainer())
|
||||
add(newTaskContainer(with(PARENT, tasks[0])))
|
||||
add(newTaskContainer(with(PARENT, tasks[1])))
|
||||
add(newTaskContainer(with(PARENT, tasks[2])))
|
||||
|
||||
adapter.moved(3, 3, 1)
|
||||
|
||||
assertEquals(tasks[0].id, taskDao.fetch(tasks[3].id)!!.parent)
|
||||
}
|
||||
|
||||
private fun add(vararg tasks: TaskContainer) {
|
||||
this.tasks.addAll(tasks)
|
||||
tasks.forEach {
|
||||
val task = it.task
|
||||
taskDao.createNew(task)
|
||||
val caldavTask = CaldavTask(it.id, "calendar")
|
||||
if (task.parent > 0) {
|
||||
caldavTask.remoteParent = caldavDao.getRemoteIdForTask(task.parent)
|
||||
}
|
||||
caldavTask.id = caldavDao.insert(caldavTask)
|
||||
it.caldavTask = caldavTask.toSubset()
|
||||
}
|
||||
}
|
||||
|
||||
private fun CaldavTask.toSubset(): SubsetCaldav {
|
||||
val result = SubsetCaldav()
|
||||
result.cd_id = id
|
||||
result.cd_calendar = calendar
|
||||
result.cd_remote_parent = remoteParent
|
||||
return result
|
||||
}
|
||||
|
||||
override fun inject(component: TestComponent) = component.inject(this)
|
||||
}
|
||||
@ -1,62 +0,0 @@
|
||||
package org.tasks.data;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class SubsetCaldav {
|
||||
public long cd_id;
|
||||
public String cd_calendar;
|
||||
public long cd_parent;
|
||||
public String cd_remote_parent;
|
||||
|
||||
public long getId() {
|
||||
return cd_id;
|
||||
}
|
||||
|
||||
public String getCalendar() {
|
||||
return cd_calendar;
|
||||
}
|
||||
|
||||
public String getRemoteParent() {
|
||||
return cd_remote_parent;
|
||||
}
|
||||
|
||||
public void setRemoteParent(String remoteId) {
|
||||
cd_remote_parent = remoteId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (!(o instanceof SubsetCaldav)) {
|
||||
return false;
|
||||
}
|
||||
SubsetCaldav that = (SubsetCaldav) o;
|
||||
return cd_id == that.cd_id
|
||||
&& cd_parent == that.cd_parent
|
||||
&& Objects.equals(cd_calendar, that.cd_calendar)
|
||||
&& Objects.equals(cd_remote_parent, that.cd_remote_parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(cd_id, cd_calendar, cd_parent, cd_remote_parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SubsetCaldav{"
|
||||
+ "cd_id="
|
||||
+ cd_id
|
||||
+ ", cd_calendar='"
|
||||
+ cd_calendar
|
||||
+ '\''
|
||||
+ ", cd_parent="
|
||||
+ cd_parent
|
||||
+ ", cd_remote_parent='"
|
||||
+ cd_remote_parent
|
||||
+ '\''
|
||||
+ '}';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
package org.tasks.data
|
||||
|
||||
class SubsetCaldav {
|
||||
var cd_id: Long = 0
|
||||
var cd_calendar: String? = null
|
||||
var cd_remote_parent: String? = null
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
if (other !is SubsetCaldav) return false
|
||||
|
||||
if (cd_id != other.cd_id) return false
|
||||
if (cd_calendar != other.cd_calendar) return false
|
||||
if (cd_remote_parent != other.cd_remote_parent) return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
var result = cd_id.hashCode()
|
||||
result = 31 * result + (cd_calendar?.hashCode() ?: 0)
|
||||
result = 31 * result + (cd_remote_parent?.hashCode() ?: 0)
|
||||
return result
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "SubsetCaldav(id=$cd_id, calendar=$cd_calendar, remoteParent=$cd_remote_parent)"
|
||||
}
|
||||
}
|
||||
@ -1,95 +0,0 @@
|
||||
package com.todoroo.astrid.adapter
|
||||
|
||||
import com.natpryce.makeiteasy.MakeItEasy.with
|
||||
import com.todoroo.astrid.dao.TaskDao
|
||||
import org.junit.After
|
||||
import org.junit.Assert.*
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.Mockito.mock
|
||||
import org.mockito.Mockito.verifyNoMoreInteractions
|
||||
import org.tasks.data.CaldavDao
|
||||
import org.tasks.data.TaskContainer
|
||||
import org.tasks.makers.TaskContainerMaker.ID
|
||||
import org.tasks.makers.TaskContainerMaker.PARENT
|
||||
import org.tasks.makers.TaskContainerMaker.newTaskContainer
|
||||
|
||||
class CaldavTaskAdapterTest {
|
||||
|
||||
private lateinit var taskDao: TaskDao
|
||||
private lateinit var caldavDao: CaldavDao
|
||||
private lateinit var adapter: CaldavTaskAdapter
|
||||
private val tasks = ArrayList<TaskContainer>()
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
taskDao = mock(TaskDao::class.java)
|
||||
caldavDao = mock(CaldavDao::class.java)
|
||||
tasks.clear()
|
||||
adapter = CaldavTaskAdapter(taskDao, caldavDao)
|
||||
adapter.setDataSource(object : TaskAdapterDataSource {
|
||||
override fun getItem(position: Int) = tasks[position]
|
||||
|
||||
override val itemCount get() = tasks.size
|
||||
})
|
||||
}
|
||||
|
||||
@After
|
||||
fun teardown() = verifyNoMoreInteractions(taskDao, caldavDao)
|
||||
|
||||
@Test
|
||||
fun canMoveTask() {
|
||||
add(
|
||||
newTaskContainer(),
|
||||
newTaskContainer())
|
||||
|
||||
assertTrue(adapter.canMove(tasks[0], 0, tasks[1], 1))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun cantMoveTaskToChildPosition() {
|
||||
add(newTaskContainer(with(ID, 1L)))
|
||||
add(newTaskContainer(with(PARENT, tasks[0])),
|
||||
newTaskContainer(with(PARENT, tasks[0])))
|
||||
|
||||
assertFalse(adapter.canMove(tasks[0], 0, tasks[1], 1))
|
||||
assertFalse(adapter.canMove(tasks[0], 0, tasks[2], 2))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun canMoveChildAboveParent() {
|
||||
add(newTaskContainer(with(ID, 1L)))
|
||||
add(newTaskContainer(with(PARENT, tasks[0])))
|
||||
|
||||
assertTrue(adapter.canMove(tasks[1], 1, tasks[0], 0))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun canMoveChildBetweenSiblings() {
|
||||
add(newTaskContainer(with(ID, 1L)))
|
||||
add(newTaskContainer(with(PARENT, tasks[0])),
|
||||
newTaskContainer(with(PARENT, tasks[0])))
|
||||
|
||||
assertTrue(adapter.canMove(tasks[1], 1, tasks[2], 2))
|
||||
assertTrue(adapter.canMove(tasks[2], 2, tasks[1], 1))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun maxIndentNoChildren() {
|
||||
add(newTaskContainer(),
|
||||
newTaskContainer())
|
||||
|
||||
assertEquals(1, adapter.maxIndent(0, tasks[1]))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun maxIndentMultiLevelSubtask() {
|
||||
add(newTaskContainer(with(ID, 1L)))
|
||||
add(newTaskContainer(with(PARENT, tasks[0])),
|
||||
newTaskContainer())
|
||||
|
||||
assertEquals(2, adapter.maxIndent(1, tasks[2]))
|
||||
}
|
||||
|
||||
private fun add(vararg tasks: TaskContainer) = this.tasks.addAll(tasks.toList())
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
mock-maker-inline
|
||||
Loading…
Reference in New Issue