2024-05-27 16:55:43 +00:00
|
|
|
import QtQuick 2.15
|
|
|
|
import QtTest 1.15
|
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
import SortFilterProxyModel 0.2
|
|
|
|
|
2024-05-27 16:55:43 +00:00
|
|
|
import StatusQ.Core.Theme 0.1
|
2024-05-29 16:40:22 +00:00
|
|
|
import StatusQ.Core.Utils 0.1 as SQUtils
|
2024-05-27 16:55:43 +00:00
|
|
|
|
|
|
|
import Models 1.0
|
|
|
|
import utils 1.0
|
|
|
|
|
|
|
|
import AppLayouts.Wallet.popups 1.0
|
|
|
|
|
|
|
|
Item {
|
|
|
|
id: root
|
|
|
|
width: 600
|
|
|
|
height: 800
|
|
|
|
|
|
|
|
OnRampProvidersModel{
|
2024-05-29 16:40:22 +00:00
|
|
|
id: _onRampProvidersModel
|
|
|
|
}
|
|
|
|
|
|
|
|
SortFilterProxyModel {
|
|
|
|
id: recurrentOnRampProvidersModel
|
|
|
|
sourceModel: _onRampProvidersModel
|
|
|
|
filters: ValueFilter {
|
|
|
|
roleName: "recurrentSiteUrl"
|
|
|
|
value: ""
|
|
|
|
inverted: true
|
|
|
|
}
|
2024-05-27 16:55:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Component {
|
|
|
|
id: componentUnderTest
|
|
|
|
BuyCryptoModal {
|
2024-05-29 16:40:22 +00:00
|
|
|
onRampProvidersModel: _onRampProvidersModel
|
2024-05-27 16:55:43 +00:00
|
|
|
onClosed: destroy()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
SignalSpy {
|
|
|
|
id: notificationSpy
|
|
|
|
target: Global
|
|
|
|
signalName: "openLinkWithConfirmation"
|
|
|
|
}
|
|
|
|
|
|
|
|
TestCase {
|
|
|
|
name: "BuyCryptoModal"
|
|
|
|
when: windowShown
|
|
|
|
|
|
|
|
property BuyCryptoModal controlUnderTest: null
|
|
|
|
|
|
|
|
function init() {
|
|
|
|
controlUnderTest = createTemporaryObject(componentUnderTest, root)
|
|
|
|
}
|
|
|
|
|
|
|
|
function launchPopup() {
|
|
|
|
verify(!!controlUnderTest)
|
|
|
|
controlUnderTest.open()
|
|
|
|
verify(!!controlUnderTest.opened)
|
|
|
|
}
|
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
function testDelegateItems(providersList, modelToCompareAgainst) {
|
|
|
|
for(let i =0; i< providersList.count; i++) {
|
|
|
|
let delegateUnderTest = providersList.itemAtIndex(i)
|
|
|
|
verify(!!delegateUnderTest)
|
|
|
|
|
|
|
|
compare(delegateUnderTest.title, modelToCompareAgainst.get(i).name)
|
|
|
|
compare(delegateUnderTest.subTitle, modelToCompareAgainst.get(i).description)
|
|
|
|
compare(delegateUnderTest.asset.name, modelToCompareAgainst.get(i).logoUrl)
|
|
|
|
|
|
|
|
const feesText = findChild(delegateUnderTest, "feesText")
|
|
|
|
verify(!!feesText)
|
|
|
|
compare(feesText.text, modelToCompareAgainst.get(i).fees)
|
|
|
|
|
|
|
|
const externalLinkIcon = findChild(delegateUnderTest, "externalLinkIcon")
|
|
|
|
verify(!!externalLinkIcon)
|
|
|
|
compare(externalLinkIcon.icon, "tiny/external")
|
|
|
|
compare(externalLinkIcon.color, Theme.palette.baseColor1)
|
|
|
|
|
|
|
|
// Hover over the item and check hovered state
|
|
|
|
mouseMove(delegateUnderTest, delegateUnderTest.width/2, delegateUnderTest.height/2)
|
|
|
|
verify(delegateUnderTest.sensor.containsMouse)
|
|
|
|
compare(externalLinkIcon.color, Theme.palette.directColor1)
|
|
|
|
verify(delegateUnderTest.color, Theme.palette.baseColor2)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-05-27 16:55:43 +00:00
|
|
|
function test_launchAndCloseModal() {
|
|
|
|
launchPopup()
|
|
|
|
|
|
|
|
// close popup
|
|
|
|
controlUnderTest.close()
|
|
|
|
verify(!controlUnderTest.opened)
|
|
|
|
}
|
|
|
|
|
|
|
|
function test_ModalFooter() {
|
|
|
|
// Launch modal
|
|
|
|
launchPopup()
|
|
|
|
|
|
|
|
// check if footer has Done button and action on button clicked
|
|
|
|
const footer = findChild(controlUnderTest, "footer")
|
|
|
|
verify(!!footer)
|
|
|
|
compare(footer.rightButtons.count, 1)
|
|
|
|
compare(footer.rightButtons.get(0).text, qsTr("Done"))
|
2024-05-29 16:40:22 +00:00
|
|
|
mouseClick(footer.rightButtons.get(0))
|
2024-05-27 16:55:43 +00:00
|
|
|
|
|
|
|
// popup should be closed
|
|
|
|
verify(!controlUnderTest.opened)
|
|
|
|
}
|
|
|
|
|
|
|
|
function test_modalContent() {
|
|
|
|
// Launch modal
|
|
|
|
launchPopup()
|
|
|
|
|
|
|
|
// find tab bar
|
|
|
|
const tabBar = findChild(controlUnderTest, "tabBar")
|
|
|
|
verify(!!tabBar)
|
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
// find providers list
|
|
|
|
const providersList = findChild(controlUnderTest, "providersList")
|
|
|
|
waitForRendering(providersList)
|
|
|
|
verify(!!providersList)
|
|
|
|
|
2024-05-27 16:55:43 +00:00
|
|
|
// should have 2 items
|
|
|
|
compare(tabBar.count, 2)
|
|
|
|
|
|
|
|
// current index set should be to 0
|
|
|
|
compare(tabBar.currentIndex, 0)
|
|
|
|
|
|
|
|
// item 0 should have text "One time"
|
|
|
|
compare(tabBar.itemAt(0).text, qsTr("One time"))
|
|
|
|
|
|
|
|
// item 1 should have text "Recurrent"
|
|
|
|
compare(tabBar.itemAt(1).text, qsTr("Recurrent"))
|
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
// close popup
|
|
|
|
controlUnderTest.close()
|
|
|
|
verify(!controlUnderTest.opened)
|
|
|
|
}
|
|
|
|
|
|
|
|
function test_modalContent_OneTime_tab() {
|
|
|
|
// Launch modal
|
|
|
|
launchPopup()
|
2024-05-27 16:55:43 +00:00
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
// find tab bar
|
|
|
|
const tabBar = findChild(controlUnderTest, "tabBar")
|
|
|
|
verify(!!tabBar)
|
|
|
|
|
|
|
|
// find providers list
|
2024-05-27 16:55:43 +00:00
|
|
|
const providersList = findChild(controlUnderTest, "providersList")
|
|
|
|
waitForRendering(providersList)
|
|
|
|
verify(!!providersList)
|
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
mouseClick(tabBar.itemAt(0))
|
2024-05-27 16:55:43 +00:00
|
|
|
compare(tabBar.currentIndex, 0)
|
|
|
|
|
|
|
|
// verify that 3 items are listed
|
|
|
|
compare(providersList.count, 3)
|
|
|
|
|
|
|
|
// check if delegate contents are as expected
|
2024-05-29 16:40:22 +00:00
|
|
|
testDelegateItems(providersList, _onRampProvidersModel)
|
2024-05-27 16:55:43 +00:00
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
let delegateUnderTest = providersList.itemAtIndex(0)
|
|
|
|
verify(!!delegateUnderTest)
|
2024-05-27 16:55:43 +00:00
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
// test mouse click
|
|
|
|
tryCompare(notificationSpy, "count", 0)
|
|
|
|
mouseClick(delegateUnderTest)
|
|
|
|
tryCompare(notificationSpy, "count", 1)
|
|
|
|
compare(notificationSpy.signalArguments[0][0], _onRampProvidersModel.get(0).siteUrl)
|
|
|
|
compare(notificationSpy.signalArguments[0][1], _onRampProvidersModel.get(0).hostname)
|
|
|
|
notificationSpy.clear()
|
2024-05-27 16:55:43 +00:00
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
// popup should be closed
|
|
|
|
verify(!controlUnderTest.opened)
|
|
|
|
}
|
2024-05-27 16:55:43 +00:00
|
|
|
|
2024-05-29 16:40:22 +00:00
|
|
|
function test_modalContent_recurrent_tab() {
|
|
|
|
// Launch modal
|
|
|
|
launchPopup()
|
|
|
|
|
|
|
|
// find tab bar
|
|
|
|
const tabBar = findChild(controlUnderTest, "tabBar")
|
|
|
|
verify(!!tabBar)
|
|
|
|
|
|
|
|
// find providers list
|
|
|
|
const providersList = findChild(controlUnderTest, "providersList")
|
|
|
|
waitForRendering(providersList)
|
|
|
|
verify(!!providersList)
|
|
|
|
|
|
|
|
|
|
|
|
// check data in "Recurrent" tab --------------------------------------------------------
|
|
|
|
mouseClick(tabBar.itemAt(1))
|
|
|
|
compare(tabBar.currentIndex, 1)
|
|
|
|
waitForRendering(providersList)
|
|
|
|
verify(!!providersList)
|
|
|
|
|
|
|
|
// verify that 1 item is listed
|
|
|
|
compare(providersList.count, 1)
|
|
|
|
|
|
|
|
// check if delegate contents are as expected
|
|
|
|
testDelegateItems(providersList, recurrentOnRampProvidersModel)
|
|
|
|
|
|
|
|
let delegateUnderTest = providersList.itemAtIndex(0)
|
|
|
|
verify(!!delegateUnderTest)
|
2024-05-27 16:55:43 +00:00
|
|
|
|
|
|
|
// test mouse click
|
|
|
|
tryCompare(notificationSpy, "count", 0)
|
2024-05-29 16:40:22 +00:00
|
|
|
verify(controlUnderTest.opened)
|
|
|
|
mouseClick(delegateUnderTest)
|
2024-05-27 16:55:43 +00:00
|
|
|
tryCompare(notificationSpy, "count", 1)
|
2024-05-29 16:40:22 +00:00
|
|
|
compare(notificationSpy.signalArguments[0][0], recurrentOnRampProvidersModel.get(0).recurrentSiteUrl)
|
|
|
|
compare(notificationSpy.signalArguments[0][1], recurrentOnRampProvidersModel.get(0).hostname)
|
|
|
|
notificationSpy.clear()
|
|
|
|
|
|
|
|
// popup should be closed
|
|
|
|
verify(!controlUnderTest.opened)
|
2024-05-27 16:55:43 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|