Recent tests: changed tests order - passed tests is added only if it is suite; first comes failed test group, last comes passed test group

This commit is contained in:
Yaroslav Lepenkin
2015-11-05 18:47:14 +03:00
parent c645bfa0cf
commit 33df057719
5 changed files with 153 additions and 45 deletions
+1
View File
@@ -49,5 +49,6 @@
<orderEntry type="module" module-name="jetgroovy" scope="TEST" />
<orderEntry type="module" module-name="lang-tests" scope="TEST" />
<orderEntry type="library" scope="TEST" name="mockito" level="project" />
<orderEntry type="library" scope="TEST" name="assertJ" level="project" />
</component>
</module>
@@ -16,54 +16,94 @@
package com.intellij.testIntergration
import com.intellij.execution.TestStateStorage
import com.intellij.testFramework.UsefulTestCase.*
import com.intellij.execution.testframework.JavaTestLocator
import com.intellij.execution.testframework.sm.runner.states.TestStateInfo
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.testIntegration.RecentTestRunner
import com.intellij.testIntegration.SelectTestStep
import org.assertj.core.api.Assertions.assertThat
import org.junit.Test
import org.mockito.Matchers
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock
import java.util.*
class RecentTestsStepTest {
val runner = mock(RecentTestRunner::class.java)
val runner = createRunner()
val passed = TestStateStorage.Record(TestStateInfo.Magnitude.PASSED_INDEX.value, Date())
val failed = TestStateStorage.Record(TestStateInfo.Magnitude.FAILED_INDEX.value, Date())
@Test
fun `suites comes before their children tests`() {
fun `when suite passed - show only suite`() {
val map: MutableMap<String, TestStateStorage.Record> = hashMapOf()
val now = Date()
map.put("java:suite://JavaFormatterSuperDuperTest", TestStateStorage.Record(1, now))
map.put("java:test://Test.textXXX", TestStateStorage.Record(1, now))
map.put("java:suite://Test", TestStateStorage.Record(1, now))
map.put("java:test://Test.textYYY", TestStateStorage.Record(1, now))
map.put("java:test://Test.textZZZ", TestStateStorage.Record(1, now))
map.put("java:test://JavaFormatterSuperDuperTest.testItMakesMeSadToFixIt", TestStateStorage.Record(1, now))
map.put("java:test://Test.textQQQ", TestStateStorage.Record(1, now))
map.put("java:test://JavaFormatterSuperDuperTest.testUnconditionalAlignmentErrorneous", TestStateStorage.Record(1, now))
map.put("java:suite://JavaFormatterSuperDuperTest", passed)
map.put("java:test://Test.textXXX", passed)
map.put("java:suite://Test", passed)
map.put("java:test://Test.textYYY", passed)
map.put("java:test://Test.textZZZ", passed)
map.put("java:test://JavaFormatterSuperDuperTest.testItMakesMeSadToFixIt", passed)
map.put("java:test://Test.textQQQ", passed)
map.put("java:test://JavaFormatterSuperDuperTest.testUnconditionalAlignmentErrorneous", passed)
val step = SelectTestStep(map, runner)
val expected = listOf(
"java:suite://JavaFormatterSuperDuperTest",
"java:test://JavaFormatterSuperDuperTest.testItMakesMeSadToFixIt",
"java:test://JavaFormatterSuperDuperTest.testUnconditionalAlignmentErrorneous",
"java:suite://Test",
"java:test://Test.textQQQ",
"java:test://Test.textXXX",
"java:test://Test.textYYY",
"java:test://Test.textZZZ"
"java:suite://Test"
)
assertContainsOrdered(step.values, expected)
assertSize(8, step.values)
assertThat(step.values).isEqualTo(expected)
}
@Test
fun `show failed first`() {
val map: MutableMap<String, TestStateStorage.Record> = hashMapOf()
map.put("java:suite://JavaFormatterSuperDuperTest", failed)
map.put("java:test://Test.textXXX", passed)
map.put("java:suite://Test", passed)
map.put("java:suite://JavaFormatterFailed", failed)
map.put("java:test://JavaFormatterFailed.fail", failed)
map.put("java:test://Test.textYYY", passed)
map.put("java:test://Test.textZZZ", passed)
map.put("java:test://JavaFormatterSuperDuperTest.testFail", failed)
map.put("java:test://Test.textQQQ", passed)
map.put("java:test://JavaFormatterSuperDuperTest.testUnconditionalAlignmentErrorneous", passed)
val step = SelectTestStep(map, runner)
val expected = listOf(
"java:suite://JavaFormatterFailed",
"java:test://JavaFormatterFailed.fail",
"java:suite://JavaFormatterSuperDuperTest",
"java:test://JavaFormatterSuperDuperTest.testFail",
"java:suite://Test"
)
assertThat(step.values).isEqualTo(expected)
}
private fun createRunner(): RecentTestRunner {
val runner = mock(RecentTestRunner::class.java)
`when`(runner.isSuite(Matchers.anyString())).thenAnswer {
val url = it.arguments[0] as String
val protocol = VirtualFileManager.extractProtocol(url)
JavaTestLocator.SUITE_PROTOCOL.startsWith(protocol.toString())
}
return runner
}
@Test
fun `shown value without protocol`() {
val step = SelectTestStep(emptyMap(), runner)
var shownValue = step.getTextFor("java:suite://JavaFormatterSuperDuperTest")
assertEquals(shownValue, "JavaFormatterSuperDuperTest")
assertThat(shownValue).isEqualTo("JavaFormatterSuperDuperTest")
shownValue = step.getTextFor("java:test://JavaFormatterSuperDuperTest.testItMakesMeSadToFixIt")
assertEquals(shownValue, "JavaFormatterSuperDuperTest.testItMakesMeSadToFixIt")
assertThat(shownValue).isEqualTo("JavaFormatterSuperDuperTest.testItMakesMeSadToFixIt")
}
}