Fixed bug in filtering by team. If a team has assigned a project with all subprojects and the project has more than one subproject, only one subproject used to be shown when filtering by team.

This is a trivial fix (two/three lines changed), but other additions are in tests.
This commit is contained in:
Šesták Vít
2017-01-04 17:07:38 +01:00
parent a85a944088
commit 4bd78c3ed9
6 changed files with 173 additions and 7 deletions

View File

@@ -20,7 +20,7 @@ sealed trait Filter{
def descriptionHtml: Html
def descriptionText: String
}
private final case class ProjectFilter(project: ReportInfo) extends Filter{
final case class ProjectFilter(project: ReportInfo) extends Filter{
override def filters: Boolean = true
override def descriptionHtml: Html = views.html.filters.project(project)
override def descriptionText: String = s"project ${friendlyProjectNameString(project)}"
@@ -43,7 +43,7 @@ private final case class ProjectFilter(project: ReportInfo) extends Filter{
}
override def selector = Some(s"project:${project.fullId}")
}
private final case class TeamFilter(team: Team) extends Filter{
final case class TeamFilter(team: Team) extends Filter{
override def filters: Boolean = true
private def splitSuccessesAndFailures[T, U](set: Set[Either[T, U]]) = {
@@ -64,10 +64,10 @@ private final case class TeamFilter(team: Team) extends Filter{
val ProjectName = """^(.*): (.*)$""".r
val failedProjectsFriendlyNames = r.failedProjects.failedProjectsSet.map(_.projectName)
Logger.error("failedProjectsFriendlyNames: "+failedProjectsFriendlyNames)
val rootProjectReports = reportInfoByFriendlyProjectNameMap.map{
val rootProjectReports = reportInfoByFriendlyProjectNameMap.toSeq.map{
case (ProjectName(rootProject, _subproject), v) => (rootProject, v)
case value @ (rootProject, v) => value
}.groupBy(_._1).mapValues(_.values).withDefault(name =>
}.groupBy(_._1).mapValues(_.map(_._2)).withDefault(name =>
if(failedProjectsFriendlyNames contains name) Seq()
else sys.error("Unknown project: "+name)
)

View File

@@ -59,7 +59,7 @@ class ProjectsWithReports (val projects: Projects, val reports: Set[String]) {
private def parseUnfriendlyName(unfriendlyName: String, missingProject: String => String): ReportInfo = {
val (baseName, theRest) = unfriendlyName.span(_ != '/')
val removeLeadingMess = RestMessBeginRegexp.replaceAllIn(_: String, "")
val removeLeadingMess = RestMessBeginRegexp.replaceAllIn(_: String, "").dropWhile(_=='/')
val removeTrailingMess = RestMessEndRegexp.replaceAllIn(_: String, "")
val removeMess = removeLeadingMess andThen removeTrailingMess
val subProjectOption = Some(removeMess(theRest)).filter(_ != "")