status-desktop/storybook/qmlTests/tests/tst_RecipientSelectorPanel.qml

202 lines
6.5 KiB
QML

import QtQuick 2.15
import QtTest 1.15
import shared.popups.send.panels 1.0
import utils 1.0
import Models 1.0
Item {
id: root
width: 600
height: 400
ListModel {
id: savedAddModel
Component.onCompleted: {
const data = []
for (let i = 0; i < 10; i++)
data.push({
name: "some saved addr name " + i,
ens: [],
address: "0x2B748A02e06B159C7C3E98F5064577B96E55A7b4",
})
append(data)
}
}
ListModel {
id: walletAccountsModel
readonly property var data: [
{
name: "helloworld",
emoji: "😋",
colorId: Constants.walletAccountColors.primary,
color: "#2A4AF5",
address: "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240",
walletType: "",
currencyBalance: ({amount: 1.25,
symbol: "USD",
displayDecimals: 2,
stripTrailingZeroes: false}),
migratedToKeycard: true
},
{
name: "Hot wallet (generated)",
emoji: "🚗",
colorId: Constants.walletAccountColors.army,
color: "#216266",
address: "0x7F47C2e98a4BBf5487E6fb082eC2D9Ab0E6d8881",
walletType: Constants.generatedWalletType,
currencyBalance: ({amount: 10,
symbol: "USD",
displayDecimals: 2,
stripTrailingZeroes: false}),
migratedToKeycard: false
},
{
name: "Family (seed)",
emoji: "🎨",
colorId: Constants.walletAccountColors.magenta,
color: "#EC266C",
address: "0x7F47C2e98a4BBf5487E6fb082eC2D9Ab0E6d8882",
walletType: Constants.seedWalletType,
currencyBalance: ({amount: 110.05,
symbol: "USD",
displayDecimals: 2,
stripTrailingZeroes: false}),
migratedToKeycard: false
},
{
name: "Fab (key)",
emoji: "🔑",
colorId: Constants.walletAccountColors.camel,
color: "#C78F67",
address: "0x7F47C2e98a4BBf5487E6fb082eC2D9Ab0E6d8884",
walletType: Constants.keyWalletType,
currencyBalance: ({amount: 999,
symbol: "USD",
displayDecimals: 2,
stripTrailingZeroes: false}),
migratedToKeycard: false
}
]
Component.onCompleted: append(data)
}
ListModel {
id: recentsModel
readonly property var data: [
{
activityEntry:
{
sender: "0x10bbfe4072ebb77e53aa9117c7300531d151feaf",
recipient: "0x10bbfe4072ebb77e53aa9117c7300531d151ffff",
timestamp: "1715274859",
txType: 0,
amountCurrency: {
objectName: "",
amount: 1,
symbol:"",
displayDecimals: 0,
stripTrailingZeroes: true
}
}
},
{
activityEntry:
{
sender: "0x1bbbfe4072ebb77e53aa9117c7300531d151feaf",
recipient: "0xebfbfe4072ebb77e53aa9117c7300531d1511111",
timestamp: "1709832115",
txType: 1,
amountCurrency: {
objectName: "",
amount: 1,
symbol:"",
displayDecimals: 0,
stripTrailingZeroes: true
}
}
}
]
Component.onCompleted: append(data)
}
Component {
id: componentUnderTest
RecipientSelectorPanel {
anchors.fill: parent
savedAddressesModel: savedAddModel
myAccountsModel: walletAccountsModel
recentRecipientsModel: recentsModel
}
}
SignalSpy {
id: recipientSelectedSpy
target: controlUnderTest
signalName: "onRecipientSelected"
}
SignalSpy {
id: recentTabSelectedSpy
target: controlUnderTest
signalName: "onRecentRecipientsTabSelected"
}
property RecipientSelectorPanel controlUnderTest: null
TestCase {
name: "RecipientSelectorPanel"
when: windowShown
function init() {
controlUnderTest = createTemporaryObject(componentUnderTest, root)
recipientSelectedSpy.clear()
recentTabSelectedSpy.clear()
}
function test_basicGeometry() {
verify(!!controlUnderTest)
verify(controlUnderTest.width > 0)
verify(controlUnderTest.height > 0)
}
// TODO: Improve with mouseClick
function test_selectRecentsTab() {
const tabsComponent = findChild(controlUnderTest, "recipientTypeTabBar")
tabsComponent.currentIndex = 2
compare(recentTabSelectedSpy.count, 1)
tabsComponent.currentIndex = 1
tabsComponent.currentIndex = 2
compare(recentTabSelectedSpy.count, 2)
}
function test_checkSharedAddressesCount() {
const savedAddressesListComponent = findChild(controlUnderTest, "savedAddressesList")
compare(savedAddressesListComponent.count, 10)
}
function test_checkWalletAccountsCount() {
const myAccountsListComponent = findChild(controlUnderTest, "myAccountsList")
compare(myAccountsListComponent.count, 4)
}
function test_checkRecentReceiversCount() {
const recentReceiversListComponent = findChild(controlUnderTest, "recentReceiversList")
compare(recentReceiversListComponent.count, 2)
}
// TODO: Click on items and review onRecipientSelected signal
}
}