/src/test/downloader/KanbanDataBuilderTest.scala

https://github.com/garethdevans/RallyKanbanData · Scala · 104 lines · 94 code · 10 blank · 0 comment · 12 complexity · 84e89bacac42f65649971034cd9861c0 MD5 · raw file

  1. package downloader
  2. import org.scalatest.FlatSpec
  3. import org.scalatest.matchers.ShouldMatchers
  4. import scala.xml._
  5. import java.util.Date
  6. class KanbanDataBuilderTest extends FlatSpec with ShouldMatchers{
  7. "build" should "call filter once" in {
  8. var fakeKanbanStateMatcher = new FakeKanbanStateMatcher
  9. var kanbanDataBuilder = new KanbanDataBuilder(new FakeRepository, fakeKanbanStateMatcher, new FakeRevisionParser, new FakeDateParser)
  10. var kanbanStates = kanbanDataBuilder.build(new Project("name", "uri", List(), "username", "password"), "revisionHistoryUri")
  11. fakeKanbanStateMatcher.matchCounter should equal (1)
  12. }
  13. "build" should "add only Descriptions containing KANBANSTATE, SCHEDULE STATE and READY changes" in {
  14. var fakeKanbanStateMatcher = new FakeKanbanStateMatcher
  15. var fakeRevisionParser = new FakeRevisionParser
  16. var kanbanDataBuilder = new KanbanDataBuilder(new FakeRepository, fakeKanbanStateMatcher, fakeRevisionParser, new FakeDateParser)
  17. var kanbanStates = kanbanDataBuilder.build(new Project("name", "uri", List(), "username", "password"), "revisionHistoryUri")
  18. kanbanStates.length should be (4)
  19. kanbanStates.count(k => k.state == "KANBANSTATE changed from [Dev (Stories)] to [Release Ready]" && k.date.getTime() == 12345 ) should be (1)
  20. kanbanStates.count(k => k.state == "NAME changed from [Bill] to [Bob], KANBANSTATE changed from [Dev (Stories)] to [Test (Stories)]" && k.date.getTime() == 12345 ) should be (1)
  21. kanbanStates.count(k => k.state == "READY changed from [false] to [true]" && k.date.getTime() == 12345 ) should be (1)
  22. kanbanStates.count(k => k.state == "SCHEDULE STATE changed from [In-Progress] to [Completed], TASK REMAINING TOTAL changed from [1.0] to [0.0]" && k.date.getTime() == 12345 ) should be (1)
  23. fakeRevisionParser.parseCounter should be (4)
  24. }
  25. private class FakeKanbanStateMatcher extends KanbanStateMatcher{
  26. var matchCounter = 0
  27. override def matchStates(nameStates:List[String], kanbanStates:List[KanbanData]):List[KanbanData] = {matchCounter = matchCounter + 1; kanbanStates}
  28. }
  29. private class FakeRevisionParser extends RevisionParser{
  30. var parseCounter = 0
  31. override def parse(revision:String):String = { parseCounter = parseCounter + 1; revision}
  32. }
  33. private class FakeDateParser extends DateParser{
  34. override def parse(creationDate:String):Date = { new Date(12345) }
  35. }
  36. private class FakeRepository extends Repository{
  37. def getRevisionHistoryXml:Elem = {
  38. <RevisionHistory rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/revisionhistory/3784705057" objectVersion="1" CreatedAt="Jul 6">
  39. <CreationDate>2011-07-06T05:04:20.146Z</CreationDate>
  40. <ObjectID>3784705057</ObjectID>
  41. <Subscription rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/subscription/2712985125" refObjectName="BNZ" type="Subscription"/>
  42. <Workspace rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/workspace/3684486830" refObjectName="Customer Experience" type="Workspace"/>
  43. <Revisions>
  44. <Revision rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/revision/4342105532" objectVersion="1" CreatedAt="Sep 19" type="Revision">
  45. <CreationDate>2011-09-22T23:51:42.198Z</CreationDate>
  46. <ObjectID>4342105532</ObjectID>
  47. <Subscription rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/subscription/2712985125" refObjectName="BNZ" type="Subscription"/>
  48. <Workspace rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/workspace/3684486830" refObjectName="Customer Experience" type="Workspace"/>
  49. <Description>KANBANSTATE changed from [Dev (Stories)] to [Release Ready]</Description>
  50. <RevisionNumber>56</RevisionNumber>
  51. <User rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/user/3684508294" refObjectName="David A King" type="User"/>
  52. </Revision>
  53. <Revision rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/revision/4342105532" objectVersion="1" CreatedAt="Sep 19" type="Revision">
  54. <CreationDate>2011-09-18T23:51:42.198Z</CreationDate>
  55. <ObjectID>4342105532</ObjectID>
  56. <Subscription rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/subscription/2712985125" refObjectName="BNZ" type="Subscription"/>
  57. <Workspace rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/workspace/3684486830" refObjectName="Customer Experience" type="Workspace"/>
  58. <Description>NAME changed from [Bill] to [Bob], KANBANSTATE changed from [Dev (Stories)] to [Test (Stories)]</Description>
  59. <RevisionNumber>56</RevisionNumber>
  60. <User rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/user/3684508294" refObjectName="David A King" type="User"/>
  61. </Revision>
  62. <Revision rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/revision/4342105491" objectVersion="1" CreatedAt="Sep 19" type="Revision">
  63. <CreationDate>2011-09-18T23:51:35.724Z</CreationDate>
  64. <ObjectID>4342105491</ObjectID>
  65. <Subscription rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/subscription/2712985125" refObjectName="BNZ" type="Subscription"/>
  66. <Workspace rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/workspace/3684486830" refObjectName="Customer Experience" type="Workspace"/>
  67. <Description>READY changed from [false] to [true]</Description>
  68. <RevisionNumber>55</RevisionNumber>
  69. <User rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/user/3684508294" refObjectName="David A King" type="User"/>
  70. </Revision>
  71. <Revision rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/revision/4342105491" objectVersion="1" CreatedAt="Sep 19" type="Revision">
  72. <CreationDate>2011-09-18T23:51:35.724Z</CreationDate>
  73. <ObjectID>4342105491</ObjectID>
  74. <Subscription rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/subscription/2712985125" refObjectName="BNZ" type="Subscription"/>
  75. <Workspace rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/workspace/3684486830" refObjectName="Customer Experience" type="Workspace"/>
  76. <Description>SCHEDULE STATE changed from [In-Progress] to [Completed], TASK REMAINING TOTAL changed from [1.0] to [0.0]</Description>
  77. <RevisionNumber>55</RevisionNumber>
  78. <User rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/user/3684508294" refObjectName="David A King" type="User"/>
  79. </Revision>
  80. <Revision rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/revision/4342105491" objectVersion="1" CreatedAt="Sep 19" type="Revision">
  81. <CreationDate>2011-09-15T23:51:35.724Z</CreationDate>
  82. <ObjectID>4342105491</ObjectID>
  83. <Subscription rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/subscription/2712985125" refObjectName="BNZ" type="Subscription"/>
  84. <Workspace rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/workspace/3684486830" refObjectName="Customer Experience" type="Workspace"/>
  85. <Description>READY changed from [true] to [false], NAME changed from [Import Savings Activation as XML] to [Import Savings Activation]</Description>
  86. <RevisionNumber>55</RevisionNumber>
  87. <User rallyAPIMajor="1" rallyAPIMinor="27" ref="https://rally1.rallydev.com/slm/webservice/1.27/user/3684508294" refObjectName="David A King" type="User"/>
  88. </Revision>
  89. </Revisions>
  90. </RevisionHistory>
  91. }
  92. override def getXml(project:Project, resource:String) = getRevisionHistoryXml
  93. }
  94. }