Skip to content

Commit

Permalink
#208: adds test to check visibility on startup
Browse files Browse the repository at this point in the history
  • Loading branch information
rladstaetter committed Apr 8, 2024
1 parent f3d6aca commit 89974fc
Show file tree
Hide file tree
Showing 21 changed files with 103 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class SingleFileApplicationTest(val path: Path)
with CanStartApplication
with CanOpenFile {

val services: LogoRRRServices = LogoRRRServices(Settings.Default
final def services: LogoRRRServices = LogoRRRServices(Settings.Default
, new MockHostServices
, new OpenSingleFileService(Option(path))
, isUnderTest = true)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package app.logorrr.usecases.chunkview
package app.logorrr.usecases.blockview

import app.logorrr.TestFiles
import app.logorrr.conf.{LogoRRRGlobals, Settings, StageSettings}
import app.logorrr.conf.LogoRRRGlobals
import app.logorrr.io.FileId
import app.logorrr.services.LogoRRRServices
import app.logorrr.services.fileservices.OpenSingleFileService
import app.logorrr.services.hostservices.MockHostServices
import app.logorrr.usecases.SingleFileApplicationTest
import app.logorrr.views.ops.{DecreaseBlockSizeButton, IncreaseBlockSizeButton}
import app.logorrr.views.search.OpsToolBar
Expand All @@ -16,11 +13,6 @@ import org.junit.jupiter.api.Test
*/
class SimpleBlockSizeTest extends SingleFileApplicationTest(TestFiles.simpleLog0) {

override val services: LogoRRRServices = LogoRRRServices(Settings.Default.copy(stageSettings = StageSettings(100, 100, 1200, 600))
, new MockHostServices
, new OpenSingleFileService(Option(path))
, isUnderTest = true)

@Test def search(): Unit = {
openFile(path)
val fileId = FileId(path)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ class SimpleSearchTest extends SingleFileApplicationTest(TestFiles.simpleLog0) {

private def searchFor(needle: String) = {
clickOn(SearchTextField.uiNode(FileId(path)).ref).write(needle)
clickOn(SearchButton.id(FileId(path)).ref)
clickOn(SearchButton.uiNode(FileId(path)).ref)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package app.logorrr.usecases.startup

import app.logorrr.TestFiles
import app.logorrr.io.FileId
import app.logorrr.usecases.SingleFileApplicationTest
import app.logorrr.views.autoscroll.AutoScrollCheckBox
import app.logorrr.views.ops.{ClearLogButton, CopyLogButton, DecreaseBlockSizeButton, IncreaseBlockSizeButton}
import app.logorrr.views.search.{SearchButton, SearchTextField}
import app.logorrr.views.text.toolbaractions.{DecreaseTextSizeButton, IncreaseTextSizeButton}
import org.junit.jupiter.api.Test
import org.testfx.api.FxAssert
import org.testfx.matcher.base.NodeMatchers

/**
* Tests if all major UI elements are visible with default settings on first startup
*/
class VisibilityOnStartupTest extends SingleFileApplicationTest(TestFiles.simpleLog0) {

@Test def checkIfAllMajorUIElementsAreVisibleWithDefaultSettings(): Unit = {
openFile(path)
val fileId = FileId(path)
//wait until UI is ready

val elements = Seq(
SearchTextField.uiNode(fileId)
, SearchButton.uiNode(fileId)
, DecreaseBlockSizeButton.uiNode(fileId)
, IncreaseBlockSizeButton.uiNode(fileId)
, DecreaseTextSizeButton.uiNode(fileId)
, IncreaseTextSizeButton.uiNode(fileId)
, AutoScrollCheckBox.uiNode(fileId)
, ClearLogButton.uiNode(fileId)
, CopyLogButton.uiNode(fileId)
)

// check all elements
for (uiElement <- elements) {
waitForVisibility(uiElement)
FxAssert.verifyThat(lookup(uiElement.ref), NodeMatchers.isVisible)
}
}


}


Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package app.logorrr.usecases.textview

import app.logorrr.TestFiles
import app.logorrr.conf.{LogoRRRGlobals, Settings, StageSettings}
import app.logorrr.conf.LogoRRRGlobals
import app.logorrr.io.FileId
import app.logorrr.services.LogoRRRServices
import app.logorrr.services.fileservices.OpenSingleFileService
import app.logorrr.services.hostservices.MockHostServices
import app.logorrr.usecases.SingleFileApplicationTest
import app.logorrr.views.search.OpsToolBar
import app.logorrr.views.text.toolbaractions.{DecreaseTextSizeButton, IncreaseTextSizeButton}
Expand All @@ -16,11 +13,6 @@ import org.junit.jupiter.api.Test
*/
class SimpleTextSizeTest extends SingleFileApplicationTest(TestFiles.simpleLog0) {

override val services: LogoRRRServices = LogoRRRServices(Settings.Default.copy(stageSettings = StageSettings(100, 100, 1200, 600))
, new MockHostServices
, new OpenSingleFileService(Option(path))
, isUnderTest = true)

@Test def search(): Unit = {
openFile(path)
val fileId = FileId(path)
Expand Down
12 changes: 8 additions & 4 deletions app/src/main/scala/app/logorrr/conf/StageSettings.scala
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package app.logorrr.conf

import pureconfig.{ConfigReader, ConfigWriter}
import javafx.geometry.Rectangle2D
import pureconfig.generic.semiauto.{deriveReader, deriveWriter}
import pureconfig.{ConfigReader, ConfigWriter}



Expand All @@ -10,13 +11,16 @@ object StageSettings {
implicit val reader: ConfigReader[StageSettings] = deriveReader[StageSettings]
implicit val writer: ConfigWriter[StageSettings] = deriveWriter[StageSettings]

def apply(rectangle2D: Rectangle2D): StageSettings = {
StageSettings(rectangle2D.getMinX, rectangle2D.getMinY, rectangle2D.getWidth.toInt, rectangle2D.getHeight.toInt)
}

}

/**
* @param x upper left x cooordinate for Logorrr
* @param y upper left y cooordinate for Logorrr
* @param width width of stage
* @param x upper left x cooordinate for Logorrr
* @param y upper left y cooordinate for Logorrr
* @param width width of stage
* @param height height of stage
*/
case class StageSettings(x: Double
Expand Down
1 change: 1 addition & 0 deletions app/src/main/scala/app/logorrr/model/HasFileId.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ import app.logorrr.io.FileId
trait HasFileId {

def fileId: FileId

}
12 changes: 11 additions & 1 deletion app/src/main/scala/app/logorrr/views/UiNodes.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
package app.logorrr.views

import app.logorrr.io.FileId
import app.logorrr.util.HashUtil

object UiNode {

def apply(fileId: FileId, clazz: Class[_]): UiNode = {
UiNode(clazz.getSimpleName + "-" + HashUtil.md5Sum(fileId))
}

}

case class UiNode(value: String) {

lazy val ref: String = "#" + value
Expand Down Expand Up @@ -31,5 +42,4 @@ object UiNodes {
val LogFileHeaderTabCloseButton = ".tab-container > .tab-close-button"



}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import javafx.scene.control.{CheckBox, Tooltip}

object AutoScrollCheckBox extends UiNodeAware {

override def uiNode(id: FileId): UiNode = UiNode("autoscrollcheckbox-" + id)
override def uiNode(id: FileId): UiNode = UiNode(id, classOf[AutoScrollCheckBox])

}

class AutoScrollCheckBox(val fileId: FileId) extends CheckBox with HasFileId {
setId(AutoScrollCheckBox.uiNode(fileId).ref)
setId(AutoScrollCheckBox.uiNode(fileId).value)
setTooltip(new Tooltip("autoscroll"))
selectedProperty().bindBidirectional(LogoRRRGlobals.getLogFileSettings(fileId).autoScrollActiveProperty)


}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import app.logorrr.conf.mut.MutLogFileSettings
import app.logorrr.io.FileId
import app.logorrr.model.LogEntry
import app.logorrr.util._
import app.logorrr.views.{LogoRRRAccelerators, UiNode, UiNodeAware}
import app.logorrr.views.autoscroll.LogTailer
import app.logorrr.views.logfiletab.actions._
import app.logorrr.views.search.Fltr
import app.logorrr.views.{LogoRRRAccelerators, UiNode, UiNodeAware}
import javafx.beans.binding.Bindings
import javafx.collections.{ListChangeListener, ObservableList}
import javafx.event.Event
Expand Down Expand Up @@ -52,7 +52,7 @@ object LogFileTab extends UiNodeAware {
, entries)
}

def uiNode(fileId: FileId): UiNode = UiNode("logfiletab-" + HashUtil.md5Sum(fileId))
override def uiNode(id: FileId): UiNode = UiNode(id, classOf[LogFileTab])

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package app.logorrr.views.ops

import app.logorrr.io.FileId
import app.logorrr.model.LogEntry
import app.logorrr.util.HashUtil
import app.logorrr.views.{UiNode, UiNodeAware}
import javafx.collections.ObservableList
import javafx.scene.control.{Button, Tooltip}
Expand All @@ -11,7 +10,7 @@ import org.kordamp.ikonli.javafx.FontIcon

object ClearLogButton extends UiNodeAware {

def uiNode(id: FileId): UiNode = UiNode("clearlogbutton-" + HashUtil.md5Sum(id))
def uiNode(id: FileId): UiNode = UiNode(id, classOf[ClearLogButton])

}

Expand Down
3 changes: 1 addition & 2 deletions app/src/main/scala/app/logorrr/views/ops/CopyLogButton.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package app.logorrr.views.ops

import app.logorrr.io.FileId
import app.logorrr.model.LogEntry
import app.logorrr.util.HashUtil
import app.logorrr.views.{UiNode, UiNodeAware}
import javafx.animation.AnimationTimer
import javafx.collections.ObservableList
Expand All @@ -15,7 +14,7 @@ import scala.collection.mutable.ListBuffer

object CopyLogButton extends UiNodeAware {

def uiNode(id: FileId): UiNode = UiNode("copylogbutton-" + HashUtil.md5Sum(id))
def uiNode(id: FileId): UiNode = UiNode(id, classOf[CopyLogButton])

}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package app.logorrr.views.ops

import app.logorrr.io.FileId
import app.logorrr.util.HashUtil
import app.logorrr.views.block.{BlockConstants, HasBlockSizeProperty}
import app.logorrr.views.search.OpsToolBar
import app.logorrr.views.{UiNode, UiNodeAware}
Expand All @@ -12,7 +11,7 @@ object DecreaseBlockSizeButton extends UiNodeAware {
/** size of icon to decrease block size */
val Size = 8

override def uiNode(id: FileId): UiNode = UiNode("decreaseblocksizebutton-" + HashUtil.md5Sum(id))
override def uiNode(id: FileId): UiNode = UiNode(id, classOf[DecreaseBlockSizeButton])
}

class DecreaseBlockSizeButton(id: FileId, val blockSizeProperty: SimpleIntegerProperty) extends
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package app.logorrr.views.ops

import app.logorrr.io.FileId
import app.logorrr.util.HashUtil
import app.logorrr.views.block.HasBlockSizeProperty
import app.logorrr.views.search.OpsToolBar
import app.logorrr.views.{UiNode, UiNodeAware}
Expand All @@ -13,7 +12,7 @@ object IncreaseBlockSizeButton extends UiNodeAware {
/** size of icon to increase block size */
val Size = 16

override def uiNode(id: FileId): UiNode = UiNode("increaseblocksizebutton-" + HashUtil.md5Sum(id))
override def uiNode(id: FileId): UiNode = UiNode(id, classOf[IncreaseBlockSizeButton])
}

class IncreaseBlockSizeButton(id: FileId, val blockSizeProperty: SimpleIntegerProperty)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package app.logorrr.views.search

import app.logorrr.io.FileId
import app.logorrr.util.{HashUtil, LogoRRRFonts, OsUtil}
import app.logorrr.util.{LogoRRRFonts, OsUtil}
import app.logorrr.views.{UiNode, UiNodeAware}
import javafx.scene.control.{Label, ToggleButton, Tooltip}
import javafx.scene.paint.Color

object SearchActivateRegexToggleButton extends UiNodeAware {

override def uiNode(id: FileId): UiNode = UiNode("searchactivateregextogglebutton-" + HashUtil.md5Sum(id))
override def uiNode(id: FileId): UiNode = UiNode(id, classOf[SearchActivateRegexToggleButton])

}

Expand Down
10 changes: 5 additions & 5 deletions app/src/main/scala/app/logorrr/views/search/SearchButton.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ package app.logorrr.views.search


import app.logorrr.io.FileId
import app.logorrr.util.{ColorUtil, HashUtil}
import app.logorrr.views.UiNode
import app.logorrr.util.ColorUtil
import app.logorrr.views.{UiNode, UiNodeAware}
import javafx.scene.control.{Button, Tooltip}
import org.kordamp.ikonli.fontawesome5.FontAwesomeSolid
import org.kordamp.ikonli.javafx.FontIcon

object SearchButton {
object SearchButton extends UiNodeAware {

def id(id: FileId): UiNode = UiNode("searchbutton-" + HashUtil.md5Sum(id))
override def uiNode(id: FileId): UiNode = UiNode(id, classOf[SearchButton])

}

Expand All @@ -20,7 +20,7 @@ class SearchButton(fileId: FileId
, colorPicker: SearchColorPicker
, addFilterFn: Filter => Unit) extends Button {

setId(SearchButton.id(fileId).value)
setId(SearchButton.uiNode(fileId).value)
setGraphic(new FontIcon(FontAwesomeSolid.SEARCH))
setTooltip(new Tooltip("search"))
setMaxWidth(40)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package app.logorrr.views.search

import app.logorrr.io.FileId
import app.logorrr.util.{ColorUtil, HashUtil}
import app.logorrr.util.ColorUtil
import app.logorrr.views.{UiNode, UiNodeAware}
import javafx.scene.control.{ColorPicker, Tooltip}

object SearchColorPicker extends UiNodeAware {

override def uiNode(id: FileId): UiNode = UiNode("searchcolorpicker-" + HashUtil.md5Sum(id))
override def uiNode(id: FileId): UiNode = UiNode(id, classOf[SearchColorPicker])
}

class SearchColorPicker(id : FileId) extends ColorPicker {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package app.logorrr.views.search

import app.logorrr.io.FileId
import app.logorrr.util.{HashUtil, OsUtil}
import app.logorrr.util.OsUtil
import app.logorrr.views.{UiNode, UiNodeAware}
import javafx.beans.binding.StringBinding
import javafx.scene.control.{TextField, Tooltip}
Expand All @@ -10,7 +10,7 @@ import javafx.scene.control.{TextField, Tooltip}

object SearchTextField extends UiNodeAware {

def uiNode(id: FileId): UiNode = UiNode("searchtextfield-" + HashUtil.md5Sum(id))
override def uiNode(id: FileId): UiNode = UiNode(id, classOf[SearchTextField])

}

Expand Down
10 changes: 9 additions & 1 deletion app/src/main/scala/app/logorrr/views/text/LogTextView.scala
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
package app.logorrr.views.text

import app.logorrr.conf.mut.MutLogFileSettings
import app.logorrr.io.FileId
import app.logorrr.model.LogEntry
import app.logorrr.util.{CanLog, JfxUtils}
import app.logorrr.views.text.contextactions.{IgnoreAboveMenuItem, IgnoreBelowMenuItem}
import app.logorrr.views.{UiNode, UiNodeAware}
import javafx.collections.transformation.FilteredList
import javafx.scene.control._

import scala.jdk.CollectionConverters._

object LogTextView extends UiNodeAware {

override def uiNode(id: FileId): UiNode = UiNode(id, classOf[LogTextView])

}

class LogTextView(mutLogFileSettings: MutLogFileSettings
, filteredList: FilteredList[LogEntry])
extends ListView[LogEntry]
with CanLog {

setId("")
setId(LogTextView.uiNode(mutLogFileSettings.getFileId).value)

def scrollToItem(item: LogEntry): Unit = {
getSelectionModel.select(item)
Expand Down
Loading

0 comments on commit 89974fc

Please sign in to comment.