2020import os
2121from utilities import unitTestDataPath , getQgisTestApp
2222from PyQt4 .QtCore import QUrl , QString , qDebug
23+ from PyQt4 .QtXml import QDomDocument
2324from qgis .core import (QgsComposition ,
2425 QgsComposerHtml ,
2526 QgsComposerFrame ,
@@ -36,14 +37,10 @@ def setUp(self):
3637 """Run before each test."""
3738 self .mComposition = QgsComposition (None )
3839 self .mComposition .setPaperSize (297 , 210 ) #A4 landscape
39- self .mComposerHtml = QgsComposerHtml (self .mComposition , False )
4040
4141 def tearDown (self ):
4242 """Run after each test."""
4343 print "Tear down"
44- if self .mComposerHtml :
45- self .mComposition .removeMultiFrame (self .mComposerHtml )
46- del self .mComposerHtml
4744
4845 def controlImagePath (self , theImageName ):
4946 """Helper to get the path to a control image."""
@@ -62,11 +59,12 @@ def htmlUrl(self):
6259
6360 def testTable (self ):
6461 """Test we can render a html table in a single frame."""
62+ composerHtml = QgsComposerHtml (self .mComposition , False )
6563 htmlFrame = QgsComposerFrame (self .mComposition ,
66- self . mComposerHtml , 0 , 0 , 100 , 200 )
64+ composerHtml , 0 , 0 , 100 , 200 )
6765 htmlFrame .setFrameEnabled (True )
68- self . mComposerHtml .addFrame (htmlFrame )
69- self . mComposerHtml . setUrl (self .mComposerHtmlUrl ())
66+ composerHtml .addFrame (htmlFrame )
67+ composerHtml . setUrl (self .htmlUrl ())
7068 checker = QgsCompositionChecker ()
7169 myResult , myMessage = checker .testComposition (
7270 "Composer html table" ,
@@ -77,13 +75,14 @@ def testTable(self):
7775
7876 def testTableMultiFrame (self ):
7977 """Test we can render to multiframes."""
80- htmlFrame = QgsComposerFrame (self .mComposition , self .mComposerHtml ,
78+ composerHtml = QgsComposerHtml (self .mComposition , False )
79+ htmlFrame = QgsComposerFrame (self .mComposition , composerHtml ,
8180 10 , 10 , 100 , 50 )
82- self . mComposerHtml .addFrame (htmlFrame )
83- self . mComposerHtml .setResizeMode (
81+ composerHtml .addFrame (htmlFrame )
82+ composerHtml .setResizeMode (
8483 QgsComposerMultiFrame .RepeatUntilFinished )
85- self . mComposerHtml . setUrl (self .mComposerHtmlUrl ())
86- self . mComposerHtml .frame (0 ).setFrameEnabled (True )
84+ composerHtml . setUrl (self .htmlUrl ())
85+ composerHtml .frame (0 ).setFrameEnabled (True )
8786
8887 myPage = 0
8988 checker1 = QgsCompositionChecker ()
@@ -118,5 +117,22 @@ def testTableMultiFrame(self):
118117 print "Checking page 3"
119118 assert myResult , myMessage
120119
120+ def testComposerHtmlAccessor (self ):
121+ """Test that we can retrieve the ComposerHtml instance given an item.
122+ """
123+ myComposition = QgsComposition (CANVAS .mapRenderer ())
124+ mySubstitutionMap = {'replace-me' : 'Foo bar' }
125+ myFile = os .path .join (TEST_DATA_DIR , 'template.qpt' )
126+ myTemplateFile = file (myFile , 'rt' )
127+ myTemplateContent = myTemplateFile .read ()
128+ myTemplateFile .close ()
129+ myDocument = QDomDocument ()
130+ myDocument .setContent (myTemplateContent )
131+ myComposition .loadFromTemplate (myDocument , mySubstitutionMap )
132+ myItem = myComposition .getComposerItemById ('html-test' )
133+ myComposerHtml = myComposition .getComposerHtmlByItem (myItem )
134+ myMessage = 'Could not retrieve the composer html given an item'
135+ assert myComposerHtml is not None , myMessage
136+
121137if __name__ == '__main__' :
122138 unittest .main ()
0 commit comments