--- a/phonebookengines/mobcntactions/tsrc/mt_mobcntactions/mt_mobcntactions.cpp Fri May 14 15:42:23 2010 +0300
+++ b/phonebookengines/mobcntactions/tsrc/mt_mobcntactions/mt_mobcntactions.cpp Thu May 27 12:45:19 2010 +0300
@@ -20,9 +20,6 @@
#include <QtTest/QtTest>
-Q_DECLARE_METATYPE(QContactAction::Status)
-
-
#define QTRY_COMPARE(__expr, __expected) \
do { \
const int __step = 50; \
@@ -37,9 +34,7 @@
void TestMobCntActions::initTestCase()
{
- //Non standard types needs to be registered before they can be used by QSignalSpy
- int error = qRegisterMetaType<QContactAction::Status>();
-
+ int error = qRegisterMetaType<QContactAction::State>();
//create manager
m_manager = new QContactManager("symbian");
@@ -53,8 +48,9 @@
void TestMobCntActions::init()
{
//delete all contacts from the database
- QList<QContactLocalId> contacts = m_manager->contacts();
- m_manager->removeContacts(&contacts);
+ QList<QContactLocalId> contacts = m_manager->contactIds();
+ QMap<int, QContactManager::Error> errorMap;
+ m_manager->removeContacts(&contacts, &errorMap);
}
void TestMobCntActions::cleanup()
@@ -66,7 +62,7 @@
m_manager->saveContact(&contact);
//expected no actions found
- QStringList actions = contact.availableActions();
+ QList<QContactActionDescriptor> actions = contact.availableActions();
QVERIFY(actions.count() == 0);
}
@@ -86,7 +82,13 @@
QVERIFY(numberList.count() > 0);
//get the actions
- QStringList actions = contact.availableActions();
+ QList<QContactActionDescriptor> actionDescriptors = contact.availableActions();
+ QStringList actions;
+ for (int i = 0;i < actionDescriptors.count();i++)
+ {
+ QString action = actionDescriptors.at(i).actionName();
+ actions << action;
+ }
//verify that it includes the actiosn
QVERIFY(actions.contains("call", Qt::CaseInsensitive));
@@ -96,45 +98,33 @@
QVERIFY(callActionDescriptors.count() == 1);
QContactAction *callAction = QContactAction::action(callActionDescriptors.at(0));
QVERIFY(callAction != 0);
- QVERIFY(callAction->supportsDetail(numberList.at(0)) == true);
- QVariantMap variantMap = callAction->metadata();
+ QVERIFY(callAction->isDetailSupported(numberList.at(0)) == true);
+ QVariantMap variantMap = callAction->metaData();
QVERIFY(variantMap.count() == 0);
+ variantMap = callAction->results();
QVERIFY(variantMap.count() == 0);
- variantMap = callAction->result();
- QSignalSpy spyCallAction(callAction, SIGNAL(progress(QContactAction::Status, const QVariantMap &)));
+ QSignalSpy spyCallAction(callAction, SIGNAL(stateChanged(QContactAction::State)));
callAction->invokeAction(contact, numberList.at(0));
callAction->invokeAction(contact);
QTRY_COMPARE(spyCallAction.count(), 2); // make sure the signal was emitted exactly one time
- //Verify that the data is correct
- //QList<QVariant> arguments = spy.takeFirst(); // take the first signal
- //QContactAction::Status status = arguments.at(0).value<QContactAction::Status>();
- //QVariantMap map = (arguments.at(1)).toMap();
delete callAction;
}
void TestMobCntActions::phonenumberNoCallSupport()
{
QContact contact;
-
- QContactPhoneNumber faxNumber;
- faxNumber.setNumber("555111222");
- faxNumber.setSubTypes(QContactPhoneNumber::SubTypeFacsimile);
- contact.saveDetail(&faxNumber);
m_manager->saveContact(&contact);
-
- //one number exist in contact
- QList<QContactPhoneNumber> numberList = contact.details<QContactPhoneNumber>();
- QVERIFY(numberList.count() == 1);
-
- QStringList subTypeList = numberList.at(0).subTypes();
-
- QVERIFY(subTypeList.count() == 1);
- QVERIFY(subTypeList.contains(QContactPhoneNumber::SubTypeFacsimile));
//no actions expected
- QStringList actions = contact.availableActions();
+ QList<QContactActionDescriptor> actionDescriptors = contact.availableActions();
+ QStringList actions;
+ for (int i = 0;i < actionDescriptors.count();i++)
+ {
+ QString action = actionDescriptors.at(i).actionName();
+ actions << action;
+ }
- QVERIFY(actions.contains("call", Qt::CaseInsensitive) == false);
+ QVERIFY(actions.contains("call", Qt::CaseInsensitive) == false);
}
void TestMobCntActions::phonenumberMessageSupport()
@@ -153,7 +143,13 @@
QVERIFY(numberList.count() > 0);
//get the actions
- QStringList actions = contact.availableActions();
+ QList<QContactActionDescriptor> actionDescriptors = contact.availableActions();
+ QStringList actions;
+ for (int i = 0;i < actionDescriptors.count();i++)
+ {
+ QString action = actionDescriptors.at(i).actionName();
+ actions << action;
+ }
//verify that it includes the actiosn
QVERIFY(actions.contains("message", Qt::CaseInsensitive));
@@ -162,12 +158,12 @@
QVERIFY(messageActionDescriptors.count() == 1);
QContactAction *messageAction = QContactAction::action(messageActionDescriptors.at(0));
QVERIFY(messageAction != 0);
- QVERIFY(messageAction->supportsDetail(numberList.at(0)) == true);
- QVariantMap variantMap = messageAction->metadata();
+ QVERIFY(messageAction->isDetailSupported(numberList.at(0)) == true);
+ QVariantMap variantMap = messageAction->metaData();
QVERIFY(variantMap.count() == 0);
- variantMap = messageAction->result();
+ variantMap = messageAction->results();
QVERIFY(variantMap.count() == 0);
- QSignalSpy spyMessageAction(messageAction, SIGNAL(progress(QContactAction::Status, const QVariantMap &)));
+ QSignalSpy spyMessageAction(messageAction, SIGNAL(stateChanged(QContactAction::State)));
messageAction->invokeAction(contact, numberList.at(0));
messageAction->invokeAction(contact);
QTRY_COMPARE(spyMessageAction.count(), 2); // make sure the signal was emitted exactly one time
@@ -176,27 +172,18 @@
void TestMobCntActions::phonenumberNoMessageSupport()
{
- QContact contact;
-
QContactPhoneNumber faxNumber;
faxNumber.setNumber("555111222");
faxNumber.setSubTypes(QContactPhoneNumber::SubTypeFacsimile);
- contact.saveDetail(&faxNumber);
- m_manager->saveContact(&contact);
-
- //one number exist in contact
- QList<QContactPhoneNumber> numberList = contact.details<QContactPhoneNumber>();
- QVERIFY(numberList.count() == 1);
+
+ QList<QContactActionDescriptor> actionDescriptors = QContactAction::actionDescriptors("message", "symbian");
+
+ QContactAction* contactAction = QContactAction::action(actionDescriptors.first());
+ bool isSupportDetail = contactAction->isDetailSupported(faxNumber);
- QStringList subTypeList = numberList.at(0).subTypes();
-
- QVERIFY(subTypeList.count() == 1);
- QVERIFY(subTypeList.contains(QContactPhoneNumber::SubTypeFacsimile));
-
- //no actions expected
- QStringList actions = contact.availableActions();
-
- QVERIFY(actions.contains("message", Qt::CaseInsensitive) == false);
+ delete contactAction;
+
+ QVERIFY(isSupportDetail == false);
}
void TestMobCntActions::phonenumberVideoCallSupport()
@@ -215,7 +202,13 @@
QVERIFY(numberList.count() > 0);
//get the actions
- QStringList actions = contact.availableActions();
+ QList<QContactActionDescriptor> actionDescriptors = contact.availableActions();
+ QStringList actions;
+ for (int i = 0;i < actionDescriptors.count();i++)
+ {
+ QString action = actionDescriptors.at(i).actionName();
+ actions << action;
+ }
//verify that it includes the actiosn
QVERIFY(actions.contains("videocall", Qt::CaseInsensitive));
@@ -225,12 +218,12 @@
QVERIFY(videoCallActionDescriptors.count() == 1);
QContactAction *videoCallAction = QContactAction::action(videoCallActionDescriptors.at(0));
QVERIFY(videoCallAction != 0);
- QVERIFY(videoCallAction->supportsDetail(numberList.at(0)) == true);
- QVariantMap variantMap = videoCallAction->metadata();
+ QVERIFY(videoCallAction->isDetailSupported(numberList.at(0)) == true);
+ QVariantMap variantMap = videoCallAction->metaData();
QVERIFY(variantMap.count() == 0);
- variantMap = videoCallAction->result();
+ variantMap = videoCallAction->results();
QVERIFY(variantMap.count() == 0);
- QSignalSpy spyVideoCallAction(videoCallAction, SIGNAL(progress(QContactAction::Status, const QVariantMap &)));
+ QSignalSpy spyVideoCallAction(videoCallAction, SIGNAL(stateChanged(QContactAction::State)));
videoCallAction->invokeAction(contact, numberList.at(0));
videoCallAction->invokeAction(contact);
QTRY_COMPARE(spyVideoCallAction.count(), 2); // make sure the signal was emitted exactly one time
@@ -240,29 +233,20 @@
void TestMobCntActions::phonenumberNoVideoCallSupport()
{
QContact contact;
-
- QContactPhoneNumber faxNumber;
- faxNumber.setNumber("555111222");
- faxNumber.setSubTypes(QContactPhoneNumber::SubTypeFacsimile);
- contact.saveDetail(&faxNumber);
m_manager->saveContact(&contact);
- //one number exist in contact
- QList<QContactPhoneNumber> numberList = contact.details<QContactPhoneNumber>();
- QVERIFY(numberList.count() == 1);
-
- QStringList subTypeList = numberList.at(0).subTypes();
-
- QVERIFY(subTypeList.count() == 1);
- QVERIFY(subTypeList.contains(QContactPhoneNumber::SubTypeFacsimile));
-
- //no actions expected
- QStringList actions = contact.availableActions();
-
+ //expected no actions found
+ QList<QContactActionDescriptor> actionDescriptors = contact.availableActions();
+ QStringList actions;
+ for (int i = 0;i < actionDescriptors.count();i++)
+ {
+ QString action = actionDescriptors.at(i).actionName();
+ actions << action;
+ }
QVERIFY(actions.contains("videocall", Qt::CaseInsensitive) == false);
}
-void TestMobCntActions::phonenumberEmailSupport()
+void TestMobCntActions::emailSupport()
{
QContact contact;
QContactEmailAddress email;
@@ -274,8 +258,14 @@
QList<QContactEmailAddress> emailList = contact.details<QContactEmailAddress>();
QVERIFY(emailList.count() == 1);
- //no actions expected
- QStringList actions = contact.availableActions();
+ //one action expected
+ QList<QContactActionDescriptor> actionDescriptors = contact.availableActions();
+ QStringList actions;
+ for (int i = 0;i < actionDescriptors.count();i++)
+ {
+ QString action = actionDescriptors.at(i).actionName();
+ actions << action;
+ }
QVERIFY(actions.count() == 1);
QVERIFY(actions.contains("email", Qt::CaseInsensitive));
@@ -287,26 +277,91 @@
QVERIFY(emailActionDescriptors.count() == 1);
QContactAction *emailAction = QContactAction::action(emailActionDescriptors.at(0));
QVERIFY(emailAction != 0);
- QVERIFY(emailAction->supportsDetail(emailList.at(0)) == true);
- QVariantMap variantMap = emailAction->metadata();
+ QVERIFY(emailAction->isDetailSupported(emailList.at(0)) == true);
+ QVariantMap variantMap = emailAction->metaData();
QVERIFY(variantMap.count() == 0);
- variantMap = emailAction->result();
+ variantMap = emailAction->results();
QVERIFY(variantMap.count() == 0);
- QSignalSpy spyEmailAction(emailAction, SIGNAL(progress(QContactAction::Status, const QVariantMap &)));
+ QSignalSpy spyEmailAction(emailAction, SIGNAL(stateChanged(QContactAction::State)));
emailAction->invokeAction(contact, emailAddress);
emailAction->invokeAction(contact);
QTRY_COMPARE(spyEmailAction.count(), 2); // make sure the signal was emitted exactly one time
delete emailAction;
}
-void TestMobCntActions::phonenumberNoEmailSupport()
+void TestMobCntActions::noEmailSupport()
{
QContact contact;
m_manager->saveContact(&contact);
//expected no actions found
- QStringList actions = contact.availableActions();
+ QList<QContactActionDescriptor> actionDescriptors = contact.availableActions();
+ QStringList actions;
+ for (int i = 0;i < actionDescriptors.count();i++)
+ {
+ QString action = actionDescriptors.at(i).actionName();
+ actions << action;
+ }
QVERIFY(actions.contains("email", Qt::CaseInsensitive) == false);
}
+void TestMobCntActions::urlSupport()
+{
+ QContact contact;
+ QContactUrl url;
+ url.setUrl("www.test.com");
+ contact.saveDetail(&url);
+ m_manager->saveContact(&contact);
+
+ //one number exist in contact
+ QList<QContactUrl> urlList = contact.details<QContactUrl>();
+ QVERIFY(urlList.count() == 1);
+
+ //no actions expected
+ QList<QContactActionDescriptor> actionDescriptors = contact.availableActions();
+ QStringList actions;
+ for (int i = 0;i < actionDescriptors.count();i++)
+ {
+ QString action = actionDescriptors.at(i).actionName();
+ actions << action;
+ }
+ QVERIFY(actions.count() == 1);
+ QVERIFY(actions.contains("url", Qt::CaseInsensitive));
+
+ //pick first number for the actions
+ QContactUrl urlAddress = contact.detail<QContactUrl>();
+
+ //Test Email action
+ QList<QContactActionDescriptor> urlActionDescriptors = QContactAction::actionDescriptors("url", "symbian");
+ QVERIFY(urlActionDescriptors.count() == 1);
+ QContactAction *urlAction = QContactAction::action(urlActionDescriptors.at(0));
+ QVERIFY(urlAction != 0);
+ QVERIFY(urlAction->isDetailSupported(urlList.at(0)) == true);
+ QVariantMap variantMap = urlAction->metaData();
+ QVERIFY(variantMap.count() == 0);
+ variantMap = urlAction->results();
+ QVERIFY(variantMap.count() == 0);
+ QSignalSpy spyUrlAction(urlAction, SIGNAL(stateChanged(QContactAction::State)));
+ urlAction->invokeAction(contact, urlAddress);
+ urlAction->invokeAction(contact);
+ QTRY_COMPARE(spyUrlAction.count(), 2); // make sure the signal was emitted exactly once each time
+ delete urlAction;
+}
+
+void TestMobCntActions::noUrlSupport()
+{
+ QContact contact;
+ m_manager->saveContact(&contact);
+
+ //expected no actions found
+ QList<QContactActionDescriptor> actionDescriptors = contact.availableActions();
+ QStringList actions;
+ for (int i = 0;i < actionDescriptors.count();i++)
+ {
+ QString action = actionDescriptors.at(i).actionName();
+ actions << action;
+ }
+ QVERIFY(actions.contains("url", Qt::CaseInsensitive) == false);
+}
+
QTEST_MAIN(TestMobCntActions);