update dev300-m58
[ooovba.git] / testautomation / framework / optional / includes / f_usage_tracking.inc
blob3ba124cbd6de05ebb0b72ea56c40960576d042f7
1 'encoding UTF-8  Do not remove or change this line!
2 '*******************************************************************************
3 '* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 '* 
5 '* Copyright 2008 by Sun Microsystems, Inc.
6 '*
7 '* OpenOffice.org - a multi-platform office productivity suite
8 '*
9 '* $RCSfile: basic_delete_modules.inc,v $
11 '* $Revision: 1.1 $
13 '* last change: $Author: jsi $ $Date: 2008-06-16 12:18:13 $
15 '* This file is part of OpenOffice.org.
17 '* OpenOffice.org is free software: you can redistribute it and/or modify
18 '* it under the terms of the GNU Lesser General Public License version 3
19 '* only, as published by the Free Software Foundation.
21 '* OpenOffice.org is distributed in the hope that it will be useful,
22 '* but WITHOUT ANY WARRANTY; without even the implied warranty of
23 '* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 '* GNU Lesser General Public License version 3 for more details
25 '* (a copy is included in the LICENSE file that accompanied this code).
27 '* You should have received a copy of the GNU Lesser General Public License
28 '* version 3 along with OpenOffice.org.  If not, see
29 '* <http://www.openoffice.org/license.html>
30 '* for a copy of the LGPLv3 License.
32 '/******************************************************************************
34 '*  owner : joerg.skottke@sun.com
36 '*  short description : Usage tracking
38 '\******************************************************************************
40 ' Concept
41 ' The usage tracking functionality is disabled during test init.
42 ' Configuration is done in Tools/Options. There a tabpage must exist that
43 ' offers the functionality to enable/disable tracking and to show what has 
44 ' logged.
45     
46 private const LOGFILE = "user\temp\Feedback\Current.csv"
48 '*******************************************************************************
50 testcase tUsageTracking1
52     ' Here we just check that the functionality is present - the API call in 
53     ' master.inc does only print a qaerrorlog. Here it is a bug.
55     printlog( "Test case 1: Presence of the Usage Tracking featureset (API)" )
56     
57     if ( not gOOoImprovementIsEnabled ) then
58         warnlog( "Could not access API for usage tracking program" )
59     endif
60     
61 endcase
63 '*******************************************************************************
65 testcase tUsageTracking2
67     ' There must not be a log file to start with.
68     
69     printlog( "Test case 2: There must be no logfile present yet" )
70     
71     dim cLogFile as string
72         cLogFile = gOfficePath & LOGFILE
73         cLogFile = convertpath( cLogFile )
74         
75     if ( dir( cLogFile ) = "" ) then
76         printlog( "No log file. Good" )
77     else
78         warnlog( "Logfile not esxpected: " & cLogFile )
79         hDeleteFile( cLogFile )
80     endif
82 endcase
83    
84 '*******************************************************************************
85    
86 testcase tUsageTracking3
88     ' When the usage tracking mechanism is off we want the ui to reflect that.
90     printlog( "Test case 3: Presence of configuration tabpage and button states for disabled functionality" )
92     ToolsOptions
93     hToolsOptions( "StarOffice" , "IMPROVEMENT" )
94     
95     kontext "TabOOoImprovement"
96     if ( TabOOoImprovement.exists( 1 ) ) then
97     
98         if ( not ParticipateNo.isChecked() ) then
99             qaerrorlog( "#i98736# - UI should reflect current status for usage tracking: No" )
100         endif
101         
102         if ( ShowData.isEnabled() ) then
103             qaerrorlog( "#i97340# - Show data button should not be enabled if nothing is logged" )
104     
105             ShowData.click()
106             
107             kontext "Active"
108             if ( Active.exists( 2 ) ) then
109                 qaerrorlog( "Messagebox not required as control should not be enabled (see #i97340#)" )
110                 Active.ok()
111             
112                 kontext "TextImport"
113                 if ( TextImport.exists( 5 ) ) then
114                     warnlog( "There should be nothing to load if usage tracking is disabled" )
115                     
116                     TextImport.ok()
117                     
118                     kontext "CALC"
119                     if ( DocumentCalc.exists( 3 ) ) then
120                         hCloseDocument()
121                     else
122                         warnlog( "If a log exists it should open in a new Calc document" )
123                     endif
124                 endif
125             endif
126         endif
127     else
128         warnlog( "OOo Improvement Tabpage (Tools/Options) is missing" )
129     endif
130     
131     kontext "OptionenDlg"
132     OptionenDlg.cancel()
133     
134 endcase
136 '*******************************************************************************
138 testcase tUsageTracking4
140     ' When enabling usage tracking we want the mechanism to work at once
142     printlog( "Test case 4: Enable usage tracking, track something and display the log" )
143     
144     dim iDocumentType as integer
146     dim cLogFile as string
147         cLogFile = gOfficePath & LOGFILE
148         cLogFile = convertpath( cLogFile )
149         
150     dim lFileSize as long
151     
152     const FILE_SIZE = 2000
153     
154     hDeleteFile( cLogFile )
155     
156     ToolsOptions
157     
158     hToolsOptions( "StarOffice" , "IMPROVEMENT" )
159     
160     kontext "TabOOoImprovement"
161     if ( TabOOoImprovement.exists( 1 ) ) then
163         ParticipateYes.check()
164         
165         if ( hForceUsageTrackingOn() ) then
166         
167             kontext "OptionenDlg"
168             OptionenDlg.ok()
169            
170             ' Open different document types and modify them so something is logged
171             for iDocumentType = 1 to 4
172             
173                 hNumericDocType( iDocumentType )
174                 hNewDocument()
175                 hChangeDoc()
176                 hCloseDocument()
177                 
178             next iDocumentType 
179             
180             ToolsOptions
181             
182             hToolsOptions( "StarOffice" , "IMPROVEMENT" )
183             
184             kontext "TabOOoImprovement"
185             if ( TabOOoImprovement.exists( 1 ) ) then
186             
187                 lFileSize = hGetFileSizeAsLong( cLogFile )
188                 printlog( "Filesize is: " & lFileSize & " byte" )
189                 if ( lFileSize <> FILE_SIZE ) then
190                     warnlog( "The logfile does not have the expected size" )
191                     printlog( "Expected: " & FILE_SIZE )
192                     printlog( "Found...: " & lFileSize )
193                 endif
194                 
195                 ShowData.click()
196                 
197                 kontext "TextImport"
198                 if ( TextImport.exists( 3 ) ) then
199                 
200                     TextImport.ok()
201                     
202                     kontext "CALC"
203                     if ( DocumentCalc.exists( 3 ) ) then
204                         printlog( "Calc document is open" )
205                         if ( getDocumentCount <> 1 ) then
206                             warnlog( "Other, unexpected documents are open" )
207                         else
208                             hCloseDocument()
209                         endif
210                     else
211                         warnlog( "Logfile should open in a new spreadsheet document, document missing" )
212                     endif
213                     
214                 else
215                 
216                     warnlog( "Text Import (CSV) settings dialog did not open" )         
217                     
218                     kontext "Active"
219                     if ( Active.exists() ) then
220                         warnlog( "Unexpected messagebox" )
221                         printlog( Active.getText() )
222                         Active.ok()
223                     endif         
224                 endif
225                 
226                 kontext "TabOOoImprovement"
227                 ParticipateNo.click()
228                 
229                 kontext "Active"
230                 if ( Active.exists( 3 ) ) then
231                     Active.Yes()
232                 else
233                     qaerrorlog( "#i98739# - No delete option available when stopping usage tracking" )
234                 endif
235                 
236             endif
237         else
238             qaerrorlog( "#i98741# - Failed to force Usage Tracking on via API" )
239         endif
240             
241         kontext "OptionenDlg"
242         OptionenDlg.ok()
243         
244     endif
245     
246     hDeleteFile( cLogFile )
247              
248 endcase
250 '*******************************************************************************
252 function hForceUsageTrackingOn()
254     ' the usage tracking extension was disabled by force, in this function 
255     ' we force it back on as the switch in the UI is ignored
257     Dim oUnoOfficeConnection as object
258     Dim oUnoConfigurationAccess as object
259     Dim aPropertyValue(1) As new com.sun.star.beans.PropertyValue ' Array of pairs: Property with Value
260     Dim xViewRoot
261     
262     Dim oOOoImprovementController as object  ' Check presence of the OOo Improvement Program
263     
264     try
265         oUnoConfigurationAccess=oUnoOfficeConnection.createInstance("com.sun.star.configuration.ConfigurationProvider")
266         if (isNull(oUnoConfigurationAccess)) then       
267             warnlog (sFileFunction+"Couldn't create Configuration access")
268             exit function
269         endif
270         
271         aPropertyValue(0).Name="nodepath"
272         aPropertyValue(1).Name="lazywrite"
273         aPropertyValue(1).Value=False
275         oOOoImprovementController = oUnoOfficeConnection.createInstance( "com.sun.star.oooimprovement.CoreController" )
276         if ( isNull( oOOoImprovementController ) ) then
277             hForceUsageTrackingOn() = FALSE
278         else
279             aPropertyValue(0).Value="/org.openoffice.Office.Logging/OOoImprovement"
280             xViewRoot=oUnoConfigurationAccess.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess",aPropertyValue())
281             xViewRoot.replaceByName("EnablingAllowed", true )
282             xViewRoot.commitChanges()
283             if xViewRoot.hasPendingChanges() then
284                 qaErrorLog("Configuration not flushed: OOoImprovementProgram/InvitationAccepted: FALSE")
285             end if
286             xViewRoot.dispose()
287             hForceUsageTrackingOn() = TRUE
288         endif
290     catch
291         printlog( "Could not enable Usage Tracking via API" )
292     endcatch
294 end function