Skip to content

Commit

Permalink
ISSUE-405: add 1 unit test and create SupportedViews.kt to easily add…
Browse files Browse the repository at this point in the history
…ing new supported views
  • Loading branch information
OvsyannikovMaksim committed Jan 15, 2024
1 parent 709d2c3 commit a14796b
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.kaspresso.components.pageobjectcodegen

import com.kaspresso.components.pageobjectcodegen.SupportedViews.collectableElements
import com.kaspresso.components.pageobjectcodegen.SupportedViews.elementsWithChild
import org.w3c.dom.Node
import java.io.File
import java.nio.charset.Charset
Expand Down Expand Up @@ -129,6 +131,3 @@ fun Generator.writeToFile(filePath: String) {
printWriter.close()
}
}

val collectableElements = listOf("android.widget.Button", "android.widget.TextView", "android.widget.ImageView")
val elementsWithChild = listOf("androidx.recyclerview.widget.RecyclerView")
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.kaspresso.components.pageobjectcodegen

object SupportedViews {
val collectableElements = listOf("android.widget.Button", "android.widget.TextView", "android.widget.ImageView")
val elementsWithChild = listOf("androidx.recyclerview.widget.RecyclerView")
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.kaspresso.components.pageobjectcodegen

import com.google.common.io.Resources.getResource
import org.assertj.core.api.Assertions.assertThat
import org.junit.Test
import org.junit.runner.RunWith
Expand All @@ -18,21 +17,22 @@ class CodeGenTest(

@Test
fun checkCodeGen() {
val jarFile = File(getResource("createKtfromDump.jar").toURI())
val inputFile = File(getResource(inputPath).toURI())
val jarFile = File("src/main/java/com/kaspresso/components/pageobjectcodegen/createKtfromDump.jar")
val inputFile = File("src/test/resources/$inputPath")
Runtime.getRuntime().exec("java -jar $jarFile $inputFile $className $outputDirectory")
Thread.sleep(15000)
val actualFile = File("$outputDirectory/$className.kt")
val expectedFile = File(getResource("$resultFile.txt").toURI())
assertThat(actualFile).hasSameContentAs(expectedFile)
val expectedFile1 = File("src/test/resources/$resultFile.txt")
assertThat(actualFile).hasSameContentAs(expectedFile1)
}
companion object {
@JvmStatic
@Parameterized.Parameters
fun data(): Collection<Array<Any>> {
return listOf(
arrayOf("source1.xml", "build/generated/res/com/kaspresso/components/pageobjectcodegen", "TestClass1", "Result1"),
arrayOf("source_recycler_view.xml", "build/generated/res/com/kaspresso/components/pageobjectcodegen", "TestClass2", "ResultRecyclerView"),
arrayOf("source_recycler_view.xml", "build/generated/res/com/kaspresso/components/pageobjectcodegen", "RecyclerView", "ResultRecyclerView"),
arrayOf("source2.xml", "build/generated/res/com/kaspresso/components/pageobjectcodegen", "TestClass2", "Result2"),
)
}
}
Expand Down
28 changes: 28 additions & 0 deletions page-object-code-gen/src/test/resources/Result2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.kaspresso.components.pageobjectcodegen

import com.kms.free.R
import com.screen.common.KScreen
import io.guthub.kakaocup.kakao.image.KImageView
import io.guthub.kakaocup.kakao.text.KButton
import io.guthub.kakaocup.kakao.text.KTextView

object TestClass2 : KScreen<TestClass2>() {

override val layoutId: Int? = TODO("Need To Implement")
override val viewClass: Class<*>? = TODO("Need To Implement")

val profileLabel = KTextView { withId(R.id.profile_label) }
val accountInfoHeaderText = KTextView { withId(R.id.account_info_header_text) }
val accountInfoDescription = KTextView { withId(R.id.account_info_description) }
val signInButton = KButton { withId(R.id.sign_in_button) }
val licenseIcon = KImageView { withId(R.id.license_icon) }
val licenseHeaderText = KTextView { withId(R.id.license_header_text) }
val promoFirstHeader = KTextView { withId(R.id.promo_first_header) }
val promoSecondHeader = KTextView { withId(R.id.promo_second_header) }
val promoIcon = KImageView { withId(R.id.promo_icon) }
val enterPromo = KButton { withId(R.id.enter_promo) }

override fun BaseTestContext.waitForScreen() {
TODO("Need To Implement")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import io.guthub.kakaocup.kakao.recycler.KRecyclerView
import io.guthub.kakaocup.kakao.text.KButton
import io.guthub.kakaocup.kakao.text.KTextView

object TestClass2 : KScreen<TestClass2>() {
object RecyclerView : KScreen<RecyclerView>() {

override val layoutId: Int? = TODO("Need To Implement")
override val viewClass: Class<*>? = TODO("Need To Implement")
Expand Down
50 changes: 50 additions & 0 deletions page-object-code-gen/src/test/resources/source2.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<hierarchy rotation="0">
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2103]">
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2103]">
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2103]">
<node index="0" text="" resource-id="com.kms.free:id/action_bar_root" class="android.widget.LinearLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2103]">
<node index="0" text="" resource-id="android:id/content" class="android.widget.FrameLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2103]">
<node index="0" text="" resource-id="com.kms.free:id/main_screen_fragment" class="android.widget.FrameLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2103]">
<node index="0" text="" resource-id="com.kms.free:id/content_container" class="androidx.drawerlayout.widget.DrawerLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2103]">
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2103]">
<node index="0" text="" resource-id="com.kms.free:id/tab_screen_root" class="android.widget.FrameLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2067]">
<node index="0" text="" resource-id="com.kms.free:id/profile_root_view" class="android.widget.FrameLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2067]">
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2067]">
<node index="0" text="" resource-id="com.kms.free:id/scroll_container" class="android.widget.ScrollView" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" scrollable="true" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2067]">
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,2067]">
<node index="0" text="Profile" resource-id="com.kms.free:id/profile_label" class="android.widget.TextView" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[63,175][1017,290]" />
<node index="1" text="" resource-id="com.kms.free:id/account_info" class="android.widget.FrameLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[63,353][1017,912]">
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[63,353][1017,912]">
<node index="0" text="Sign In to My Kaspersky" resource-id="com.kms.free:id/account_info_header_text" class="android.widget.TextView" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[126,416][954,505]" />
<node index="1" text="And use Where Is My Device and Weak Settings Scan features. Also, check one account for data leaks for free." resource-id="com.kms.free:id/account_info_description" class="android.widget.TextView" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[126,526][954,690]" />
<node index="2" text="Sign in" resource-id="com.kms.free:id/sign_in_button" class="android.widget.Button" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[126,753][331,849]" /></node>
</node>
<node index="2" text="" resource-id="com.kms.free:id/kisa_license_info" class="android.widget.FrameLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[63,944][1017,2067]">
<node index="0" text="" resource-id="com.kms.free:id/license_details_with_promo_root" class="android.view.ViewGroup" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[63,944][1017,2067]">
<node index="0" text="" resource-id="com.kms.free:id/license_icon" class="android.widget.ImageView" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[126,1007][294,1175]" />
<node index="1" text="Kaspersky Free" resource-id="com.kms.free:id/license_header_text" class="android.widget.TextView" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[126,1217][954,1306]" />
<node index="2" text="" resource-id="com.kms.free:id/promo_separator" class="android.view.View" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[63,1390][1017,1393]" />
<node index="3" text="" resource-id="com.kms.free:id/promo_card" class="android.widget.FrameLayout" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[63,1456][1017,2049]">
<node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[63,1456][1017,2049]">
<node index="0" text="AVAILABLE IN STANDARD" resource-id="com.kms.free:id/promo_first_header" class="android.widget.TextView" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[126,1519][741,1566]" />
<node index="1" text="Boost your security with the Automatic Anti-Virus" resource-id="com.kms.free:id/promo_second_header" class="android.widget.TextView" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[126,1587][741,1827]" />
<node index="2" text="" resource-id="com.kms.free:id/promo_icon" class="android.widget.ImageView" package="com.kms.free" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[783,1519][954,1690]" />
<node index="3" text="Let's go" resource-id="com.kms.free:id/enter_promo" class="android.widget.Button" package="com.kms.free" content-desc="" checkable="false" checked="false" /></node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</hierarchy>

0 comments on commit a14796b

Please sign in to comment.