Add CaldavTaskAdapterTest

pull/996/head
Alex Baker 6 years ago
parent cbd9af20ea
commit d9ac3aeeb9

@ -0,0 +1,30 @@
package org.tasks.makers
import com.natpryce.makeiteasy.Instantiator
import com.natpryce.makeiteasy.MakeItEasy.with
import com.natpryce.makeiteasy.Property
import com.natpryce.makeiteasy.Property.newProperty
import com.natpryce.makeiteasy.PropertyLookup
import com.natpryce.makeiteasy.PropertyValue
import org.tasks.data.TaskContainer
import org.tasks.makers.Maker.make
import org.tasks.makers.TaskMaker.newTask
object TaskContainerMaker {
val ID: Property<TaskContainer, Long> = newProperty()
val PARENT: Property<TaskContainer, TaskContainer?> = newProperty()
private val instantiator = Instantiator { lookup: PropertyLookup<TaskContainer> ->
val container = TaskContainer()
val parent = lookup.valueOf(PARENT, null as TaskContainer?)
container.task = newTask(
with(TaskMaker.ID, lookup.valueOf(ID, 1L)),
with(TaskMaker.PARENT, parent?.id ?: 0L))
container.indent = parent?.indent?.plus(1) ?: 0
container
}
fun newTaskContainer(vararg properties: PropertyValue<in TaskContainer?, *>): TaskContainer {
return make(instantiator, *properties)
}
}

@ -0,0 +1,95 @@
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())
}
Loading…
Cancel
Save