2024-09-18 11:11:16 +00:00
|
|
|
|
import QtQuick 2.15
|
|
|
|
|
import QtQuick.Controls 2.15
|
|
|
|
|
import QtTest 1.15
|
|
|
|
|
|
|
|
|
|
import AppLayouts.Wallet.controls 1.0
|
|
|
|
|
|
|
|
|
|
import utils 1.0
|
|
|
|
|
|
|
|
|
|
Item {
|
|
|
|
|
id: root
|
|
|
|
|
|
|
|
|
|
width: 600
|
|
|
|
|
height: 600
|
|
|
|
|
|
|
|
|
|
Component {
|
|
|
|
|
id: selectorCmp
|
|
|
|
|
|
|
|
|
|
AssetSelector {
|
|
|
|
|
id: selector
|
|
|
|
|
|
|
|
|
|
anchors.centerIn: parent
|
2024-09-23 08:15:01 +00:00
|
|
|
|
|
|
|
|
|
readonly property var assetsData: [
|
|
|
|
|
{
|
|
|
|
|
tokensKey: "stt_key",
|
|
|
|
|
communityId: "",
|
|
|
|
|
name: "Status Test Token",
|
|
|
|
|
currencyBalanceAsString: "42,23 USD",
|
|
|
|
|
symbol: "STT",
|
|
|
|
|
iconSource: Constants.tokenIcon("STT"),
|
|
|
|
|
|
|
|
|
|
balances: [
|
|
|
|
|
{
|
|
|
|
|
balanceAsString: "0,56",
|
|
|
|
|
iconUrl: "network/Network=Ethereum"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
sectionName: "My assets on Mainnet"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
tokensKey: "eth_key",
|
|
|
|
|
communityId: "",
|
|
|
|
|
name: "Ether",
|
|
|
|
|
currencyBalanceAsString: "4 276,86 USD",
|
|
|
|
|
symbol: "ETH",
|
|
|
|
|
iconSource: Constants.tokenIcon("ETH"),
|
|
|
|
|
|
|
|
|
|
balances: [
|
|
|
|
|
{
|
|
|
|
|
balanceAsString: "0,12",
|
|
|
|
|
iconUrl: "network/Network=Ethereum"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
sectionName: "My assets on Mainnet"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
tokensKey: "dai_key",
|
|
|
|
|
communityId: "",
|
|
|
|
|
name: "Dai Stablecoin",
|
|
|
|
|
currencyBalanceAsString: "45,92 USD",
|
|
|
|
|
symbol: "DAI",
|
|
|
|
|
iconSource: Constants.tokenIcon("DAI"),
|
|
|
|
|
balances: [],
|
|
|
|
|
|
|
|
|
|
sectionName: "Popular assets"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
model: ListModel {
|
|
|
|
|
Component.onCompleted: append(selector.assetsData)
|
|
|
|
|
}
|
2024-09-18 11:11:16 +00:00
|
|
|
|
|
|
|
|
|
readonly property SignalSpy selectedSpy: SignalSpy {
|
|
|
|
|
target: selector
|
|
|
|
|
signalName: "selected"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TestCase {
|
|
|
|
|
name: "AssetSelector"
|
|
|
|
|
when: windowShown
|
|
|
|
|
|
|
|
|
|
function test_basic() {
|
|
|
|
|
const selector = createTemporaryObject(selectorCmp, root)
|
|
|
|
|
selector.nonInteractiveKey = "eth_key"
|
|
|
|
|
compare(selector.isSelected, false)
|
|
|
|
|
waitForRendering(selector)
|
|
|
|
|
|
|
|
|
|
verify(selector.width > 0)
|
|
|
|
|
verify(selector.height > 0)
|
|
|
|
|
|
|
|
|
|
mouseClick(selector)
|
|
|
|
|
|
|
|
|
|
const panel = findChild(selector.Overlay.overlay, "searchableAssetsPanel")
|
|
|
|
|
compare(panel.model, selector.model)
|
|
|
|
|
compare(panel.nonInteractiveKey, selector.nonInteractiveKey)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function test_basicSelection() {
|
|
|
|
|
const selector = createTemporaryObject(selectorCmp, root)
|
|
|
|
|
const button = selector.contentItem
|
|
|
|
|
|
|
|
|
|
compare(selector.isSelected, false)
|
|
|
|
|
compare(button.selected, false)
|
|
|
|
|
waitForRendering(selector)
|
|
|
|
|
|
|
|
|
|
// click to open popup
|
|
|
|
|
mouseClick(selector)
|
|
|
|
|
compare(selector.isSelected, false)
|
|
|
|
|
compare(button.selected, false)
|
|
|
|
|
|
|
|
|
|
const listView = findChild(selector.Overlay.overlay, "assetsListView")
|
|
|
|
|
verify(listView)
|
|
|
|
|
|
2024-09-23 08:15:01 +00:00
|
|
|
|
compare(listView.count, selector.assetsData.length)
|
2024-09-18 11:11:16 +00:00
|
|
|
|
waitForRendering(listView)
|
|
|
|
|
|
|
|
|
|
const delegate1 = listView.itemAtIndex(0)
|
|
|
|
|
const delegate2 = listView.itemAtIndex(1)
|
|
|
|
|
|
|
|
|
|
verify(delegate1)
|
|
|
|
|
verify(delegate2)
|
|
|
|
|
|
|
|
|
|
// click on delegate to select
|
|
|
|
|
mouseClick(delegate2)
|
|
|
|
|
compare(selector.isSelected, true)
|
|
|
|
|
compare(selector.selectedSpy.count, 1)
|
|
|
|
|
compare(selector.selectedSpy.signalArguments[0][0], "eth_key")
|
|
|
|
|
compare(button.selected, true)
|
|
|
|
|
compare(button.name, "ETH")
|
|
|
|
|
compare(button.icon, Constants.tokenIcon("ETH"))
|
|
|
|
|
|
|
|
|
|
// popup should be closed, content not accessible
|
|
|
|
|
verify(!findChild(selector.Overlay.overlay, "searchableAssetsPanel"))
|
|
|
|
|
|
|
|
|
|
// reopen popup
|
|
|
|
|
mouseClick(selector)
|
|
|
|
|
const panel = findChild(selector.Overlay.overlay, "searchableAssetsPanel")
|
|
|
|
|
verify(panel)
|
|
|
|
|
|
|
|
|
|
compare(panel.highlightedKey, "eth_key")
|
|
|
|
|
compare(panel.nonInteractiveKey, "")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function test_resetSelection() {
|
|
|
|
|
const selector = createTemporaryObject(selectorCmp, root)
|
|
|
|
|
const button = selector.contentItem
|
|
|
|
|
|
|
|
|
|
compare(selector.isSelected, false)
|
|
|
|
|
compare(button.selected, false)
|
|
|
|
|
waitForRendering(selector)
|
|
|
|
|
|
|
|
|
|
// click to open popup
|
|
|
|
|
mouseClick(selector)
|
|
|
|
|
|
|
|
|
|
const listView = findChild(selector.Overlay.overlay, "assetsListView")
|
|
|
|
|
verify(listView)
|
|
|
|
|
|
|
|
|
|
waitForRendering(listView)
|
|
|
|
|
const delegate2 = listView.itemAtIndex(1)
|
|
|
|
|
|
|
|
|
|
verify(delegate2)
|
|
|
|
|
|
|
|
|
|
// click on delegate to select
|
|
|
|
|
mouseClick(delegate2)
|
|
|
|
|
compare(selector.isSelected, true)
|
|
|
|
|
|
|
|
|
|
// reset
|
|
|
|
|
selector.reset()
|
|
|
|
|
compare(selector.isSelected, false)
|
|
|
|
|
compare(button.selected, false)
|
|
|
|
|
|
|
|
|
|
// reopen popup
|
|
|
|
|
mouseClick(selector)
|
|
|
|
|
const panel = findChild(selector.Overlay.overlay, "searchableAssetsPanel")
|
|
|
|
|
verify(panel)
|
|
|
|
|
|
|
|
|
|
compare(panel.highlightedKey, "")
|
|
|
|
|
compare(panel.nonInteractiveKey, "")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function test_customSelection() {
|
|
|
|
|
const selector = createTemporaryObject(selectorCmp, root)
|
|
|
|
|
const button = selector.contentItem
|
|
|
|
|
|
|
|
|
|
compare(selector.isSelected, false)
|
|
|
|
|
waitForRendering(selector)
|
|
|
|
|
|
|
|
|
|
const imageUrl = Constants.tokenIcon("DAI")
|
2024-09-23 08:15:01 +00:00
|
|
|
|
selector.setSelection("Custom", imageUrl, "custom_key")
|
2024-09-18 11:11:16 +00:00
|
|
|
|
|
|
|
|
|
compare(selector.isSelected, true)
|
|
|
|
|
compare(selector.selectedSpy.count, 0)
|
|
|
|
|
compare(button.selected, true)
|
|
|
|
|
compare(button.name, "Custom")
|
|
|
|
|
compare(button.icon, Constants.tokenIcon("DAI"))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function test_searchNotPersistent() {
|
|
|
|
|
const selector = createTemporaryObject(selectorCmp, root)
|
|
|
|
|
const button = selector.contentItem
|
|
|
|
|
|
|
|
|
|
compare(selector.isSelected, false)
|
|
|
|
|
compare(button.selected, false)
|
|
|
|
|
waitForRendering(selector)
|
|
|
|
|
|
|
|
|
|
// click to open popup
|
|
|
|
|
mouseClick(selector)
|
|
|
|
|
|
|
|
|
|
const panel = findChild(selector.Overlay.overlay, "searchableAssetsPanel")
|
|
|
|
|
verify(panel)
|
|
|
|
|
|
|
|
|
|
const searchBox = findChild(panel, "searchBox")
|
|
|
|
|
verify(searchBox)
|
|
|
|
|
|
|
|
|
|
compare(searchBox.text, "")
|
|
|
|
|
searchBox.text = "seach string"
|
|
|
|
|
keyClick(Qt.Key_Escape)
|
|
|
|
|
|
|
|
|
|
// click to re-open popup
|
|
|
|
|
mouseClick(selector)
|
|
|
|
|
{
|
|
|
|
|
const searchBox = findChild(panel, "searchBox")
|
|
|
|
|
verify(searchBox)
|
|
|
|
|
compare(searchBox.text, "")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|