mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-13 07:06:58 +00:00
156 lines
5.9 KiB
QML
156 lines
5.9 KiB
QML
|
import QtQuick 2.15
|
||
|
import QtTest 1.15
|
||
|
import QtQml 2.15
|
||
|
|
||
|
import AppLayouts.Wallet.views 1.0
|
||
|
|
||
|
import StatusQ 0.1
|
||
|
import StatusQ.Core.Utils 0.1
|
||
|
|
||
|
import utils 1.0
|
||
|
|
||
|
Item {
|
||
|
id: root
|
||
|
|
||
|
Component {
|
||
|
id: testComponent
|
||
|
|
||
|
RecipientView {
|
||
|
id: recipientView
|
||
|
width: 500
|
||
|
|
||
|
model: ListModel {
|
||
|
readonly property var data: [
|
||
|
{
|
||
|
name: "helloworld",
|
||
|
emoji: "😋",
|
||
|
colorId: Constants.walletAccountColors.primary,
|
||
|
color: "#2A4AF5",
|
||
|
address: "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240",
|
||
|
},
|
||
|
{
|
||
|
name: "Hot wallet (generated)",
|
||
|
emoji: "🚗",
|
||
|
colorId: Constants.walletAccountColors.army,
|
||
|
color: "#216266",
|
||
|
address: "0x7F47C2e98a4BBf5487E6fb082eC2D9Ab0E6d8881",
|
||
|
},
|
||
|
{
|
||
|
name: "Family (seed)",
|
||
|
emoji: "🎨",
|
||
|
colorId: Constants.walletAccountColors.magenta,
|
||
|
color: "#EC266C",
|
||
|
address: "0x7F47C2e98a4BBf5487E6fb082eC2D9Ab0E6d8882",
|
||
|
},
|
||
|
]
|
||
|
Component.onCompleted: append(data)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ListModel {
|
||
|
id: emptyModel
|
||
|
}
|
||
|
|
||
|
TestCase {
|
||
|
name: "RecipientView"
|
||
|
|
||
|
SignalSpy {
|
||
|
id: resolveEnsSignalSpy
|
||
|
signalName: "resolveENS"
|
||
|
}
|
||
|
|
||
|
when: windowShown
|
||
|
|
||
|
function test_empty() {
|
||
|
const view = createTemporaryObject(testComponent, root, {model: emptyModel })
|
||
|
verify(view)
|
||
|
|
||
|
compare(view.model.ModelCount.count, 0)
|
||
|
compare(view.searchPattern, "")
|
||
|
compare(view.selectedRecipientAddress, "")
|
||
|
compare(view.item.objectName, "RecipientView_SendRecipientInput")
|
||
|
}
|
||
|
|
||
|
function test_search() {
|
||
|
const view = createTemporaryObject(testComponent, root)
|
||
|
verify(view)
|
||
|
const privateObject = findChild(view, "RecipientView_private")
|
||
|
verify(privateObject)
|
||
|
verify(privateObject.validationTimer)
|
||
|
privateObject.validationTimer.interval = 0 // For testing purposes skipping the validation delay
|
||
|
|
||
|
compare(view.searchPattern, "")
|
||
|
compare(view.selectedRecipientAddress, "")
|
||
|
compare(view.item.objectName, "RecipientView_SendRecipientInput")
|
||
|
|
||
|
view.item.text = "hello"
|
||
|
wait(100)
|
||
|
compare(view.searchPattern, "hello")
|
||
|
compare(view.selectedRecipientAddress, "")
|
||
|
compare(view.item.objectName, "RecipientView_SendRecipientInput")
|
||
|
|
||
|
// Imitate filtering: no results found
|
||
|
view.model = emptyModel
|
||
|
view.item.text = "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0Fd864dd"
|
||
|
wait(100)
|
||
|
compare(view.searchPattern, "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0Fd864dd")
|
||
|
compare(view.selectedRecipientAddress, "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0Fd864dd")
|
||
|
compare(view.item.objectName, "RecipientView_RecipientViewDelegate", "Delegate is changed after selection is done")
|
||
|
}
|
||
|
|
||
|
function test_ens() {
|
||
|
const view = createTemporaryObject(testComponent, root)
|
||
|
verify(view)
|
||
|
const privateObject = findChild(view, "RecipientView_private")
|
||
|
verify(privateObject)
|
||
|
privateObject.validationTimer.interval = 0 // For testing purposes skipping the validation delay
|
||
|
|
||
|
compare(view.searchPattern, "")
|
||
|
compare(view.selectedRecipientAddress, "")
|
||
|
compare(view.item.objectName, "RecipientView_SendRecipientInput")
|
||
|
|
||
|
resolveEnsSignalSpy.target = view
|
||
|
|
||
|
view.item.text = "helloworld.eth"
|
||
|
wait(100)
|
||
|
compare(view.searchPattern, "", "Search pattern is not changed until ENS is resolved or error")
|
||
|
compare(view.selectedRecipientAddress, "")
|
||
|
compare(resolveEnsSignalSpy.count, 1)
|
||
|
compare(resolveEnsSignalSpy.signalArguments[0][0], "helloworld.eth")
|
||
|
|
||
|
const uuid = resolveEnsSignalSpy.signalArguments[0][1]
|
||
|
verify(uuid !== "")
|
||
|
|
||
|
view.ensNameResolved("", "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240", uuid)
|
||
|
compare(view.searchPattern, "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240", "Resolved address is searched if model is not empty")
|
||
|
compare(view.selectedRecipientAddress, "")
|
||
|
|
||
|
view.ensNameResolved("", "", uuid)
|
||
|
compare(view.searchPattern, "helloworld.eth", "ENS is searched if address is not received")
|
||
|
compare(view.selectedRecipientAddress, "")
|
||
|
|
||
|
// Imitate filtering: no results found
|
||
|
view.model = emptyModel
|
||
|
view.ensNameResolved("", "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240", uuid)
|
||
|
compare(view.searchPattern, "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240")
|
||
|
compare(view.selectedRecipientAddress, "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240")
|
||
|
compare(view.item.objectName, "RecipientView_RecipientViewDelegate", "Delegate is changed after selection is done")
|
||
|
}
|
||
|
|
||
|
function test_prefillSelectedRecipientAddress() {
|
||
|
const view = createTemporaryObject(testComponent, root)
|
||
|
verify(view)
|
||
|
|
||
|
compare(view.selectedRecipientAddress, "")
|
||
|
compare(view.item.objectName, "RecipientView_SendRecipientInput")
|
||
|
|
||
|
view.selectedRecipientAddress = "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240"
|
||
|
|
||
|
compare(view.selectedRecipientAddress, "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240")
|
||
|
compare(view.item.objectName, "RecipientView_RecipientViewDelegate")
|
||
|
compare(view.item.address, "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240")
|
||
|
}
|
||
|
}
|
||
|
}
|