Branch 'kolab/integration/4.13.0' - 3 commits - akonadi/tagmodel_p.cpp kimap/getmetadatajob.cpp kimap/tests

Christian Mollekopf mollekopf at kolabsys.com
Fri Jun 6 10:14:56 CEST 2014


 akonadi/tagmodel_p.cpp             |    6 +
 kimap/getmetadatajob.cpp           |   26 +++---
 kimap/tests/getmetadatajobtest.cpp |  159 ++++++++++++++++++++++++++++++++++++-
 3 files changed, 175 insertions(+), 16 deletions(-)

New commits:
commit ee07ea51f538931d89d674cb29d578aa751e09e5
Author: Jonathan Marten <jjm at keelhaul.me.uk>
Date:   Tue May 13 11:24:41 2014 +0100

    Fix tag data not being updated by a TagModifyJob
    
    TagModelPrivate::monitoredTagChanged() is called as expected,
    but in the case where the tag is not being reparented (the
    usual case), the new tag is not copied back into the parent's
    mChildTags list.  This means that TagModel::data() still accesses
    the old tag via tagForIndex() and hence does not reflect the
    change.
    
    REVIEW:118103

diff --git a/akonadi/tagmodel_p.cpp b/akonadi/tagmodel_p.cpp
index 0f6d5bb..0f50f0f 100644
--- a/akonadi/tagmodel_p.cpp
+++ b/akonadi/tagmodel_p.cpp
@@ -190,6 +190,12 @@ void TagModelPrivate::monitoredTagChanged(const Tag &tag)
         newSiblings.append(tag);
         q->endMoveRows();
     } else {
+        Tag::List &children = mChildTags[oldParent];
+        const int sourcePos = children.indexOf(oldTag);
+        if (sourcePos != -1) {
+            children[sourcePos] = tag;
+        }
+
         const QModelIndex index = indexForTag(tag.id());
         q->dataChanged(index, index);
     }


commit e35db62bc4a05dfeb5848d26b51cfd9627fc27d3
Author: Sandro Knauß <mail at sandroknauss.de>
Date:   Mon May 12 16:54:31 2014 +0200

    Added tests for ANNOTATEMORE mode.
    
    REVIEW: 118100

diff --git a/kimap/getmetadatajob.cpp b/kimap/getmetadatajob.cpp
index 1cb4eb4..4cfc333 100644
--- a/kimap/getmetadatajob.cpp
+++ b/kimap/getmetadatajob.cpp
@@ -73,12 +73,9 @@ void GetMetaDataJob::doStart()
     }
     if ( d->entries.size() > 1 ) {
       parameters[parameters.length() - 1 ] = ')';
-    } else {
-      parameters.truncate( parameters.length() - 1 );
+      parameters += ' ';
     }
 
-    parameters += ' ';
-
     if ( d->attributes.size() > 1 ) {
       parameters += '(';
     }
diff --git a/kimap/tests/getmetadatajobtest.cpp b/kimap/tests/getmetadatajobtest.cpp
index 7a370e5..8abd464 100644
--- a/kimap/tests/getmetadatajobtest.cpp
+++ b/kimap/tests/getmetadatajobtest.cpp
@@ -295,6 +295,40 @@ void annotatemore()
   fakeServer.quit();
 }
 
+void testAnnotateEntires()
+{
+  FakeServer fakeServer;
+  QList<QByteArray> scenario;
+
+  scenario << FakeServer::preauth()
+    << "C: A000001 GETANNOTATION \"Folder1\""
+    << "S: A000001 OK annotations retrieved"
+    << "C: A000002 GETANNOTATION \"Folder1\" (\"/comment\" \"/motd\") (\"value.shared\" \"value.priv\")"
+    << "S: A000002 OK annotations retrieved";
+  fakeServer.setScenario( scenario );
+  fakeServer.startAndWait();
+
+  KIMAP::Session session(  "127.0.0.1", 5989 );
+
+  //C: A000001 GETANNOTATION "Folder1"
+  KIMAP::GetMetaDataJob *getMetadataJob = new KIMAP::GetMetaDataJob(  &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Annotatemore );
+  getMetadataJob->setMailBox( "Folder1" );
+  QVERIFY( getMetadataJob->exec() );
+
+  QCOMPARE( getMetadataJob->allMetaData( "Folder1" ).size(), 0 );
+
+  //C: A000002 GETANNOTATION "Folder1" ("/comment" "/motd") ("value.shared" "value.priv")
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Annotatemore );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->addRequestedEntry( "/shared/comment" );
+  getMetadataJob->addRequestedEntry( "/private/motd" );
+  QVERIFY( getMetadataJob->exec() );
+
+  QVERIFY(fakeServer.isAllScenarioDone());
+  fakeServer.quit();
+}
 
 };
 


commit 9b2d45e4cd0df047f521d82684e40833e0e19abe
Author: Sandro Knauß <mail at sandroknauss.de>
Date:   Mon May 12 16:39:50 2014 +0200

    Make GETMETADATA RFC 5464 compatiple.
    
    Adding tests to make sure that GETMETADATA is send in the correct form
    that is requested by RFC 5464.

diff --git a/kimap/getmetadatajob.cpp b/kimap/getmetadatajob.cpp
index 8c13fbb..1cb4eb4 100644
--- a/kimap/getmetadatajob.cpp
+++ b/kimap/getmetadatajob.cpp
@@ -92,14 +92,20 @@ void GetMetaDataJob::doStart()
     }
 
   } else {
+
+    QByteArray options;
     if ( d->depth != "0" ) {
-      parameters += "(DEPTH " + d->depth;
+      options = "DEPTH " + d->depth;
     }
     if ( d->maxSize != -1 ) {
-      parameters += "(MAXSIZE " + QByteArray::number( d->maxSize ) + ')';
+      if ( !options.isEmpty() ) {
+        options += ' ';
+      }
+      options += "MAXSIZE " + QByteArray::number( d->maxSize );
     }
-    if ( d->depth != "0" ) {
-      parameters += ") ";
+
+    if ( !options.isEmpty() ) {
+      parameters = "(" + options + ") " + parameters;
     }
 
     if ( d->entries.size() >= 1 ) {
@@ -108,14 +114,11 @@ void GetMetaDataJob::doStart()
         parameters += entry + " ";
       }
       parameters[parameters.length() - 1 ] = ')';
+    } else {
+      parameters.truncate( parameters.length() - 1 );
     }
   }
 
-  if ( d->entries.isEmpty() ) { {
-    parameters += ')';
-  }
-  }
-
   d->tags << d->sessionInternal()->sendCommand( command, parameters );
 //  kDebug() << "SENT: " << command << " " << parameters;
 }
diff --git a/kimap/tests/getmetadatajobtest.cpp b/kimap/tests/getmetadatajobtest.cpp
index 760aab3..7a370e5 100644
--- a/kimap/tests/getmetadatajobtest.cpp
+++ b/kimap/tests/getmetadatajobtest.cpp
@@ -44,7 +44,7 @@ void metadata_data()
     //FIXME requesting /shared and getting /private back doesn't make sense => fix scenario
     QList<QByteArray> scenario;
     scenario << FakeServer::preauth()
-            << "C: A000001 GETMETADATA \"Folder1\" (DEPTH infinity) (/shared)"
+            << "C: A000001 GETMETADATA (DEPTH infinity) \"Folder1\" (/shared)"
             << "S: * METADATA \"Folder1\" (/shared/comment \"Shared comment\")"
             << "S: * METADATA \"Folder1\" (/private/comment \"My own comment\")"
             << "S: A000001 OK GETMETADATA complete";
@@ -56,7 +56,7 @@ void metadata_data()
   {
     QList<QByteArray> scenario;
     scenario << FakeServer::preauth()
-            << "C: A000001 GETMETADATA \"Folder1\" (DEPTH infinity) (/shared)"
+            << "C: A000001 GETMETADATA (DEPTH infinity) \"Folder1\" (/shared)"
             << "S: * METADATA \"Folder1\" (/shared/comment \"Shared comment\" /private/comment \"My own comment\")"
             << "S: A000001 OK GETMETADATA complete";
     QMap<QByteArray, QByteArray> expected;
@@ -67,7 +67,7 @@ void metadata_data()
   {
     QList<QByteArray> scenario;
     scenario << FakeServer::preauth()
-            << "C: A000001 GETMETADATA \"Folder1\" (DEPTH infinity) (/shared)"
+            << "C: A000001 GETMETADATA (DEPTH infinity) \"Folder1\" (/shared)"
             << "S: * METADATA \"Folder1\" (/shared/comment \"NIL\" /private/comment \"NIL\")"
             << "S: A000001 OK GETMETADATA complete";
     QMap<QByteArray, QByteArray> expected;
@@ -109,6 +109,125 @@ void metadata()
   fakeServer.quit();
 }
 
+void testMetadataParameter()
+{
+  FakeServer fakeServer;
+  QList<QByteArray> scenario;
+
+  scenario << FakeServer::preauth()
+    << "C: A000001 GETMETADATA \"Folder1\" (/shared)"
+    << "S: A000001 OK GETMETADATA complete"
+    << "C: A000002 GETMETADATA (DEPTH 1) \"Folder1\" (/shared)"
+    << "S: A000002 OK GETMETADATA complete"
+    << "C: A000003 GETMETADATA (MAXSIZE 1234) \"Folder1\" (/shared)"
+    << "S: A000003 OK GETMETADATA complete"
+    << "C: A000004 GETMETADATA (DEPTH 1 MAXSIZE 1234) \"Folder1\" (/shared)"
+    << "S: A000004 OK GETMETADATA complete"
+    << "C: A000005 GETMETADATA (DEPTH 1 MAXSIZE 1234) \"Folder1\" (/shared /shared2)"
+    << "S: A000005 OK GETMETADATA complete"
+    << "C: A000006 GETMETADATA (DEPTH 1 MAXSIZE 1234) \"Folder1\""
+    << "S: A000006 OK GETMETADATA complete"
+    << "C: A000007 GETMETADATA (DEPTH 1) \"Folder1\""
+    << "S: A000007 OK GETMETADATA complete"
+    << "C: A000008 GETMETADATA (MAXSIZE 1234) \"Folder1\""
+    << "S: A000008 OK GETMETADATA complete"
+    << "C: A000009 GETMETADATA \"Folder1\""
+    << "S: A000009 OK GETMETADATA complete"
+    << "C: A000010 GETMETADATA \"\""
+    << "S: A000010 OK GETMETADATA complete";
+  fakeServer.setScenario( scenario );
+  fakeServer.startAndWait();
+
+  KIMAP::Session session(  "127.0.0.1", 5989 );
+
+  //C: A000001 GETMETADATA "Folder1" (/shared)
+  KIMAP::GetMetaDataJob *getMetadataJob = new KIMAP::GetMetaDataJob(  &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->addRequestedEntry( "/shared" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::NoDepth );
+  QVERIFY( getMetadataJob->exec() );
+
+  QCOMPARE( getMetadataJob->allMetaData( "Folder1" ).size(), 0 );
+
+  //C: A000002 GETMETADATA "Folder1" (DEPTH 1) (/shared)
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->addRequestedEntry( "/shared" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::OneLevel );
+  QVERIFY( getMetadataJob->exec() );
+
+  //C: A000003 GETMETADATA "Folder1" (MAXSIZE 1234) (/shared)
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->addRequestedEntry( "/shared" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::NoDepth );
+  getMetadataJob->setMaximumSize( 1234 );
+  QVERIFY( getMetadataJob->exec() );
+
+  //C: A000004 GETMETADATA "Folder1" (DEPTH 1) (MAXSIZE 1234) (/shared)
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->addRequestedEntry( "/shared" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::OneLevel );
+  getMetadataJob->setMaximumSize( 1234 );
+  QVERIFY( getMetadataJob->exec() );
+
+  //C: A000005 GETMETADATA "Folder1" (DEPTH 1) (MAXSIZE 1234) (/shared /shared2)
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->addRequestedEntry( "/shared" );
+  getMetadataJob->addRequestedEntry( "/shared2" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::OneLevel );
+  getMetadataJob->setMaximumSize( 1234 );
+  QVERIFY( getMetadataJob->exec() );
+
+  //C: A000006 GETMETADATA "Folder1" (DEPTH 1) (MAXSIZE 1234)
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::OneLevel );
+  getMetadataJob->setMaximumSize( 1234 );
+  QVERIFY( getMetadataJob->exec() );
+
+  //C: A000007 GETMETADATA "Folder1" (DEPTH 1)
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::OneLevel );
+  QVERIFY( getMetadataJob->exec() );
+
+  //C: A000008 GETMETADATA "Folder1" (MAXSIZE 1234)
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::NoDepth );
+  getMetadataJob->setMaximumSize( 1234 );
+  QVERIFY( getMetadataJob->exec() );
+
+  //C: A000009 GETMETADATA "Folder1"
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "Folder1" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::NoDepth );
+  QVERIFY( getMetadataJob->exec() );
+
+  //C: A000010 GETMETADATA ""
+  getMetadataJob = new KIMAP::GetMetaDataJob( &session );
+  getMetadataJob->setServerCapability( KIMAP::MetaDataJobBase::Metadata );
+  getMetadataJob->setMailBox( "" );
+  getMetadataJob->setDepth( KIMAP::GetMetaDataJob::NoDepth );
+  QVERIFY( getMetadataJob->exec() );
+
+  QVERIFY(fakeServer.isAllScenarioDone());
+  fakeServer.quit();
+}
+
+
 void annotatemore_data()
 {
   QTest::addColumn<QList<QByteArray> >( "scenario" );




More information about the commits mailing list