homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/src/t_menuitemmodel.cpp
changeset 97 66b5fe3c07fd
parent 90 3ac3aaebaee5
equal deleted inserted replaced
95:32e56106abf2 97:66b5fe3c07fd
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 */
    16 */
       
    17 
    17 #include <qcoreapplication.h>
    18 #include <qcoreapplication.h>
    18 #include <qstandarditemmodel.h>
    19 #include <qstandarditemmodel.h>
    19 #include "caquery.h"
    20 #include "caquery.h"
    20 #include <hstest_global.h>
    21 #include <hstest_global.h>
    21 #include "hsmenuservice.h"
    22 #include "hsmenuservice.h"
    23 #include "hsmenuitemmodel.h"
    24 #include "hsmenuitemmodel.h"
    24 #include "hsmenuserviceutils.h"
    25 #include "hsmenuserviceutils.h"
    25 #include "t_hsmenuserviceprovider.h"
    26 #include "t_hsmenuserviceprovider.h"
    26 #include "hsiconsidleloader.h"
    27 #include "hsiconsidleloader.h"
    27 
    28 
       
    29 
       
    30 // ---------------------------------------------------------------------------
       
    31 //
       
    32 // ---------------------------------------------------------------------------
       
    33 //
    28 void MenuServiceTest::HsMenuItemModel_construction()
    34 void MenuServiceTest::HsMenuItemModel_construction()
    29 {
    35 {
    30     QScopedPointer<QObject> parent(new QObject);
    36     QScopedPointer<QObject> parent(new QObject);
    31     CaQuery query;
    37     CaQuery query;
    32     query.mQueryId = "__HsMenuItemModel_construction_CaQuery";
    38     query.mQueryId = "__HsMenuItemModel_construction_CaQuery";
    34     QCOMPARE(model.mCaItemModelQuery.mQueryId, query.mQueryId);
    40     QCOMPARE(model.mCaItemModelQuery.mQueryId, query.mQueryId);
    35     QCOMPARE(model.QObject::parent(), parent.data());
    41     QCOMPARE(model.QObject::parent(), parent.data());
    36     QVERIFY(model.getIconSize().isValid());
    42     QVERIFY(model.getIconSize().isValid());
    37 }
    43 }
    38 
    44 
       
    45 // ---------------------------------------------------------------------------
       
    46 //
       
    47 // ---------------------------------------------------------------------------
       
    48 //
    39 void MenuServiceTest::HsMenuItemModel_setSort()
    49 void MenuServiceTest::HsMenuItemModel_setSort()
    40 {
    50 {
    41     HsMenuItemModel model(CaQuery(), this);
    51     HsMenuItemModel model(CaQuery(), this);
    42     
    52     
    43     {
    53     {
    54         QCOMPARE(model.mSetSortAttribute, HsMenuServiceUtils::sortBy(sortAttribute));
    64         QCOMPARE(model.mSetSortAttribute, HsMenuServiceUtils::sortBy(sortAttribute));
    55         QCOMPARE(model.mSetSortOrder, HsMenuServiceUtils::sortOrder(sortAttribute));        
    65         QCOMPARE(model.mSetSortOrder, HsMenuServiceUtils::sortOrder(sortAttribute));        
    56     }
    66     }
    57 }
    67 }
    58 
    68 
       
    69 // ---------------------------------------------------------------------------
       
    70 //
       
    71 // ---------------------------------------------------------------------------
       
    72 //
    59 void MenuServiceTest::HsMenuItemModel_getData()
    73 void MenuServiceTest::HsMenuItemModel_getData()
    60 {
    74 {
    61     HsMenuItemModel model(CaQuery(), this);
    75     HsMenuItemModel model(CaQuery(), this);
    62     
    76     
    63     Qt::ItemDataRole role = Qt::DecorationRole;
    77     Qt::ItemDataRole role = Qt::DecorationRole;
    64     const QModelIndex index = model.index(0, 0);
    78     const QModelIndex index = model.index(0, 0);
    65     const QVariant expectedDecoration(QString("entryText"));
    79     const QVariant expectedDecoration = QVariant(HbIcon(Hs::newIconId));
    66     QList<QVariant> expectedResult;
       
    67     expectedResult << expectedDecoration;
       
    68     expectedResult << HbIcon(Hs::newIconId);
       
    69     
    80     
    70     model.mRootResult = index;
    81     model.mRootResult = index;
    71     model.mEntryResult->mFlagsResult = 0;
    82     model.mEntryResult->mFlagsResult = 0;
    72     model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
    83     model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
    73     model.setSecondLineVisibility(true);
    84     model.setSecondLineVisibility(true);
    74     model.mDataResult = QVariant(expectedDecoration);
    85     model.mDataResult = expectedDecoration;
    75 
    86 
    76     QList<QVariant> actualResult = model.data(index, role).toList();
    87     QList<QVariant> actualResult = model.data(index, role).toList();
    77     
    88 
    78     QCOMPARE(actualResult.at(0).toString(), 
    89     QCOMPARE(model.mDataIndex,index);
    79         expectedDecoration.toString());
    90     QCOMPARE(model.mDataRole,(int)role);
    80     QCOMPARE(actualResult.at(1).value<HbIcon>().iconName(), 
    91     QCOMPARE(actualResult.empty(),false);
       
    92     QCOMPARE(actualResult.at(0).value<HbIcon>().iconName(), 
    81         QString(Hs::newIconId));
    93         QString(Hs::newIconId));
    82     
    94 
    83     QCOMPARE(model.data(index), model.mDataResult);
    95     QCOMPARE(model.data(index), model.mDataResult);
    84 }
    96 }
    85 
    97 
    86 
    98 // ---------------------------------------------------------------------------
       
    99 //
       
   100 // ---------------------------------------------------------------------------
       
   101 //
    87 void MenuServiceTest::HsMenuItemModel_newIconNeeded()
   102 void MenuServiceTest::HsMenuItemModel_newIconNeeded()
    88 {
   103 {
    89     HsMenuItemModel model(CaQuery(), this);
   104     HsMenuItemModel model(CaQuery(), this);
    90     
   105     
    91     const QModelIndex index = model.index(0, 0);
   106     const QModelIndex index = model.index(0, 0);
   109     QVERIFY((model.entry(index)->entryTypeName() != Hs::collectionDownloadedTypeName ) && 
   124     QVERIFY((model.entry(index)->entryTypeName() != Hs::collectionDownloadedTypeName ) && 
   110         !model.newIconNeeded(index));
   125         !model.newIconNeeded(index));
   111     
   126     
   112 }
   127 }
   113 
   128 
   114 
   129 // ---------------------------------------------------------------------------
       
   130 //
       
   131 // ---------------------------------------------------------------------------
       
   132 //
   115 void MenuServiceTest::HsMenuItemModel_uninstallChange()
   133 void MenuServiceTest::HsMenuItemModel_uninstallChange()
   116 {
   134 {
   117     HsMenuItemModel model(CaQuery(), this);
   135     HsMenuItemModel model(CaQuery(), this);
   118     const QModelIndex index = model.index(0, 0);
   136     const QModelIndex index = model.index(0, 0);
   119     model.mRootResult = index;
   137     model.mRootResult = index;
   130     model.uninstallChange(1, 20);
   148     model.uninstallChange(1, 20);
   131     QCOMPARE(model.mEntryResult->attribute(
   149     QCOMPARE(model.mEntryResult->attribute(
   132                 QString("uninstall_progress")), QString("20"));
   150                 QString("uninstall_progress")), QString("20"));
   133 }
   151 }
   134 
   152 
       
   153 // ---------------------------------------------------------------------------
       
   154 //
       
   155 // ---------------------------------------------------------------------------
       
   156 //
   135 void MenuServiceTest::HsMenuCollectionsItemModel_construction()
   157 void MenuServiceTest::HsMenuCollectionsItemModel_construction()
   136 {
   158 {
   137     QScopedPointer<QObject> parent(new QObject);
   159     QScopedPointer<QObject> parent(new QObject);
   138     CaQuery query;
   160     CaQuery query;
   139     query.mQueryId = "__HsMenuCollectionItemModel_construction_CaQuery";
   161     query.mQueryId = "__HsMenuCollectionItemModel_construction_CaQuery";
   141     QCOMPARE(model.mCaItemModelQuery.mQueryId, query.mQueryId);
   163     QCOMPARE(model.mCaItemModelQuery.mQueryId, query.mQueryId);
   142     QCOMPARE(model.QObject::parent(), parent.data());
   164     QCOMPARE(model.QObject::parent(), parent.data());
   143     QVERIFY(model.getIconSize().isValid());
   165     QVERIFY(model.getIconSize().isValid());
   144 }
   166 }
   145 
   167 
   146 
   168 // ---------------------------------------------------------------------------
   147 
   169 //
       
   170 // ---------------------------------------------------------------------------
       
   171 //
   148 void MenuServiceTest::HsMenuCollectionsItemModel_getData()
   172 void MenuServiceTest::HsMenuCollectionsItemModel_getData()
   149 {
   173 {
   150     HsMenuCollectionsItemModel model(CaQuery(), this);
   174     HsMenuCollectionsItemModel model(CaQuery(), this);
   151     
   175     
   152     const QModelIndex index = model.index(0, 0);
   176     const QModelIndex index = model.index(0, 0);
   173     QCOMPARE(model.data(index, role), expectedData);
   197     QCOMPARE(model.data(index, role), expectedData);
   174 
   198 
   175     model.setSecondLineVisibility(false);
   199     model.setSecondLineVisibility(false);
   176     QCOMPARE(model.data(index), expectedData);
   200     QCOMPARE(model.data(index), expectedData);
   177 }
   201 }
   178 // ---------------------------------------------------------------------------
   202 
   179 // ---------------------------------------------------------------------------
   203 // ---------------------------------------------------------------------------
       
   204 //
       
   205 // ---------------------------------------------------------------------------
       
   206 //
   180 void MenuServiceTest::HsMenuCollectionsItemModel_getSecondLine()
   207 void MenuServiceTest::HsMenuCollectionsItemModel_getSecondLine()
   181 {    
   208 {    
   182     HsMenuCollectionsItemModel model(CaQuery(), this);
   209     HsMenuCollectionsItemModel model(CaQuery(), this);
   183     Qt::ItemDataRole role = Qt::DisplayRole;
   210     Qt::ItemDataRole role = Qt::DisplayRole;
   184     model.setSecondLineVisibility(true);
   211     model.setSecondLineVisibility(true);
   241     HsMenuItemModel model(CaQuery(), this);
   268     HsMenuItemModel model(CaQuery(), this);
   242     
   269     
   243     // set up mock data
   270     // set up mock data
   244     Qt::ItemDataRole role = Qt::DecorationRole;
   271     Qt::ItemDataRole role = Qt::DecorationRole;
   245     const QModelIndex index = model.index(0, 0);
   272     const QModelIndex index = model.index(0, 0);
   246     const QVariant expectedDecoration(QString("entryText"));
   273     const QVariant expectedDecoration = QVariant(HbIcon(Hs::newIconId));
   247     QList<QVariant> expectedResult;
       
   248     expectedResult << expectedDecoration;
       
   249     expectedResult << HbIcon(Hs::newIconId);
       
   250     model.mRootResult = index;
   274     model.mRootResult = index;
   251     model.mEntryResult->mFlagsResult = 0;
   275     model.mEntryResult->mFlagsResult = 0;
   252     model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
   276     model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
   253     model.setSecondLineVisibility(true);
   277     model.setSecondLineVisibility(true);
   254     model.mDataResult = QVariant(expectedDecoration);
   278     model.mDataResult = QVariant(expectedDecoration);
   255     model.mRowCountResult = 1; // i.e. how many rows the mock model pretends to have
   279     model.mRowCountResult = 1; // i.e. how many rows the mock model pretends to have
   256     QList<QVariant> actualResult = model.data(index, role).toList();
   280     QList<QVariant> actualResult = model.data(index, role).toList();
   257     model.mEntryResult->mMakeIconResult = HbIcon(Hs::newIconId);
   281     model.mEntryResult->mMakeIconResult = HbIcon(Hs::newIconId);
   258     
   282     
   259     // verify mock setup
   283     // verify mock setup
   260     QCOMPARE(actualResult.at(0).toString(), 
   284     QCOMPARE(model.mDataIndex,index);
   261         expectedDecoration.toString());
   285     QCOMPARE(model.mDataRole,(int)role);
   262     QCOMPARE(actualResult.at(1).value<HbIcon>().iconName(), 
   286     QCOMPARE(actualResult.empty(),false);
       
   287     QCOMPARE(actualResult.at(0).value<HbIcon>().iconName(), 
   263         QString(Hs::newIconId));
   288         QString(Hs::newIconId));
   264     QCOMPARE(model.data(index), model.mDataResult);
   289     QCOMPARE(model.data(index), model.mDataResult);
   265     
   290     
   266     // invoke icon preloader construction
   291     // invoke icon preloader construction
   267     model.preloadIcons();
   292     model.preloadIcons();
   287     HsMenuItemModel model(CaQuery(), this);
   312     HsMenuItemModel model(CaQuery(), this);
   288     
   313     
   289     // set up mock data
   314     // set up mock data
   290     Qt::ItemDataRole role = Qt::DecorationRole;
   315     Qt::ItemDataRole role = Qt::DecorationRole;
   291     const QModelIndex index = model.index(0, 0);
   316     const QModelIndex index = model.index(0, 0);
   292     const QVariant expectedDecoration(QString("entryText"));
   317     const QVariant expectedDecoration = QVariant(HbIcon(Hs::newIconId));
   293     QList<QVariant> expectedResult;
       
   294     expectedResult << expectedDecoration;
       
   295     expectedResult << HbIcon(Hs::newIconId);
       
   296     model.mRootResult = index;
   318     model.mRootResult = index;
   297     model.mEntryResult->mFlagsResult = 0;
   319     model.mEntryResult->mFlagsResult = 0;
   298     model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
   320     model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
   299     model.setSecondLineVisibility(true);
   321     model.setSecondLineVisibility(true);
   300     model.mDataResult = QVariant(expectedDecoration);
   322     model.mDataResult = QVariant(expectedDecoration);
   301     model.mRowCountResult = 1; // i.e. how many rows the mock model pretends to have
   323     model.mRowCountResult = 1; // i.e. how many rows the mock model pretends to have
   302     QList<QVariant> actualResult = model.data(index, role).toList();
   324     QList<QVariant> actualResult = model.data(index, role).toList();
   303     model.mEntryResult->mMakeIconResult = HbIcon(Hs::newIconId);
   325     model.mEntryResult->mMakeIconResult = HbIcon(Hs::newIconId);
   304     
   326 
   305     QCOMPARE(actualResult.at(0).toString(), 
   327     QCOMPARE(model.mDataIndex,index);
   306         expectedDecoration.toString());
   328     QCOMPARE(model.mDataRole,(int)role);
   307     QCOMPARE(actualResult.at(1).value<HbIcon>().iconName(), 
   329     QCOMPARE(actualResult.empty(),false);
       
   330     QCOMPARE(actualResult.at(0).value<HbIcon>().iconName(), 
   308         QString(Hs::newIconId));
   331         QString(Hs::newIconId));
   309     
   332     
   310     QCOMPARE(model.data(index), model.mDataResult);
   333     QCOMPARE(model.data(index), model.mDataResult);
   311     
   334     
   312     // test
   335     // test
   320     
   343     
   321     delete iconsIdleLoader;
   344     delete iconsIdleLoader;
   322 }
   345 }
   323 
   346 
   324 // ---------------------------------------------------------------------------
   347 // ---------------------------------------------------------------------------
   325 // ---------------------------------------------------------------------------
   348 //
       
   349 // ---------------------------------------------------------------------------
       
   350 //
   326 int MenuServiceTest::getId(HsMenuItemModel *model , int idx)
   351 int MenuServiceTest::getId(HsMenuItemModel *model , int idx)
   327 {
   352 {
   328     return model->data(model->index(idx), CaItemModel::IdRole).toInt();
   353     return model->data(model->index(idx), CaItemModel::IdRole).toInt();
   329 }
   354 }
   330 
   355