mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-26 21:41:11 +00:00
299 lines
11 KiB
QML
299 lines
11 KiB
QML
import QtQuick 2.15
|
|
import QtTest 1.15
|
|
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Core.Utils 0.1 as SQUtils
|
|
import StatusQ.Core.Theme 0.1
|
|
import StatusQ.Controls 0.1
|
|
|
|
import QtQuick.Controls 2.15
|
|
|
|
import Models 1.0
|
|
import Storybook 1.0
|
|
|
|
import utils 1.0
|
|
|
|
import AppLayouts.Wallet.stores 1.0 as WalletStores
|
|
import AppLayouts.Wallet.adaptors 1.0
|
|
import AppLayouts.Chat.popups 1.0
|
|
import shared.stores 1.0 as SharedStores
|
|
|
|
Item {
|
|
id: root
|
|
width: 800
|
|
height: 600
|
|
|
|
QtObject {
|
|
id: d
|
|
readonly property var tokenBySymbolModel: TokensBySymbolModel {}
|
|
|
|
function launchPopup() {
|
|
paymentRequestModalComponent.createObject(root)
|
|
}
|
|
|
|
readonly property var accounts: WalletAccountsModel {}
|
|
readonly property SharedStores.CurrenciesStore currencyStore: SharedStores.CurrenciesStore {}
|
|
readonly property var flatNetworks: NetworksModel.flatNetworks
|
|
readonly property var walletAssetsStore: WalletStores.WalletAssetsStore {
|
|
id: thisWalletAssetStore
|
|
walletTokensStore: WalletStores.TokensStore {
|
|
plainTokensBySymbolModel: TokensBySymbolModel {}
|
|
}
|
|
assetsWithFilteredBalances: thisWalletAssetStore.groupedAccountsAssetsModel
|
|
}
|
|
|
|
readonly property var tokenAdaptor: TokenSelectorViewAdaptor {
|
|
assetsModel: d.walletAssetsStore.baseGroupedAccountAssetModel
|
|
flatNetworksModel: d.flatNetworks
|
|
currentCurrency: d.currencyStore.currentCurrency
|
|
plainTokensBySymbolModel: d.walletAssetsStore.walletTokensStore.plainTokensBySymbolModel
|
|
showAllTokens: true
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: paymentRequestModalComponent
|
|
PaymentRequestModal {
|
|
id: paymentRequestModal
|
|
destroyOnClose: true
|
|
|
|
currentCurrency: d.currencyStore.currentCurrency
|
|
formatCurrencyAmount: d.currencyStore.formatCurrencyAmount
|
|
flatNetworksModel: d.flatNetworks
|
|
accountsModel: d.accounts
|
|
assetsModel: d.tokenAdaptor.outputAssetsModel
|
|
}
|
|
}
|
|
|
|
TestCase {
|
|
name: "PaymentRequestModal"
|
|
when: windowShown
|
|
|
|
property PaymentRequestModal controlUnderTest: null
|
|
|
|
// helper functions -------------------------------------------------------------
|
|
function launchAndVerfyModal() {
|
|
controlUnderTest = createTemporaryObject(paymentRequestModalComponent, root)
|
|
verify(!!controlUnderTest)
|
|
controlUnderTest.open()
|
|
verify(!!controlUnderTest.opened)
|
|
}
|
|
|
|
function closeAndVerfyModal() {
|
|
verify(!!controlUnderTest)
|
|
controlUnderTest.close()
|
|
verify(!controlUnderTest.opened)
|
|
}
|
|
// end helper functions -------------------------------------------------------------
|
|
|
|
function test_default_values() {
|
|
launchAndVerfyModal()
|
|
|
|
const button = findChild(controlUnderTest, "addButton")
|
|
verify(!!button)
|
|
verify(!button.enabled)
|
|
|
|
compare(controlUnderTest.selectedTokenKey, Constants.ethToken)
|
|
const assetSelector = findChild(controlUnderTest, "assetSelector")
|
|
verify(!!assetSelector)
|
|
verify(assetSelector.isSelected)
|
|
verify(assetSelector.contentItem.selected)
|
|
compare(assetSelector.contentItem.name, Constants.ethToken)
|
|
|
|
compare(controlUnderTest.selectedNetworkChainId, Constants.chains.mainnetChainId)
|
|
const networkSelector = findChild(controlUnderTest, "networkSelector")
|
|
verify(!!networkSelector)
|
|
compare(networkSelector.control.contentItem.title, Constants.networkMainnet)
|
|
compare(networkSelector.count, d.flatNetworks.count)
|
|
|
|
compare(controlUnderTest.selectedAccountAddress, d.accounts.data[0].address)
|
|
const accountSelector = findChild(controlUnderTest, "accountSelector")
|
|
verify(!!accountSelector)
|
|
compare(accountSelector.control.contentItem.name, d.accounts.data[0].name)
|
|
compare(accountSelector.count, d.accounts.data.length)
|
|
|
|
compare(controlUnderTest.amount, "0")
|
|
const amountInput = findChild(controlUnderTest, "amountInput")
|
|
verify(!!amountInput)
|
|
compare(amountInput.text, "")
|
|
|
|
closeAndVerfyModal()
|
|
}
|
|
|
|
function test_change_amount() {
|
|
launchAndVerfyModal()
|
|
|
|
const amountInput = findChild(controlUnderTest, "amountInput")
|
|
verify(!!amountInput)
|
|
|
|
const amount = "1.24"
|
|
amountInput.setValue(amount)
|
|
compare(amountInput.text, amount)
|
|
compare(controlUnderTest.amount, amount)
|
|
|
|
closeAndVerfyModal()
|
|
}
|
|
|
|
function test_change_address() {
|
|
launchAndVerfyModal()
|
|
|
|
const accountSelector = findChild(controlUnderTest, "accountSelector")
|
|
verify(!!accountSelector)
|
|
|
|
const account = d.accounts.data[1]
|
|
mouseClick(accountSelector)
|
|
verify(accountSelector.control.popup.opened)
|
|
waitForRendering(accountSelector.control.popup.contentItem)
|
|
const delegateUnderTest = accountSelector.control.popup.contentItem.itemAtIndex(1)
|
|
verify(!!delegateUnderTest)
|
|
mouseClick(delegateUnderTest)
|
|
verify(!accountSelector.control.popup.opened)
|
|
|
|
compare(controlUnderTest.selectedAccountAddress, account.address)
|
|
compare(accountSelector.control.contentItem.name, account.name)
|
|
|
|
closeAndVerfyModal()
|
|
}
|
|
|
|
function test_change_symbol() {
|
|
launchAndVerfyModal()
|
|
|
|
const assetSelector = findChild(controlUnderTest, "assetSelector")
|
|
verify(!!assetSelector)
|
|
compare(controlUnderTest.selectedTokenKey, "ETH")
|
|
compare(assetSelector.contentItem.name, "ETH")
|
|
|
|
const asset = SQUtils.ModelUtils.get(assetSelector.model, 3)
|
|
verify(!!asset)
|
|
mouseClick(assetSelector)
|
|
|
|
waitForRendering(assetSelector)
|
|
const searchablePanel = findChild(assetSelector, "searchableAssetsPanel")
|
|
verify(!!searchablePanel)
|
|
const assetsList = findChild(searchablePanel, "assetsListView")
|
|
verify(!!assetsList)
|
|
const delegateUnderTest = assetsList.itemAtIndex(3)
|
|
verify(!!delegateUnderTest)
|
|
mouseClick(delegateUnderTest)
|
|
|
|
compare(controlUnderTest.selectedTokenKey, asset.tokensKey)
|
|
compare(assetSelector.contentItem.name, asset.symbol)
|
|
|
|
closeAndVerfyModal()
|
|
}
|
|
|
|
function test_change_network() {
|
|
launchAndVerfyModal()
|
|
|
|
const networkSelector = findChild(controlUnderTest, "networkSelector")
|
|
verify(!!networkSelector)
|
|
|
|
const network = d.flatNetworks.get(1)
|
|
mouseClick(networkSelector)
|
|
verify(networkSelector.control.popup.opened)
|
|
waitForRendering(networkSelector.control.popup.contentItem)
|
|
const delegateUnderTest = networkSelector.control.popup.contentItem.itemAtIndex(1)
|
|
verify(!!delegateUnderTest)
|
|
mouseClick(delegateUnderTest)
|
|
verify(!networkSelector.control.popup.opened)
|
|
|
|
compare(controlUnderTest.selectedNetworkChainId, network.chainId)
|
|
compare(networkSelector.control.contentItem.title, network.chainName)
|
|
|
|
closeAndVerfyModal()
|
|
}
|
|
|
|
function test_open_initial_account_address() {
|
|
const account = d.accounts.data[1]
|
|
controlUnderTest = createTemporaryObject(paymentRequestModalComponent, root, { selectedAccountAddress: account.address })
|
|
verify(!!controlUnderTest)
|
|
|
|
controlUnderTest.open()
|
|
verify(!!controlUnderTest.opened)
|
|
|
|
compare(controlUnderTest.selectedAccountAddress, account.address)
|
|
const accountSelector = findChild(controlUnderTest, "accountSelector")
|
|
verify(!!accountSelector)
|
|
compare(accountSelector.control.contentItem.name, account.name)
|
|
|
|
closeAndVerfyModal()
|
|
}
|
|
|
|
function test_open_initial_network() {
|
|
const network = d.flatNetworks.get(2)
|
|
controlUnderTest = createTemporaryObject(paymentRequestModalComponent, root, { selectedNetworkChainId: network.chainId })
|
|
verify(!!controlUnderTest)
|
|
|
|
controlUnderTest.open()
|
|
verify(!!controlUnderTest.opened)
|
|
|
|
compare(controlUnderTest.selectedNetworkChainId, network.chainId)
|
|
const networkSelector = findChild(controlUnderTest, "networkSelector")
|
|
verify(!!networkSelector)
|
|
compare(networkSelector.control.contentItem.title, network.chainName)
|
|
|
|
closeAndVerfyModal()
|
|
}
|
|
|
|
function test_open_initial_asset() {
|
|
const asset = "DAI"
|
|
controlUnderTest = createTemporaryObject(paymentRequestModalComponent, root, { selectedTokenKey: asset })
|
|
verify(!!controlUnderTest)
|
|
|
|
controlUnderTest.open()
|
|
verify(!!controlUnderTest.opened)
|
|
|
|
compare(controlUnderTest.selectedTokenKey, asset)
|
|
const assetSelector = findChild(controlUnderTest, "assetSelector")
|
|
verify(!!assetSelector)
|
|
verify(assetSelector.isSelected)
|
|
verify(assetSelector.contentItem.selected)
|
|
compare(assetSelector.contentItem.name, asset)
|
|
|
|
closeAndVerfyModal()
|
|
}
|
|
|
|
function test_accept_button_enabled_state() {
|
|
launchAndVerfyModal()
|
|
|
|
const button = findChild(controlUnderTest, "addButton")
|
|
verify(!!button)
|
|
|
|
verify(!button.enabled, "Enabled by default because default amount is 0")
|
|
|
|
const amountInput = findChild(controlUnderTest, "amountInput")
|
|
verify(!!amountInput)
|
|
amountInput.setValue("1.24")
|
|
verify(button.enabled, "All values are filled")
|
|
amountInput.setValue("0")
|
|
verify(!button.enabled, "Amount cannot be 0")
|
|
|
|
amountInput.setValue("2")
|
|
verify(button.enabled)
|
|
|
|
// Below scenarios are unlikely to happen in real life, but we should test them anyway.
|
|
// This might produce warnings in the console, but it's fine.
|
|
|
|
// Check if button changes after network is changed
|
|
controlUnderTest.selectedNetworkChainId = 0
|
|
verify(!button.enabled)
|
|
controlUnderTest.selectedNetworkChainId = d.flatNetworks.get(1).chainId
|
|
verify(button.enabled)
|
|
|
|
// Check if button changes after account is changed
|
|
controlUnderTest.selectedAccountAddress = ""
|
|
verify(!button.enabled)
|
|
controlUnderTest.selectedAccountAddress = d.accounts.data[1].address
|
|
verify(button.enabled)
|
|
|
|
// Check if button changes after symbol is changed
|
|
controlUnderTest.selectedTokenKey = ""
|
|
verify(!button.enabled)
|
|
controlUnderTest.selectedTokenKey = "DAI"
|
|
verify(button.enabled)
|
|
|
|
closeAndVerfyModal()
|
|
}
|
|
}
|
|
}
|