336 lines
19 KiB
QML
336 lines
19 KiB
QML
|
import QtQuick 2.15
|
||
|
import QtTest 1.15
|
||
|
import QtQml 2.15
|
||
|
|
||
|
import AppLayouts.Profile.helpers 1.0
|
||
|
import AppLayouts.Profile.stores 1.0
|
||
|
|
||
|
Item {
|
||
|
id: root
|
||
|
|
||
|
Component {
|
||
|
id: testComponent
|
||
|
ContactDetails {
|
||
|
id: contactDetails
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Component {
|
||
|
id: failingTestComponent
|
||
|
ContactDetails {
|
||
|
id: contactDetails
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Component {
|
||
|
id: contactsStore
|
||
|
ContactsStore {
|
||
|
readonly property string myPublicKey: "0x123"
|
||
|
readonly property ListModel contactsModel: ListModel { id: myContactsModel }
|
||
|
property var requestContactInfo: requestContactInfoCall
|
||
|
function requestContactInfoCall(pubKey) {
|
||
|
myContactsModel.append({
|
||
|
pubKey: pubKey,
|
||
|
displayName: "displayName",
|
||
|
ensName: "ensName",
|
||
|
isEnsVerified: true,
|
||
|
localNickname: "localNickname",
|
||
|
alias: "alias",
|
||
|
icon: "icon",
|
||
|
colorId: 1,
|
||
|
colorHash: [],
|
||
|
onlineStatus: 1,
|
||
|
isContact: true,
|
||
|
isCurrentUser: false,
|
||
|
isVerified: true,
|
||
|
isUntrustworthy: false,
|
||
|
isBlocked: false,
|
||
|
contactRequest: 3,
|
||
|
incomingVerificationStatus: 3,
|
||
|
outgoingVerificationStatus: 2,
|
||
|
defaultDisplayName: "defaultDisplayName",
|
||
|
optionalName: "optionalName",
|
||
|
lastUpdated: 1234567890,
|
||
|
lastUpdatedLocally: 1234567890,
|
||
|
thumbnailImage: "thumbnailImage",
|
||
|
largeImage: "largeImage",
|
||
|
isContactRequestReceived: false,
|
||
|
isContactRequestSent: false,
|
||
|
isSyncing: false,
|
||
|
isRemoved: false,
|
||
|
trustStatus: 1,
|
||
|
bio: "bio"
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Component {
|
||
|
id: profileStore
|
||
|
ProfileStore {
|
||
|
id: profileStoreMock
|
||
|
readonly property string displayName: "myDisplayName"
|
||
|
readonly property string name: "myEnsName"
|
||
|
readonly property string username: "myUsername"
|
||
|
readonly property string icon: "myIcon"
|
||
|
readonly property int colorId: 1
|
||
|
readonly property var colorHash: {1}
|
||
|
readonly property int currentUserStatus: 1
|
||
|
readonly property string defaultDisplayName: "myDefaultDisplayName"
|
||
|
readonly property string thumbnailImage: "myThumbnailImage"
|
||
|
readonly property string largeImage: "myLargeImage"
|
||
|
readonly property string bio: "myBio"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
TestCase {
|
||
|
name: "ContactDetailsTest"
|
||
|
function test_initialization() {
|
||
|
const contactDetails = createTemporaryObject(testComponent, root, {
|
||
|
contactsStore: createTemporaryObject(contactsStore, root),
|
||
|
profileStore: createTemporaryObject(profileStore, root),
|
||
|
publicKey: ""
|
||
|
})
|
||
|
|
||
|
verify(!!contactDetails, "Expected the contact details to initialize")
|
||
|
}
|
||
|
|
||
|
function test_initializationOwnProfile() {
|
||
|
const contactDetails = createTemporaryObject(testComponent, root, {
|
||
|
contactsStore: createTemporaryObject(contactsStore, root),
|
||
|
profileStore: createTemporaryObject(profileStore, root),
|
||
|
publicKey: "0x123"
|
||
|
})
|
||
|
|
||
|
compare(contactDetails.loading, false, "Expected the loading flag to be false")
|
||
|
compare(contactDetails.publicKey,"0x123", "Expected the public key to be set")
|
||
|
compare(contactDetails.contactsStore.myPublicKey,"0x123", "Expected the contacts store to be set")
|
||
|
compare(contactDetails.profileStore.displayName,"myDisplayName", "Expected the profile store to be set")
|
||
|
compare(contactDetails.displayName, contactDetails.profileStore.displayName, "Expected the display name to be set")
|
||
|
compare(contactDetails.ensName, contactDetails.profileStore.name, "Expected the ens name to be set")
|
||
|
compare(contactDetails.ensVerified, true, "Expected the ensVerified to be set")
|
||
|
compare(contactDetails.localNickname, "", "Expected the local nickname to be empty")
|
||
|
compare(contactDetails.alias, contactDetails.profileStore.username, "Expected the alias to be set")
|
||
|
compare(contactDetails.icon, contactDetails.profileStore.icon, "Expected the icon to be set")
|
||
|
compare(contactDetails.colorId, contactDetails.profileStore.colorId, "Expected the color id to be set")
|
||
|
compare(contactDetails.colorHash, contactDetails.profileStore.colorHash, "Expected the color hash to be empty")
|
||
|
compare(contactDetails.onlineStatus, contactDetails.profileStore.currentUserStatus, "Expected the online status to be set")
|
||
|
compare(contactDetails.thumbnailImage, contactDetails.profileStore.thumbnailImage, "Expected the is contact flag to be set")
|
||
|
compare(contactDetails.largeImage, contactDetails.profileStore.largeImage, "Expected the is contact flag to be set")
|
||
|
compare(contactDetails.bio, contactDetails.profileStore.bio, "Expected the is contact flag to be set")
|
||
|
compare(contactDetails.isContact, false, "Expected the is contact flag to be set")
|
||
|
compare(contactDetails.isCurrentUser, true, "Expected the is contact flag to be set")
|
||
|
}
|
||
|
|
||
|
function test_initializationWithContact() {
|
||
|
const contactsStoreMock = createTemporaryObject(contactsStore, root)
|
||
|
contactsStoreMock.requestContactInfo("0x321") //appending new contact to the model
|
||
|
|
||
|
const contactDetails = createTemporaryObject(testComponent, root, {
|
||
|
contactsStore: contactsStoreMock,
|
||
|
profileStore: createTemporaryObject(profileStore, root),
|
||
|
publicKey: "0x321"
|
||
|
})
|
||
|
|
||
|
compare(contactDetails.loading, false, "Expected the loading flag to be false")
|
||
|
compare(contactDetails.publicKey,"0x321", "Expected the public key to be set")
|
||
|
compare(contactDetails.displayName, "displayName", "Expected the display name to be set")
|
||
|
compare(contactDetails.ensName, "ensName", "Expected the ens name to be set")
|
||
|
compare(contactDetails.ensVerified, true, "Expected the ensVerified to be set")
|
||
|
compare(contactDetails.localNickname, "localNickname", "Expected the local nickname to be set")
|
||
|
compare(contactDetails.alias, "alias", "Expected the alias to be set")
|
||
|
compare(contactDetails.icon, "icon", "Expected the icon to be set")
|
||
|
compare(contactDetails.colorId, 1, "Expected the color id to be set")
|
||
|
compare(contactDetails.onlineStatus, 1, "Expected the online status to be set")
|
||
|
compare(contactDetails.thumbnailImage, "thumbnailImage", "Expected the thumbnailImage to be set")
|
||
|
compare(contactDetails.largeImage, "largeImage", "Expected the largeImage to be set")
|
||
|
compare(contactDetails.bio, "bio", "Expected the bio to be set")
|
||
|
compare(contactDetails.isContact, true, "Expected the is contact flag to be set")
|
||
|
compare(contactDetails.isCurrentUser, false, "Expected the isCurrentUser flag to be set")
|
||
|
compare(contactDetails.isVerified, true, "Expected the isVerified flag to be set")
|
||
|
compare(contactDetails.isUntrustworthy, false, "Expected the isUntrustworthy flag to be set")
|
||
|
compare(contactDetails.isBlocked, false, "Expected the isBlocked flag to be set")
|
||
|
compare(contactDetails.contactRequestState, 3, "Expected the contactRequestState flag to be set")
|
||
|
compare(contactDetails.incomingVerificationStatus, 3, "Expected the incomingVerificationStatus flag to be set")
|
||
|
compare(contactDetails.outgoingVerificationStatus, 2, "Expected the outgoingVerificationStatus flag to be set")
|
||
|
compare(contactDetails.defaultDisplayName, "defaultDisplayName", "Expected the defaultDisplayName to be set")
|
||
|
compare(contactDetails.optionalName, "optionalName", "Expected the optionalName to be set")
|
||
|
compare(contactDetails.lastUpdated, 1234567890, "Expected the lastUpdated to be set")
|
||
|
compare(contactDetails.lastUpdatedLocally, 1234567890, "Expected the lastUpdatedLocally to be set")
|
||
|
compare(contactDetails.isContactRequestReceived, false, "Expected the isContactRequestReceived flag to be set")
|
||
|
compare(contactDetails.isContactRequestSent, false, "Expected the isContactRequestSent flag to be set")
|
||
|
compare(contactDetails.isSyncing, false, "Expected the isSyncing to be set")
|
||
|
compare(contactDetails.removed, false, "Expected the removed flag to be set")
|
||
|
compare(contactDetails.trustStatus, 1, "Expected the trustStatus flag to be set")
|
||
|
}
|
||
|
|
||
|
function test_initFails() {
|
||
|
ignoreWarning(new RegExp("Required property publicKey was not initialized"))
|
||
|
ignoreWarning(new RegExp("Required property contactsStore was not initialized"))
|
||
|
ignoreWarning(new RegExp("Required property profileStore was not initialized"))
|
||
|
|
||
|
const contactDetails = createTemporaryObject(failingTestComponent, root)
|
||
|
verify(!contactDetails, "Expected the contact details to fail to initialize")
|
||
|
}
|
||
|
|
||
|
function test_initWithEmptyContacts() {
|
||
|
const contactsStoreMock = createTemporaryObject(contactsStore, root)
|
||
|
let requestContactInfoCallCount = 0
|
||
|
contactsStoreMock.requestContactInfo = function(pubKey) {
|
||
|
requestContactInfoCallCount++
|
||
|
}
|
||
|
const contactDetails = createTemporaryObject(testComponent, root, {
|
||
|
contactsStore: contactsStoreMock,
|
||
|
profileStore: createTemporaryObject(profileStore, root),
|
||
|
publicKey: "0x1234"
|
||
|
})
|
||
|
|
||
|
compare(requestContactInfoCallCount, 1, "Expected the requestContactInfo to be called")
|
||
|
compare(contactDetails.loading, true, "Expected the loading flag to be true")
|
||
|
compare(contactDetails.publicKey,"0x1234", "Expected the public key to be set")
|
||
|
|
||
|
//add the contact
|
||
|
contactsStoreMock.requestContactInfo = contactsStoreMock.requestContactInfoCall
|
||
|
contactsStoreMock.requestContactInfo("0x1234")
|
||
|
|
||
|
compare(contactDetails.loading, false, "Expected the loading flag to be false")
|
||
|
compare(contactDetails.publicKey,"0x1234", "Expected the public key to be set")
|
||
|
compare(contactDetails.displayName, "displayName", "Expected the display name to be set")
|
||
|
compare(contactDetails.ensName, "ensName", "Expected the ens name to be set")
|
||
|
compare(contactDetails.ensVerified, true, "Expected the ensVerified to be set")
|
||
|
}
|
||
|
|
||
|
function test_contactRemovedFromModel() {
|
||
|
const contactsStoreMock = createTemporaryObject(contactsStore, root)
|
||
|
contactsStoreMock.requestContactInfo("0x1234") //appending new contact to the model
|
||
|
|
||
|
const contactDetails = createTemporaryObject(testComponent, root, {
|
||
|
contactsStore: contactsStoreMock,
|
||
|
profileStore: createTemporaryObject(profileStore, root),
|
||
|
publicKey: "0x1234"
|
||
|
})
|
||
|
|
||
|
compare(contactDetails.loading, false, "Expected the loading flag to be false")
|
||
|
compare(contactDetails.publicKey,"0x1234", "Expected the public key to be set")
|
||
|
compare(contactDetails.displayName, "displayName", "Expected the display name to be set")
|
||
|
compare(contactDetails.ensName, "ensName", "Expected the ens name to be set")
|
||
|
compare(contactDetails.ensVerified, true, "Expected the ensVerified to be set")
|
||
|
|
||
|
// removing from model should not clear the contact details
|
||
|
contactsStoreMock.contactsModel.remove(0)
|
||
|
|
||
|
compare(contactDetails.loading, false, "Expected the loading flag to be true")
|
||
|
compare(contactDetails.publicKey,"0x1234", "Expected the public key to be set")
|
||
|
compare(contactDetails.displayName, "displayName", "Expected the display name to be empty")
|
||
|
compare(contactDetails.ensName, "ensName", "Expected the ens name to be empty")
|
||
|
compare(contactDetails.ensVerified, true, "Expected the ensVerified to be false")
|
||
|
}
|
||
|
|
||
|
function test_liveUpdate() {
|
||
|
const contactsStoreMock = createTemporaryObject(contactsStore, root)
|
||
|
contactsStoreMock.requestContactInfo("0x1234") //appending new contact to the model
|
||
|
|
||
|
const contactDetails = createTemporaryObject(testComponent, root, {
|
||
|
contactsStore: contactsStoreMock,
|
||
|
profileStore: createTemporaryObject(profileStore, root),
|
||
|
publicKey: "0x1234"
|
||
|
})
|
||
|
|
||
|
compare(contactDetails.loading, false, "Expected the loading flag to be false")
|
||
|
compare(contactDetails.publicKey,"0x1234", "Expected the public key to be set")
|
||
|
compare(contactDetails.displayName, "displayName", "Expected the display name to be set")
|
||
|
compare(contactDetails.ensName, "ensName", "Expected the ens name to be set")
|
||
|
compare(contactDetails.ensVerified, true, "Expected the ensVerified to be set")
|
||
|
|
||
|
// updating the contact should update the contact details
|
||
|
contactsStoreMock.contactsModel.set(0, {
|
||
|
pubKey: "0x1234",
|
||
|
displayName: "newDisplayName",
|
||
|
ensName: "newEnsName",
|
||
|
isEnsVerified: false,
|
||
|
localNickname: "newLocalNickname",
|
||
|
alias: "newAlias",
|
||
|
icon: "newIcon",
|
||
|
colorId: 2,
|
||
|
colorHash: [],
|
||
|
onlineStatus: 2,
|
||
|
isContact: false,
|
||
|
isCurrentUser: true,
|
||
|
isVerified: false,
|
||
|
isUntrustworthy: true,
|
||
|
isBlocked: true,
|
||
|
contactRequest: 2,
|
||
|
incomingVerificationStatus: 2,
|
||
|
outgoingVerificationStatus: 1,
|
||
|
defaultDisplayName: "newDefaultDisplayName",
|
||
|
optionalName: "newOptionalName",
|
||
|
lastUpdated: 1234567891,
|
||
|
lastUpdatedLocally: 1234567891,
|
||
|
thumbnailImage: "newThumbnailImage",
|
||
|
largeImage: "newLargeImage",
|
||
|
isContactRequestReceived: true,
|
||
|
isContactRequestSent: true,
|
||
|
isSyncing: true,
|
||
|
isRemoved: true,
|
||
|
trustStatus: 2,
|
||
|
bio: "newBio"
|
||
|
})
|
||
|
|
||
|
compare(contactDetails.loading, false, "Expected the loading flag to be false")
|
||
|
compare(contactDetails.publicKey,"0x1234", "Expected the public key to be set")
|
||
|
compare(contactDetails.displayName, "newDisplayName", "Expected the display name to be set")
|
||
|
compare(contactDetails.ensName, "newEnsName", "Expected the ens name to be set")
|
||
|
compare(contactDetails.ensVerified, false, "Expected the ensVerified to be set")
|
||
|
compare(contactDetails.localNickname, "newLocalNickname", "Expected the local nickname to be set")
|
||
|
compare(contactDetails.alias, "newAlias", "Expected the alias to be set")
|
||
|
compare(contactDetails.icon, "newIcon", "Expected the icon to be set")
|
||
|
compare(contactDetails.colorId, 2, "Expected the color id to be set")
|
||
|
compare(contactDetails.onlineStatus, 2, "Expected the online status to be set")
|
||
|
compare(contactDetails.thumbnailImage, "newThumbnailImage", "Expected the thumbnailImage to be set")
|
||
|
compare(contactDetails.largeImage, "newLargeImage", "Expected the largeImage to be set")
|
||
|
compare(contactDetails.bio, "newBio", "Expected the bio to be set")
|
||
|
compare(contactDetails.isContact, false, "Expected the is contact flag to be set")
|
||
|
compare(contactDetails.isCurrentUser, true, "Expected the isCurrentUser flag to be set")
|
||
|
compare(contactDetails.isVerified, false, "Expected the isVerified flag to be set")
|
||
|
compare(contactDetails.isUntrustworthy, true, "Expected the isUntrustworthy flag to be set")
|
||
|
compare(contactDetails.isBlocked, true, "Expected the isBlocked flag to be set")
|
||
|
compare(contactDetails.contactRequestState, 2, "Expected the contactRequestState flag to be set")
|
||
|
compare(contactDetails.incomingVerificationStatus, 2, "Expected the incomingVerificationStatus flag to be set")
|
||
|
compare(contactDetails.outgoingVerificationStatus, 1, "Expected the outgoingVerificationStatus flag to be set")
|
||
|
compare(contactDetails.defaultDisplayName, "newDefaultDisplayName", "Expected the defaultDisplayName to be set")
|
||
|
compare(contactDetails.optionalName, "newOptionalName", "Expected the optionalName to be set")
|
||
|
compare(contactDetails.lastUpdated, 1234567891, "Expected the lastUpdated to be set")
|
||
|
compare(contactDetails.lastUpdatedLocally, 1234567891, "Expected the lastUpdatedLocally to be set")
|
||
|
compare(contactDetails.isContactRequestReceived, true, "Expected the isContactRequestReceived flag to be set")
|
||
|
compare(contactDetails.isContactRequestSent, true, "Expected the isContactRequestSent flag to be set")
|
||
|
compare(contactDetails.isSyncing, true, "Expected the isSyncing to be set")
|
||
|
compare(contactDetails.removed, true, "Expected the removed flag to be set")
|
||
|
compare(contactDetails.trustStatus, 2, "Expected the trustStatus flag to be set")
|
||
|
}
|
||
|
|
||
|
function test_changingPublicKeyFromOwnToContact() {
|
||
|
const contactsStoreMock = createTemporaryObject(contactsStore, root)
|
||
|
const contactDetails = createTemporaryObject(testComponent, root, {
|
||
|
contactsStore: contactsStoreMock,
|
||
|
profileStore: createTemporaryObject(profileStore, root),
|
||
|
publicKey: "0x123"
|
||
|
})
|
||
|
|
||
|
compare(contactDetails.loading, false, "Expected the loading flag to be false")
|
||
|
compare(contactDetails.publicKey,"0x123", "Expected the public key to be set")
|
||
|
compare(contactDetails.contactsStore.myPublicKey,"0x123", "Expected the contacts store to be set")
|
||
|
compare(contactDetails.profileStore.displayName,"myDisplayName", "Expected the profile store to be set")
|
||
|
compare(contactDetails.displayName, contactDetails.profileStore.displayName, "Expected the display name to be set")
|
||
|
compare(contactDetails.ensName, contactDetails.profileStore.name, "Expected the ens name to be set")
|
||
|
|
||
|
contactDetails.publicKey = "0x321"
|
||
|
|
||
|
compare(contactDetails.loading, false, "Expected the loading flag to be false")
|
||
|
compare(contactDetails.publicKey,"0x321", "Expected the public key to be set")
|
||
|
compare(contactDetails.displayName, "displayName", "Expected the display name to be set")
|
||
|
compare(contactDetails.ensName, "ensName", "Expected the ens name to be set")
|
||
|
compare(contactDetails.ensVerified, true, "Expected the ensVerified to be set")
|
||
|
compare(contactDetails.localNickname, "localNickname", "Expected the local nickname to be set")
|
||
|
}
|
||
|
}
|
||
|
}
|