void KMimeTypeTest::testMimeTypeTraderForDerivedMimeType() { if (!KSycoca::isAvailable()) { QSKIP("ksycoca not available"); } // Querying mimetype trader for services associated with text/x-patch, which inherits from text/plain KService::List offers = KMimeTypeTrader::self()->query("text/x-patch", "KParts/ReadOnlyPart"); QVERIFY(offerListHasService(offers, "fakepatchpart.desktop")); QVERIFY(offerListHasService(offers, "faketextpart.desktop")); QVERIFY((*offers.begin())->entryPath() != "faketextpart.desktop"); // in the list, but not preferred offers = KMimeTypeTrader::self()->query("text/x-patch", "KPluginInfo"); QVERIFY(offers.count() > 0); // We should have at least the fake text plugin that we created for this. // (The actual plugins from kdelibs don't mention text/plain anymore) QVERIFY(offerListHasService(offers, "faketextplugin.desktop")); offers = KMimeTypeTrader::self()->query("text/x-patch", "Application"); QVERIFY(!offerListHasService(offers, "faketextpart.desktop")); // We shouldn't have non-kde apps Q_FOREACH (KService::Ptr service, offers) { kDebug() << service->name() << service->entryPath(); } QVERIFY(!offerListHasService(offers, m_nonKdeApp)); }
void KMimeTypeTest::testMimeTypeTraderForAlias() { if ( !KSycoca::isAvailable() ) QSKIP( "ksycoca not available", SkipAll ); const KService::List referenceOffers = KMimeTypeTrader::self()->query("application/xml", "KParts/ReadOnlyPart"); QVERIFY( offerListHasService( referenceOffers, "katepart.desktop" ) ); // Querying mimetype trader for services associated with text/xml, which is an alias for application/xml const KService::List offers = KMimeTypeTrader::self()->query("text/xml", "KParts/ReadOnlyPart"); QVERIFY( offerListHasService( offers, "katepart.desktop" ) ); QCOMPARE(offers.count(), referenceOffers.count()); }
void KMimeTypeTest::testMimeTypeTraderForTextPlain() { if ( !KSycoca::isAvailable() ) QSKIP( "ksycoca not available", SkipAll ); // Querying mimetype trader for services associated with text/plain KService::List offers = KMimeTypeTrader::self()->query("text/plain", "KParts/ReadOnlyPart"); QVERIFY( offerListHasService( offers, "katepart.desktop" ) ); QVERIFY( offerListHasService( offers, "faketextpart.desktop" ) ); offers = KMimeTypeTrader::self()->query("text/plain", "KTextEditor/Plugin"); QVERIFY( offers.count() > 0 ); // We should have at least the fake text plugin that we created for this. // (The actual plugins from kdelibs don't mention text/plain anymore) QVERIFY( offerListHasService( offers, "faketextplugin.desktop" ) ); // We shouldn't have non-plugins QVERIFY( !offerListHasService( offers, "katepart.desktop" ) ); }