Update ooo320-m1
[ooovba.git] / testautomation / framework / optional / includes / f_usage_tracking.inc
blobba00b1c3e0ca80bb12a8ef910f740e8d17af583b
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     printlog( "Test case 1: Presence of the Usage Tracking featureset (API)" )
53     
54     if ( not gOOoImprovementIsEnabled ) then
55         warnlog( "Could not access API for usage tracking program" )
56     endif
57     
58 endcase
60 '*******************************************************************************
62 testcase tUsageTracking2
64     ' There must not be a log file to start with.
65     
66     printlog( "Test case 2: There must be no logfile present yet" )
67     
68     dim cLogFile as string
69         cLogFile = gOfficePath & LOGFILE
70         cLogFile = convertpath( cLogFile )
71         
72     if ( dir( cLogFile ) = "" ) then
73         printlog( "No log file. Good" )
74     else
75         warnlog( "Logfile not esxpected: " & cLogFile )
76         hDeleteFile( cLogFile )
77     endif
79 endcase
80    
81 '*******************************************************************************
82    
83 testcase tUsageTracking3
85     ' When the usage tracking mechanism is off we want the ui to reflect that.
87     printlog( "Test case 3: Presence of configuration tabpage and button states for disabled functionality" )
89     ToolsOptions
90     hToolsOptions( "StarOffice" , "IMPROVEMENT" )
91     
92     kontext "TabOOoImprovement"
93     if ( TabOOoImprovement.exists( 1 ) ) then
94     
95         if ( not ParticipateNo.isChecked() ) then
96             qaerrorlog( "#i98736# - UI should reflect current status for usage tracking: No" )
97         endif
98         
99         if ( ShowData.isEnabled() ) then
100             qaerrorlog( "#i97340# - Show data button should not be enabled if nothing is logged" )
101     
102             ShowData.click()
103             
104             kontext "Active"
105             if ( Active.exists( 2 ) ) then
106                 qaerrorlog( "Messagebox not required as control should not be enabled (see #i97340#)" )
107                 Active.ok()
108             
109                 kontext "TextImport"
110                 if ( TextImport.exists( 5 ) ) then
111                     warnlog( "There should be nothing to load if usage tracking is disabled" )
112                     
113                     TextImport.ok()
114                     
115                     kontext "CALC"
116                     if ( DocumentCalc.exists( 3 ) ) then
117                         hCloseDocument()
118                     else
119                         warnlog( "If a log exists it should open in a new Calc document" )
120                     endif
121                 endif
122             endif
123         endif
124     else
125         warnlog( "OOo Improvement Tabpage (Tools/Options) is missing" )
126     endif
127     
128     kontext "OptionenDlg"
129     OptionenDlg.cancel()
130     
131 endcase
133 '*******************************************************************************
135 testcase tUsageTracking4
137     ' When enabling usage tracking we want the mechanism to work at once
139     printlog( "Test case 4: Enable usage tracking, track something and display the log" )
140     
141     dim iDocumentType as integer
143     dim cLogFile as string
144         cLogFile = gOfficePath & LOGFILE
145         cLogFile = convertpath( cLogFile )
146         
147     dim lFileSize as long
148     
149     const FILE_SIZE = 2000
150     
151     hDeleteFile( cLogFile )
152     
153     ToolsOptions
154     
155     hToolsOptions( "StarOffice" , "IMPROVEMENT" )
156     
157     kontext "TabOOoImprovement"
158     if ( TabOOoImprovement.exists( 1 ) ) then
160         ParticipateYes.check()
161         
162         if ( hForceUsageTrackingOn() ) then
163         
164             kontext "OptionenDlg"
165             OptionenDlg.ok()
166            
167             ' Open different document types and modify them so something is logged
168             for iDocumentType = 1 to 4
169             
170                 hNumericDocType( iDocumentType )
171                 hNewDocument()
172                 hChangeDoc()
173                 hCloseDocument()
174                 
175             next iDocumentType 
176             
177             ToolsOptions
178             
179             hToolsOptions( "StarOffice" , "IMPROVEMENT" )
180             
181             kontext "TabOOoImprovement"
182             if ( TabOOoImprovement.exists( 1 ) ) then
183             
184                 lFileSize = hGetFileSizeAsLong( cLogFile )
185                 printlog( "Filesize is: " & lFileSize & " byte" )
186                 if ( lFileSize <> FILE_SIZE ) then
187                     warnlog( "The logfile does not have the expected size" )
188                     printlog( "Expected: " & FILE_SIZE )
189                     printlog( "Found...: " & lFileSize )
190                 endif
191                 
192                 ShowData.click()
193                 
194                 kontext "TextImport"
195                 if ( TextImport.exists( 3 ) ) then
196                 
197                     TextImport.ok()
198                     
199                     kontext "CALC"
200                     if ( DocumentCalc.exists( 3 ) ) then
201                         printlog( "Calc document is open" )
202                         if ( getDocumentCount <> 1 ) then
203                             warnlog( "Other, unexpected documents are open" )
204                         else
205                             hCloseDocument()
206                         endif
207                     else
208                         warnlog( "Logfile should open in a new spreadsheet document, document missing" )
209                     endif
210                     
211                 else
212                 
213                     warnlog( "Text Import (CSV) settings dialog did not open" )         
214                     
215                     kontext "Active"
216                     if ( Active.exists() ) then
217                         warnlog( "Unexpected messagebox" )
218                         printlog( Active.getText() )
219                         Active.ok()
220                     endif         
221                 endif
222                 
223                 kontext "TabOOoImprovement"
224                 ParticipateNo.click()
225                 
226                 kontext "Active"
227                 if ( Active.exists( 3 ) ) then
228                     Active.Yes()
229                 else
230                     qaerrorlog( "#i98739# - No delete option available when stopping usage tracking" )
231                 endif
232                 
233             endif
234         else
235             qaerrorlog( "#i98741# - Failed to force Usage Tracking on via API" )
236         endif
237             
238         kontext "OptionenDlg"
239         OptionenDlg.ok()
240         
241     endif
242     
243     hDeleteFile( cLogFile )
244              
245 endcase
247 '*******************************************************************************
249 function hForceUsageTrackingOn()
251     ' the usage tracking extension was disabled by force, in this function 
252     ' we force it back on as the switch in the UI is ignored
254     Dim oUnoOfficeConnection as object
255     Dim oUnoConfigurationAccess as object
256     Dim aPropertyValue(1) As new com.sun.star.beans.PropertyValue ' Array of pairs: Property with Value
257     Dim xViewRoot
258     
259     Dim oOOoImprovementController as object  ' Check presence of the OOo Improvement Program
260     
261     try
262         oUnoConfigurationAccess=oUnoOfficeConnection.createInstance("com.sun.star.configuration.ConfigurationProvider")
263         if (isNull(oUnoConfigurationAccess)) then       
264             warnlog (sFileFunction+"Couldn't create Configuration access")
265             exit function
266         endif
267         
268         aPropertyValue(0).Name="nodepath"
269         aPropertyValue(1).Name="lazywrite"
270         aPropertyValue(1).Value=False
272         oOOoImprovementController = oUnoOfficeConnection.createInstance( "com.sun.star.oooimprovement.CoreController" )
273         if ( isNull( oOOoImprovementController ) ) then
274             hForceUsageTrackingOn() = FALSE
275         else
276             aPropertyValue(0).Value="/org.openoffice.Office.Logging/OOoImprovement"
277             xViewRoot=oUnoConfigurationAccess.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess",aPropertyValue())
278             xViewRoot.replaceByName("EnablingAllowed", true )
279             xViewRoot.commitChanges()
280             if xViewRoot.hasPendingChanges() then
281                 qaErrorLog("Configuration not flushed: OOoImprovementProgram/InvitationAccepted: FALSE")
282             end if
283             xViewRoot.dispose()
284             hForceUsageTrackingOn() = TRUE
285         endif
287     catch
288         printlog( "Could not enable Usage Tracking via API" )
289     endcatch
291 end function