Refactored Issues/Projects in to abstract classes with further implementations.
ALl tests passing. Ran into some frustrationg aspects of Groovy
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
public package com.jdbernard.pit
|
||||
package com.jdbernard.pit
|
||||
|
||||
import org.junit.Test
|
||||
import static org.junit.Assert.assertEquals
|
||||
@ -7,7 +7,7 @@ import static com.jdbernard.pit.Category.toCategory
|
||||
|
||||
class CategoryTest {
|
||||
|
||||
@Test testToCategory() {
|
||||
@Test void testToCategory() {
|
||||
|
||||
assertEquals toCategory("BUG"), Category.BUG
|
||||
assertEquals toCategory("FEATURE"), Category.FEATURE
|
||||
@ -16,21 +16,21 @@ class CategoryTest {
|
||||
|
||||
assertEquals toCategory("bug"), Category.BUG
|
||||
assertEquals toCategory("feature"), Category.FEATURE
|
||||
assertEquals toCategory("task"), Category.TASk
|
||||
assertEquals toCategory("task"), Category.TASK
|
||||
assertEquals toCategory("closed"), Category.CLOSED
|
||||
|
||||
assertEquals toCategory("b"), Category.BUG
|
||||
assertEquals toCategory("f"), Category.FEATURE
|
||||
assertEquals toCategory("t"), Category.TASk
|
||||
assertEquals toCategory("t"), Category.TASK
|
||||
assertEquals toCategory("c"), Category.CLOSED
|
||||
|
||||
}
|
||||
|
||||
@Test testGetSymbol() {
|
||||
@Test void testGetSymbol() {
|
||||
|
||||
assertEquals Category.BUG.symbol, "b"
|
||||
assertEquals Category.CLOSED.symbol "c"
|
||||
assertEquals Category.FEATURE.symbol "f"
|
||||
assertEquals Category.TASK.symbol "t"
|
||||
assertEquals Category.CLOSED.symbol, "c"
|
||||
assertEquals Category.FEATURE.symbol, "f"
|
||||
assertEquals Category.TASK.symbol, "t"
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import static org.junit.Assert.assertTrue
|
||||
import static org.junit.Assert.assertFalse
|
||||
import static org.junit.Assert.assertEquals
|
||||
|
||||
class IssueTest {
|
||||
class FileIssueTest {
|
||||
|
||||
def issues
|
||||
File testDir
|
||||
@ -22,7 +22,7 @@ class IssueTest {
|
||||
"Add the killer feature to the killer app.\n" +
|
||||
"=========================================\n\n" +
|
||||
"Make our killer app shine!.")
|
||||
issues << new Issue(issueFile)
|
||||
issues << new FileIssue(issueFile)
|
||||
|
||||
issueFile = new File(testDir, '0002t5.rst')
|
||||
issueFile.write(
|
||||
@ -30,7 +30,7 @@ class IssueTest {
|
||||
"==============\n\n" +
|
||||
"The office is seriously lacking in sugary donuts.\n\n" +
|
||||
"We must rectify this at once!")
|
||||
issues << new Issue(issueFile)
|
||||
issues << new FileIssue(issueFile)
|
||||
}
|
||||
|
||||
@After void deleteIssueFiles() {
|
||||
@ -73,7 +73,7 @@ class IssueTest {
|
||||
|
||||
@Test void testConstruction() {
|
||||
File issueFile = new File(testDir, '0001f1.rst')
|
||||
Issue issue = new Issue(issueFile)
|
||||
Issue issue = new FileIssue(issueFile)
|
||||
|
||||
assertEquals issue.id , "0001"
|
||||
assertEquals issue.category , Category.FEATURE
|
||||
@ -86,20 +86,20 @@ class IssueTest {
|
||||
}
|
||||
|
||||
@Test void testMakeFilename() {
|
||||
assertEquals Issue.makeFilename('0001', Category.BUG, 5) , '0001b5.rst'
|
||||
assertEquals Issue.makeFilename('0010', Category.FEATURE, 1), '0010f1.rst'
|
||||
assertEquals Issue.makeFilename('0002', Category.CLOSED, 3) , '0002c3.rst'
|
||||
assertEquals Issue.makeFilename('0001', Category.BUG, -2) , '0001b0.rst'
|
||||
assertEquals Issue.makeFilename('0001', Category.TASK, 10) , '0001t9.rst'
|
||||
assertEquals Issue.makeFilename('00101', Category.BUG, 5) , '00101b5.rst'
|
||||
assertEquals FileIssue.makeFilename('0001', Category.BUG, 5) , '0001b5.rst'
|
||||
assertEquals FileIssue.makeFilename('0010', Category.FEATURE, 1), '0010f1.rst'
|
||||
assertEquals FileIssue.makeFilename('0002', Category.CLOSED, 3) , '0002c3.rst'
|
||||
assertEquals FileIssue.makeFilename('0001', Category.BUG, -2) , '0001b0.rst'
|
||||
assertEquals FileIssue.makeFilename('0001', Category.TASK, 10) , '0001t9.rst'
|
||||
assertEquals FileIssue.makeFilename('00101', Category.BUG, 5) , '00101b5.rst'
|
||||
|
||||
try {
|
||||
Issue.makeFilename('badid', Category.BUG, 5)
|
||||
FileIssue.makeFilename('badid', Category.BUG, 5)
|
||||
assertTrue 'Issue.makeFilename() succeeded with bad id input.', false
|
||||
} catch (IllegalArgumentException iae) {}
|
||||
|
||||
try {
|
||||
Issue.makeFilename('0002', null, 5)
|
||||
FileIssue.makeFilename('0002', null, 5)
|
||||
assertTrue 'Issue.makeFilename() succeeded given no Category.', false
|
||||
} catch (IllegalArgumentException iae) {}
|
||||
}
|
@ -8,7 +8,7 @@ import static org.junit.Assert.assertFalse
|
||||
import static org.junit.Assert.assertNotNull
|
||||
import static org.junit.Assert.assertTrue
|
||||
|
||||
class ProjectTest {
|
||||
class FileProjectTest {
|
||||
|
||||
File testDir
|
||||
Project rootProj
|
||||
@ -69,7 +69,7 @@ class ProjectTest {
|
||||
subDir = new File(testDir, 'emptyproj')
|
||||
subDir.mkdirs()
|
||||
|
||||
rootProj = new Project(testDir)
|
||||
rootProj = new FileProject(testDir)
|
||||
}
|
||||
|
||||
@After void deleteTestProjects() {
|
||||
@ -80,11 +80,11 @@ class ProjectTest {
|
||||
}
|
||||
|
||||
@Test void testConstruction() {
|
||||
Project proj = new Project(testDir)
|
||||
Project proj = new FileProject(testDir)
|
||||
|
||||
assertEquals proj.name, 'testdir'
|
||||
assertEquals proj.issues.size(), 3
|
||||
assertEquals proj.projects.size(), 1
|
||||
assertEquals proj.projects.size(), 2
|
||||
|
||||
// Issue construction in general is under test in IssueTest
|
||||
// just check that the issues actually exists
|
||||
@ -110,13 +110,14 @@ class ProjectTest {
|
||||
'Zippners are not zippning.'
|
||||
|
||||
assertNotNull proj.projects.emptyproj
|
||||
assertEquals proj.projects.emptyproj.size(), 0
|
||||
assertEquals proj.projects.emptyproj.issues.size(), 0
|
||||
assertEquals proj.projects.emptyproj.projects.size(), 0
|
||||
}
|
||||
|
||||
@Test void testRename() {
|
||||
assert rootProj.name == 'testdir'
|
||||
|
||||
rootProj.rename('renamedTestDir')
|
||||
rootProj.name = 'renamedTestDir'
|
||||
|
||||
assertEquals rootProj.name, 'renamedTestDir'
|
||||
assertTrue new File('renamedTestDir').exists()
|
||||
@ -146,23 +147,4 @@ class ProjectTest {
|
||||
|
||||
}
|
||||
|
||||
/*@Test void testEachIssue() {
|
||||
def expectedList = [rootProj.issues['0001'],
|
||||
rootProj.issues['0002'], rootProj.issues['0003']]
|
||||
|
||||
// sort using default ordering (ids ascending)
|
||||
def actualList = []
|
||||
rootProj.eachIssue { actualList << it }
|
||||
|
||||
assertArrayEquals expectedList, actualList
|
||||
|
||||
// sort using reverse ordering (ids descending)
|
||||
expectedList = expectedList.reverse()
|
||||
actualList = []
|
||||
|
||||
rootProj.eachIssue(
|
||||
new Filter(issueSorter: { -(it.id.toInteger()) }))
|
||||
{ actualList << it }
|
||||
}*/
|
||||
|
||||
}
|
@ -1,11 +1,96 @@
|
||||
package com.jdbernard.pit
|
||||
|
||||
import org.junit.Test
|
||||
import org.junit.Before
|
||||
import org.junit.After
|
||||
|
||||
import static org.junit.Assert.assertTrue
|
||||
import static org.junit.Assert.assertFalse
|
||||
|
||||
class FilterTest {
|
||||
|
||||
@Test void emptyTest() {
|
||||
Project proj
|
||||
|
||||
@Before void setUpIssues() {
|
||||
|
||||
proj = new MockProject('proj1')
|
||||
|
||||
def issue = new Issue( '0000', Category.TASK, 5)
|
||||
proj.issues['0000'] = issue
|
||||
|
||||
issue = new Issue('0001', Category.BUG, 3)
|
||||
proj.issues['0001'] = issue
|
||||
|
||||
issue = new Issue('0002', Category.CLOSED, 9)
|
||||
proj.issues['0002'] = issue
|
||||
|
||||
issue = new Issue('0003', Category.FEATURE, 0)
|
||||
proj.issues['0003'] = issue
|
||||
|
||||
def subProj = new MockProject('subproj1')
|
||||
proj.projects['subproj1'] = subProj
|
||||
|
||||
subProj = new MockProject('subproj2')
|
||||
proj.projects['subproj2'] = subProj
|
||||
|
||||
}
|
||||
|
||||
@Test void testDefaultFilter() {
|
||||
Filter f = new Filter()
|
||||
|
||||
proj.issues.values().each { assertTrue f.accept(it) }
|
||||
proj.projects.values().each { assertTrue f.accept(it) }
|
||||
}
|
||||
|
||||
@Test void testPriorityIssueFilter() {
|
||||
Filter f = new Filter(priority: 9)
|
||||
|
||||
proj.eachIssue { assertTrue f.accept(it) }
|
||||
|
||||
f.priority = 6
|
||||
assertTrue f.accept(proj.issues['0000'])
|
||||
assertTrue f.accept(proj.issues['0001'])
|
||||
assertFalse f.accept(proj.issues['0002'])
|
||||
assertTrue f.accept(proj.issues['0003'])
|
||||
|
||||
f.priority = 5
|
||||
assertTrue f.accept(proj.issues['0000'])
|
||||
assertTrue f.accept(proj.issues['0001'])
|
||||
assertFalse f.accept(proj.issues['0002'])
|
||||
assertTrue f.accept(proj.issues['0003'])
|
||||
|
||||
f.priority = 0
|
||||
assertFalse f.accept(proj.issues['0000'])
|
||||
assertFalse f.accept(proj.issues['0001'])
|
||||
assertFalse f.accept(proj.issues['0002'])
|
||||
assertTrue f.accept(proj.issues['0003'])
|
||||
|
||||
}
|
||||
|
||||
@Test void testCategoryFilter() {
|
||||
Filter f = new Filter(categories:
|
||||
[Category.BUG, Category.FEATURE, Category.TASK])
|
||||
|
||||
assertTrue f.accept(proj.issues['0000'])
|
||||
assertTrue f.accept(proj.issues['0001'])
|
||||
assertFalse f.accept(proj.issues['0002'])
|
||||
assertTrue f.accept(proj.issues['0003'])
|
||||
|
||||
f.categories = [ Category.CLOSED ]
|
||||
assertFalse f.accept(proj.issues['0000'])
|
||||
assertFalse f.accept(proj.issues['0001'])
|
||||
assertTrue f.accept(proj.issues['0002'])
|
||||
assertFalse f.accept(proj.issues['0003'])
|
||||
|
||||
f.categories = [ Category.BUG, Category.FEATURE ]
|
||||
assertFalse f.accept(proj.issues['0000'])
|
||||
assertTrue f.accept(proj.issues['0001'])
|
||||
assertFalse f.accept(proj.issues['0002'])
|
||||
assertTrue f.accept(proj.issues['0003'])
|
||||
|
||||
}
|
||||
|
||||
@Test void testProjectFilter() {
|
||||
|
||||
}
|
||||
|
||||
|
10
libpit/test/com/jdbernard/pit/MockProject.groovy
Normal file
10
libpit/test/com/jdbernard/pit/MockProject.groovy
Normal file
@ -0,0 +1,10 @@
|
||||
package com.jdbernard.pit
|
||||
|
||||
class MockProject extends Project {
|
||||
|
||||
public MockProject(String name) { super(name) }
|
||||
|
||||
public Issue createNewIssue(Map options) {
|
||||
throw new UnsupportedOperationException()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user