この回答はtests for resources in Products.CMFPloneにあると思われます。
具体的には、そのファイル内のテストケースでそうのような登録バンドルおよびリソースにアクセスするための構成レジストリを使用するテストの数があります。
from Products.CMFPlone.interfaces import IBundleRegistry
from Products.CMFPlone.interfaces import IResourceRegistry
from plone.registry.interfaces import IRegistry
from zope.component import getUtility
resources = getUtility(IRegistry).collectionOfInterface(
IResourceRegistry, prefix="plone.resources"
)
bundles = getUtility(IRegistry).collectionOfInterface(
IBundleRegistry, prefix="plone.bundles"
)
これらの呼び出しの戻り値は、辞書のようですが、オブジェクトには、registry.xml
汎用セットアップのインポート手順を使用して登録されたバンドルまたはリソースの構成レジストリエントリへのポインタが含まれています。
次のXMLを使用して、製品にバンドルを登録しているのであれば、例えば、:
<records prefix="plone.bundles/my-product"
interface='Products.CMFPlone.interfaces.IBundleRegistry'>
<value key="resources">
<element>my-resource</element>
</value>
<value key="enabled">True</value>
<value key="jscompilation">++plone++static/my-compiled.js</value>
<value key="csscompilation">++plone++static/my-compiled.css</value>
<value key="last_compilation">2014-08-14 00:00:00</value>
</records>
その後、上記のリソースレジストリによって返さbundles
に、あなたはその一部を使用することができるだろうそのようなあなたのバンドルのレジストリレコードプロキシを検索するスラッシュ次バンドルの「接頭辞」('my-product'
):
my_bundle = bundles['my-product']
レコードは、バンドルの定義されたインタフェースへの属性アクセスを提供すること(を参照してください詳細はを参照してください)。
assert my_bundle.jscompilation == '++plone++static/my-compiled.js'
assert my_bundle.csscompilation == '++plone++static/my-compiled.css'
レコード登録されたリソースのための一部に対応するキーと同じように、辞書のようなオブジェクトを動作します:だからあなたはそれがコンパイルされたJSやCSSに設定された正しい値を持っていることを確認することができるはずですあなたのリソース登録の "接頭辞"はスラッシュの後にregistry.xml
にあります。その場合に返されたレコードは、代わりにProducts.CMFPlone.interfaces.resources.IResourceRegistryをサポートします。しかし、属性アクセスを使用して、期待どおりの値が正しく登録されていることを確認することはできます。
あなたは(jsregistry.xml
またはcssregistry.xml
汎用的な設定のインポート手順を使用して)非推奨portal_javascript
またはportal_css
ツールを使用して登録されたリソースを持っている場合は、それらを見つけるための鍵は、Ploneのは今自動的にplone-legacy
と呼ばれる特殊なバンドルにそのようなリソースが含まれることです。バンドルは、そのバンドルに含まれたリソースのリストを提供しresources
属性を持っているので、あなたはこのような何かを行うことができるはず:これの
bundles = getUtility(IRegistry).collectionOfInterface(
IBundleRegistry, prefix="plone.bundles"
)
legacy_bundle = bundles['plone-legacy']
assert "my-oldskool.js" in legacy_bundle.resources
例もtests for resources in Products.CMFPloneで見つけることができます。特に、TestResourceNodeImporter
のテストケース。このタスクと提案された解決策は、コードの10の以上の行を追加しますを達成する簡単な方法がないため
:[リンク](https://pypi.python.org/pypi/plone。レジストリ#アクセスと操作レコード値)が、私はあなたがテストでこれを行う方法を知っていません。 – 1letter