--- a/calendarwidgetplugin/tsrc/matti_testcases/Calendar_widget_tests.rb Wed Aug 18 09:37:48 2010 +0300
+++ b/calendarwidgetplugin/tsrc/matti_testcases/Calendar_widget_tests.rb Thu Sep 02 20:15:01 2010 +0300
@@ -26,29 +26,17 @@
include MattiVerify
@@z_index = ""
+
Parameter.instance.load_parameters_xml(File.expand_path(File.dirname(__FILE__)) + '/testdata/calendar_widget_test_script_parameters.xml')
class TestClassCalendarWidget < Test::Unit::TestCase
-
-
-## def initialize (args)
-## super(args)
-## @sut = MATTI.sut(:Id => 'sut_s60_qt')
-## #@sut = MATTI.sut(:Id => 's60')
-## begin
-## #check_phone_date
-## #check_phone_time
-## #if @sut.application.test_object_exists?("HbTextItem", {:text => 'Continue', :__timeout => 2})
-## # @sut.application( :name => 'ftulanguage' ).HbTextItem(:text => 'Continue').tap
-## #end
-## #@sut.press_key(:kEnd)
-## @sut.application( :name => 'qttasserver' ).press_key(:kApp)
-## rescue Exception => ex
-## puts "INITIALIZE FAILED. ERROR:"
-## puts ex.message
-## puts "*************************"
-## end
-## end
+
+ @HS_count = 0
+ @day = 0
+ @month = 0
+ @year = 0
+ @hourformat_12 = true
+
def initialize (args)
super(args)
# MANDATORY DEFINITION: Define device "suts" which are used in testing, remember defined [ut] name in matti_parameters.xml
@@ -86,11 +74,20 @@
puts "*************************"
end
end
- #@real_phone_number = "02722990"
+ #app = @sut.application(:name => 'hsapplication')
+ #identificator = TestObjectIdentificator.new(:type => :HsPageVisual)
+ #xml = app.HsIdleWidget.HbWidget( :__index =>2 ).xml_data
+ #element_set = xml.xpath( xpath = identificator.get_xpath_to_identify( xml ) )
+ #@HS_count = element_set.size
+ @HS_count = 4
+ @hourformat_12 = true
+ #puts "initialize @hourformat_12 = " + @hourformat_12.to_s
+ #puts "initialize @HS_count = " + @HS_count.to_s
+ #@HS_count = 0
#@widget_name = "Contact widget."
#@@contact_array = Array.new()
end
-
+
def teardown
puts "teardown actions"
begin
@@ -99,10 +96,7 @@
app_name = (app_name == 'tsapplication') ? 'hsapplication' : app_name
if @sut.application(:name => app_name).test_object_exists?("HbIconItem", {:iconName => 'qtg_mono_applications_all', :__timeout => 2})
navigate_to_first_homescreen
- if @sut.application(:name => app_name).test_object_exists?("HbWidget",{:name => 'CalendarWidget'}) then
- remove_calendar_widget_from_homescreen(0)
- end
- delete_calendar_events(@sut.application(:name => app_name))
+ delete_calendar_events_via_UI
else
app = @sut.application.executable_name
app_name = app.split(".exe")[0].to_s
@@ -129,10 +123,7 @@
app_name = app.split(".exe")[0].to_s
app_name = (app_name == 'tsapplication') ? 'hsapplication' : app_name
navigate_to_first_homescreen
- if @sut.application(:name => app_name).test_object_exists?("HbWidget",{:name => 'CalendarWidget'}) then
- remove_calendar_widget_from_homescreen(0)
- end
- delete_calendar_events(@sut.application(:name => app_name))
+ delete_calendar_events_via_UI
end
rescue Exception => ex
puts "TEARDOWN FAILED. ERROR:"
@@ -148,12 +139,8 @@
puts "Reboot is done!!"
app_name = @sut.application.executable_name.split(".exe")[0].to_s
puts "Application on the screen is " + app_name
- #lets see that there is not any calendar widget on the homescreen
navigate_to_first_homescreen
- if @sut.application(:name => app_name).test_object_exists?("HbWidget",{:name => 'CalendarWidget'}) then
- remove_calendar_widget_from_homescreen(0)
- end
- delete_calendar_events(@sut.application(:name => app_name))
+ delete_calendar_events_via_UI
end
rescue Exception => e
puts "TEARDOWN BEGIN-RESCUE FAILED. ERROR:"
@@ -161,22 +148,30 @@
puts "*************************"
end
end
- #begin
- # navigate_to_first_homescreen
- # if @sut.application(:name => 'hsapplication').test_object_exists?("HbWidget",{:name => 'CalendarWidget'}) then
- # remove_calendar_widget_from_homescreen
- # end
- #rescue
- #end
- #delete_calendar_events(@sut.application(:name => 'hsapplication'))
end # teardown
+ ########################################################################################################################################
+ #
+ # add_calendar_widget_to_homescreen
+ #
+ # description:
+ # This function adds calendar widget to Home screen via application list
+ #
+ # preconditions:
+ #
+ # parameters:
+ #
+ #
+ # created: Jarno Mäkelä
+ # creation date: 18-May-2010
+ #
+ ########################################################################################################################################
+
def add_calendar_widget_to_homescreen(app, browse_to_list)
#selects calendar widget from applications-menu and adds it to home screen
#Lets calculate, how many application list items there is seen
-
identificator = TestObjectIdentificator.new(:type => :HsListViewItem)
- xml = app.HbListView( :name => 'allAppsListView' ).xml_data
+ xml = app.HbListView( :name => 'listView' ).xml_data
element_set = xml.xpath( xpath = identificator.get_xpath_to_identify( xml ) )
item_count = element_set.size
#puts "item_count = ",item_count
@@ -184,9 +179,6 @@
#lets check if calendar widget is visible on display. If not, we flick until we get it visible
while item_index < item_count
if app.test_object_exists?("HbTextItem",{:text => 'CalendarWidget',:visibleOnScreen => 'true'}) then
- #app.HbTextItem(:__index => item_index-1).tap_down
- #app.HbTextItem(:__index => item_index-1).flick(:Up)
- #app.HbListViewItem(:text => 'Bedrock').gesture(:Up,1,450,:Left,true)
if browse_to_list == 'longpressHS' then
app.HbTextItem(:text => 'CalendarWidget').tap
else
@@ -196,8 +188,6 @@
end
break
else
- #app.HbTextItem(:__index => item_index-1).tap_down
- #app.HbListViewItem(:__index => item_index-1).flick(:Up)
app.HsListViewItem(:__index => item_index-1).gesture(:Up,1,550,{:Left,true})
end
item_index +=2
@@ -211,224 +201,9 @@
end
end
- if browse_to_list != 'longpressHS' then
- app.HbIconItem(:iconName => 'qtg_mono_back').tap
- end
- #verify, that there exists calendar widget in homescreen
- #verify(){app.HbWidget( :name => 'CalendarWidget' )}
- end
-
- ########################################################################################################################################
- #
- # remove_calendar_widget_from_homescreen
- #
- # description:
- # This function emoves calendar widget from homescreen
- #
- # preconditions:
- # -Phone is in homescreen and there is calendar widget in HS
- # parameters:
- # hs_pagenumber: Number of the homescreen page (0, 1 or 2)
- #
- # created: Jarno Mäkelä
- # creation date: 17-May-2010
- #
- ########################################################################################################################################
-
- def remove_calendar_widget_from_homescreen(hs_pagenumber)
- app = @sut.application(:name => 'hsapplication')
- #verify(){@sut.application.HbIconItem(:iconName => 'hs_applib_button.png')}
- #verify(){app.HbWidget( :name => 'CalendarWidget' )}
- #find correct widget host object
- calendar_widget_object = app.HsPage(:__index => hs_pagenumber).find(:name => 'CalendarWidget')
- #app.HsPage(:__index => hs_pagenumber).HsWidgetHost.HsCalendarWidget.HbWidget( :name => 'CalendarWidget' ).tap_down
- calendar_widget_object.tap_down
- #app.HbWidget( :name => 'controlLayer' ).HsWidgetHost.HbWidget( :name => 'CalendarWidget' ).tap_down
- #app.HbWidget( :name => 'controlLayer' ).HsWidgetHost.HbWidget( :name => 'CalendarWidget' ).drag_to_object(app.HsTrashBinWidget( :name => 'trashBin' ))
- calendar_widget_object = app.HbWidget( :name => 'controlLayer' ).find(:name => 'CalendarWidget')
- calendar_widget_object.drag_to_object(app.HsTrashBinWidget( :name => 'trashBin' ))
- end
-
- ########################################################################################################################################
- #
- # create_calendar_event
- #
- # description:
- # This function creates calendar event via fixture
- #
- # preconditions:
- #
- # parameters:
- # -subject: subject of the meeting
- # -start_day: start day of the meeting
- # -start_month: start month of the meeting
- # -start_year: start year of the meeting
- # -start_hour: start hour of the meeting
- # -start_minute: start minute of the meeting
- # -duration_days: duration of the days, that meeting is lasting
- # -duration_hours: duration of the hours, that meeting is lasting
- # -duration_minutes: duration of the minutes, that meeting is lasting
- #
- # return value:
- # -time_to_verify: time, that is supposed to be in the calendar widget (Format: hh:mm-hh:mm or hh:mm (am/pm)-hh:mm (am/pm))
- #
- # created: Jarno Mäkelä
- # creation date: 17-May-2010
- #
- ########################################################################################################################################
-
- def create_calendar_event(app, subject,start_day, start_month, start_year, start_hour, start_minute, duration_days, duration_hours, duration_minutes)
- #Creates calendar event
- #let's calculate the real values of start date. In parameters, eg. the day value can exceed 31, so we need to change month and set day
- #to 1. Same calculation needed for other parameter values
- start_date = calculate_date(start_day, start_month, start_year, start_hour, start_minute)
- puts "start_date:",start_date.to_s
- start_time_split = (start_date.to_s).split
- start_time = start_time_split[1]
- start_time_to_verify = start_time[0..4]
- puts "start_time_to_verify:",start_time_to_verify
- end_date = calculate_date(start_day+duration_days, start_month, start_year, start_hour+duration_hours, start_minute+duration_minutes)
- puts "end_date:",end_date.to_s
- end_time_split = (end_date.to_s).split
- end_time = end_time_split[1]
- end_time_to_verify = end_time[0..4]
- puts "end_time_to_verify:",end_time_to_verify
- if @hourformat_12 == true then
- #12 hour time used
- time_to_verify = convert_time_to_12hour_format(start_time_to_verify)+'-'+convert_time_to_12hour_format(end_time_to_verify)
- else
- #24 hour time used
- time_to_verify = start_time_to_verify+'-'+end_time_to_verify
- end
- tmp_id = app.id
- tmp = @sut.execution_order
- @sut.execution_order = ['S60']
- app.apply_behaviour!( :name => 'S60Fixture' )
- app.set_application_id(app.attribute('applicationUid'));
- response = app.fixture('tapi_calendar_fixture', 'add_meeting', {:description => subject, :start_date => start_date, :end_date => end_date})
- @sut.execution_order = tmp
- app.apply_behaviour!( :name => 'QtFixture' )
- app.set_application_id(tmp_id)
- response
- #let's put date if event is in other future day than today
- if start_day > @day.to_i then
- start_date = start_time_split[0]
- month_text = case start_date[3..4]
- when "01" then "Jan"
- when "02" then "Feb"
- when "03" then "Mar"
- when "04" then "Apr"
- when "05" then "May"
- when "06" then "Jun"
- when "07" then "Jul"
- when "08" then "Aug"
- when "09" then "Sep"
- when "10" then "Oct"
- when "11" then "Nov"
- when "12" then "Dec"
- end
- puts "time_to_verify:", start_date[0..1]+' '+month_text+' '+time_to_verify
- return start_date[0..1]+' '+month_text+' '+time_to_verify
- else
- puts "time_to_verify:", time_to_verify
- return time_to_verify
- end
- #sut = MATTI.sut(:Id => 's60')
- #app = sut.run(:name => "HtiAdmin.exe")
- #app.fixture('tapi_calendar_fixture', 'add_meeting', {:description => subject, :start_date => '17-05-2010 15:00:00', :end_date => '17-05-2010 16:00:00'})
- #app.fixture('tapi_calendar_fixture', 'add_meeting', {:description => subject, :start_date => start_date, :end_date => end_date})
- #app.close()
- end
-
- ########################################################################################################################################
- #
- # convert_time_to_12hour_format
- #
- # description:
- # This function converts 24 hour time to 12 hour time format
- #
- # preconditions:
- #
- # parameters:
- # -conv_timestr: time string that is needed to convert
- #
- # return value:
- # correctly converted time string
- #
- # created: Jarno Mäkelä
- # creation date: 25-May-2010
- #
- ########################################################################################################################################
-
- def convert_time_to_12hour_format(conv_timestr)
- #let's first check the hour
- hour = conv_timestr[0..1].to_i
- #puts "hour:", hour
- if hour >= 12 then
- if hour == 12 then
- return hour.to_s+':'+conv_timestr[3..4]+' pm'
- else
- hour = hour -12
- if hour < 10 then
- return '0'+hour.to_s+':'+conv_timestr[3..4]+' pm'
- else
- return hour.to_s+':'+conv_timestr[3..4]+' pm'
- end
- end
- else
- if hour == 0 then
- hour = 12
- return hour.to_s+':'+conv_timestr[3..4]+' am'
- elsif hour < 10 then
- return '0'+hour.to_s+':'+conv_timestr[3..4]+' am'
- else
- return hour.to_s+':'+conv_timestr[3..4]+' am'
- end
- end
- end
-
- ########################################################################################################################################
- #
- # delete_calendar_events
- #
- # description:
- # This function deletes all calendar events via fixture
- #
- # preconditions:
- #
- # parameters:
- # -app: application needed
- #
- # created: Jarno Mäkelä
- # creation date: 19-May-2010
- #
- ########################################################################################################################################
-
- def delete_calendar_events(app)
- tmp_id = app.id
- tmp = @sut.execution_order
- @sut.execution_order = ['S60']
- app.apply_behaviour!( :name => 'S60Fixture' )
- app.set_application_id(app.attribute('applicationUid'));
- response = app.fixture('tapi_calendar_fixture', 'delete_all', {})
- @sut.execution_order = tmp
- app.apply_behaviour!( :name => 'QtFixture' )
- app.set_application_id(tmp_id)
- response
- end
-
- def create_calendar_event_via_calendar(subject)
- #Creates calendar event
- cal_app = @sut.run(:name => "calendar.exe")
- cal_app.HbIconItem(:iconName => 'qtg_mono_options_menu').tap
- cal_app.HbTextItem(:text => 'New event')
- #Add the subject
- cal_app.HbDataFormViewItem(:__index =>0).HbWidget.tap
- cal_app.HbDataFormViewItem(:__index =>0).HbWidget.type_text(subject)
- cal_app.HbTextItem(:text => 'Subject').tap
- #Add start time
- cal_app.CalenEditorCustomItem(:__index=>0).HbWidget.HbPushButton(:__index=>0).tap
-
+ #if browse_to_list != 'longpressHS' then
+ # app.HbIconItem(:iconName => 'qtg_mono_back').tap
+ #end
end
########################################################################################################################################
@@ -456,19 +231,10 @@
puts "date is: ",date
#parse day,month and year
@day = date[4..5]
- #@day = (date.day).to_s
- #if @day.to_i < 10 then
- #@day = '0'+ (date.day).to_s
- #end
puts "day:", @day
@month = date[7..8]
- #@month = (date.month).to_s
- #if @month.to_i < 10 then
- # @month = '0'+ (date.month).to_s
- #end
puts "month:", @month
@year = date[10..13]
- #@year = (date.year).to_s
puts "year:",@year
clock_app.close
end
@@ -588,13 +354,57 @@
else
returnhour = hour.to_s
end
-
return returnday,'-',returnmonth,'-',year.to_s,' ',returnhour,':',returnminute,':00'
-
end
########################################################################################################################################
#
+ # convert_time_to_12hour_format
+ #
+ # description:
+ # This function converts 24 hour time to 12 hour time format
+ #
+ # preconditions:
+ #
+ # parameters:
+ # -conv_timestr: time string that is needed to convert
+ #
+ # return value:
+ # correctly converted time string
+ #
+ # created: Jarno Mäkelä
+ # creation date: 25-May-2010
+ #
+ ########################################################################################################################################
+
+ def convert_time_to_12hour_format(conv_timestr)
+ hour = conv_timestr[0..1].to_i
+ #puts "hour:", hour
+ if hour >= 12 then
+ if hour == 12 then
+ return hour.to_s+':'+conv_timestr[3..4]+' pm'
+ else
+ hour = hour -12
+ if hour < 10 then
+ return '0'+hour.to_s+':'+conv_timestr[3..4]+' pm'
+ else
+ return hour.to_s+':'+conv_timestr[3..4]+' pm'
+ end
+ end
+ else
+ if hour == 0 then
+ hour = 12
+ return hour.to_s+':'+conv_timestr[3..4]+' am'
+ elsif hour < 10 then
+ return '0'+hour.to_s+':'+conv_timestr[3..4]+' am'
+ else
+ return hour.to_s+':'+conv_timestr[3..4]+' am'
+ end
+ end
+ end
+
+ ########################################################################################################################################
+ #
# navigate_to_first_homescreen
#
# description:
@@ -612,28 +422,414 @@
def navigate_to_first_homescreen
app = @sut.application(:name => 'hsapplication')
- if app.HsPageIndicatorItem(:__index =>0).test_object_exists?("HbIconItem",{:iconName => 'qtg_graf_hspage_highlight'}) then
- page = 1
- elsif app.HsPageIndicatorItem(:__index =>1).test_object_exists?("HbIconItem",{:iconName => 'qtg_graf_hspage_highlight'}) then
- page = 2
- app.HsPageIndicatorItem(:__index =>1).gesture(:Right,1,170)
- if app.HsPageIndicatorItem(:__index =>0).test_object_exists?("HbIconItem",{:iconName => 'qtg_graf_hspage_highlight'}) then
- page = 1
- else
- raise VerificationError ,"ERROR: Cannot go to first home screen", caller
+ #Check, which HS we are
+ for i in 0..(@HS_count-1)
+ if(app.HsIdleWidget.HbWidget( :name => 'controlLayer' ).HsPageIndicator( :name => 'pageIndicator' ).HsPageIndicatorItem(:__index =>i).test_object_exists?("HbIconItem",{:iconName => 'qtg_graf_hspage_highlight'})) then
+ puts "we are in HS " + (i+1).to_s
+ current_HS_location = i
+ break
end
- else
- page = 3
- app.HsPageIndicatorItem(:__index =>1).gesture(:Right,1,170)
- sleep 1
- app.HsPageIndicatorItem(:__index =>1).gesture(:Right,1,170)
- if app.HsPageIndicatorItem(:__index =>0).test_object_exists?("HbIconItem",{:iconName => 'qtg_graf_hspage_highlight'}) then
- page = 1
- else
- raise VerificationError ,"ERROR: Cannot go to first home screen", caller
+ end
+ #Go to first HS if we are not there
+ if current_HS_location != 0 then
+ for j in 1..current_HS_location
+ app.HsIdleWidget.HbWidget( :name => 'controlLayer' ).HsPageIndicator( :name => 'pageIndicator' ).HsPageIndicatorItem(:__index =>current_HS_location).gesture(:Right,1,200)
end
end
end
+
+ ########################################################################################################################################
+ #
+ # remove_calendar_widget_from_homescreen
+ #
+ # description:
+ # This function emoves calendar widget from homescreen
+ #
+ # preconditions:
+ # -Phone is in homescreen and there is calendar widget in HS
+ # parameters:
+ # hs_pagenumber: Number of the homescreen page (0, 1 or 2)
+ #
+ # created: Jarno Mäkelä
+ # creation date: 17-May-2010
+ #
+ ########################################################################################################################################
+
+ def remove_calendar_widget_from_homescreen(hs_pagenumber)
+ app = @sut.application(:name => 'hsapplication')
+ #find correct widget host object
+ calendar_widget_object = app.HsIdleWidget.HbWidget(:__index =>2).HsPageVisual(:__index => hs_pagenumber).find(:name => 'CalendarWidget')
+ calendar_widget_object.tap_down
+ calendar_widget_object = app.HbWidget( :name => 'controlLayer' ).find(:name => 'CalendarWidget')
+ calendar_widget_object.drag_to_object(app.HsTrashBinWidget( :name => 'trashBin' ))
+ end
+
+ ########################################################################################################################################
+ #
+ # delete_calendar_events !!!FIXTURE NOT WORKING !!!
+ #
+ # description:
+ # This function deletes all calendar events via fixture
+ #
+ # preconditions:
+ #
+ # parameters:
+ # -app: application needed
+ #
+ # created: Jarno Mäkelä
+ # creation date: 19-May-2010
+ #
+ ########################################################################################################################################
+
+ def delete_calendar_events(app)
+ tmp_id = app.id
+ tmp = @sut.execution_order
+ @sut.execution_order = ['S60']
+ app.apply_behaviour!( :name => 'S60Fixture' )
+ app.set_application_id(app.attribute('applicationUid'));
+ response = app.fixture('tapi_calendar_fixture', 'delete_all', {})
+ @sut.execution_order = tmp
+ app.apply_behaviour!( :name => 'QtFixture' )
+ app.set_application_id(tmp_id)
+ response
+ end
+
+ ########################################################################################################################################
+ #
+ # delete_calendar_events_via_UI
+ #
+ # description:
+ # This function deletes all calendar events via calendar UI
+ #
+ # preconditions:
+ #
+ # parameters:
+ # -app: application needed
+ #
+ # created: Jarno Mäkelä
+ # creation date: 13-Aug-2010
+ #
+ ########################################################################################################################################
+
+ def delete_calendar_events_via_UI
+ cal_app = @sut.run(:name => "calendar.exe")
+ cal_app.HbMarqueeItem(:text => 'Calendar').tap
+ if cal_app.test_object_exists?("HbTextItem",{:text => 'Delete entries'}) then
+ cal_app.HbTextItem(:text => 'Delete entries').tap
+ cal_app.HbTextItem(:text => 'All entries').tap
+ cal_app.HbTextItem(:text => 'Delete').tap
+ end
+ cal_app.close
+ end
+
+ ########################################################################################################################################
+ #
+ # set_event_time_via_UI
+ #
+ # description:
+ # This function sets wanted event time via calendar UI
+ #
+ # preconditions:
+ #
+ # parameters:
+ # -app: application needed
+ # -time: time, what is wanted to set
+ #
+ # created: Jarno Mäkelä
+ # creation date: 13-Aug-2010
+ #
+ ########################################################################################################################################
+
+ def set_event_time_via_UI(app,time)
+ #Check,what value there is currently in hour time
+ current_hour_value = app.HbDatePickerView(:__index => 0).HbAbstractItemContainer.HbDatePickerViewItem(:__index => 2).HbTextItem.attribute("text")
+ puts "current_hour_value = " + current_hour_value
+ current_hour_value_i = current_hour_value.to_i
+ if @hourformat_12 == true then
+ #12 hour time used
+ set_time_value = convert_time_to_12hour_format(time)
+ else
+ #24 hour time used
+ set_time_value = time
+ end
+ set_time_hour_value = set_time_value[0..1]
+ puts "set_time_hour_value = " + set_time_hour_value
+ set_time_hour_value_i = set_time_hour_value.to_i
+ if set_time_hour_value_i < current_hour_value_i then
+ if @hourformat_12 == true then
+ #12 hour time used
+ set_time_hour_value_i = set_time_hour_value_i +12
+ else
+ #24 hour time used
+ set_time_hour_value_i = set_time_hour_value_i +24
+ end
+ end
+ for i in 0..(set_time_hour_value_i - 1 - current_hour_value_i)
+ index = 2 + i
+ app.HbDatePickerView(:__index => 0).HbAbstractItemContainer.HbDatePickerViewItem(:__index => index).HbTextItem.gesture(:Up,0.5,53)
+ end
+ end
+
+ ########################################################################################################################################
+ #
+ # create_calendar_event !!!FIXTURE NOT WORKING !!!
+ #
+ # description:
+ # This function creates calendar event via fixture
+ #
+ # preconditions:
+ #
+ # parameters:
+ # -subject: subject of the meeting
+ # -start_day: start day of the meeting
+ # -start_month: start month of the meeting
+ # -start_year: start year of the meeting
+ # -start_hour: start hour of the meeting
+ # -start_minute: start minute of the meeting
+ # -duration_days: duration of the days, that meeting is lasting
+ # -duration_hours: duration of the hours, that meeting is lasting
+ # -duration_minutes: duration of the minutes, that meeting is lasting
+ #
+ # return value:
+ # -time_to_verify: time, that is supposed to be in the calendar widget (Format: hh:mm-hh:mm or hh:mm (am/pm)-hh:mm (am/pm))
+ #
+ # created: Jarno Mäkelä
+ # creation date: 17-May-2010
+ #
+ ########################################################################################################################################
+
+ def create_calendar_event(app, subject,start_day, start_month, start_year, start_hour, start_minute, duration_days, duration_hours, duration_minutes)
+ #Creates calendar event
+ #let's calculate the real values of start date. In parameters, eg. the day value can exceed 31, so we need to change month and set day
+ #to 1. Same calculation needed for other parameter values
+ start_date = calculate_date(start_day, start_month, start_year, start_hour, start_minute)
+ puts "start_date:",start_date.to_s
+ start_time_split = (start_date.to_s).split
+ start_time = start_time_split[1]
+ start_time_to_verify = start_time[0..4]
+ puts "start_time_to_verify:",start_time_to_verify
+ end_date = calculate_date(start_day+duration_days, start_month, start_year, start_hour+duration_hours, start_minute+duration_minutes)
+ puts "end_date:",end_date.to_s
+ end_time_split = (end_date.to_s).split
+ end_time = end_time_split[1]
+ end_time_to_verify = end_time[0..4]
+ puts "end_time_to_verify:",end_time_to_verify
+ if @hourformat_12 == true then
+ #12 hour time used
+ time_to_verify = convert_time_to_12hour_format(start_time_to_verify)+'-'+convert_time_to_12hour_format(end_time_to_verify)
+ else
+ #24 hour time used
+ time_to_verify = start_time_to_verify+'-'+end_time_to_verify
+ end
+ tmp_id = app.id
+ tmp = @sut.execution_order
+ @sut.execution_order = ['S60']
+ app.apply_behaviour!( :name => 'S60Fixture' )
+ app.set_application_id(app.attribute('applicationUid'));
+ response = app.fixture('tapi_calendar_fixture', 'add_meeting', {:description => subject, :start_date => start_date, :end_date => end_date})
+ @sut.execution_order = tmp
+ app.apply_behaviour!( :name => 'QtFixture' )
+ app.set_application_id(tmp_id)
+ response
+ #let's put date if event is in other future day than today
+ if start_day > @day.to_i then
+ start_date = start_time_split[0]
+ month_text = case start_date[3..4]
+ when "01" then "Jan"
+ when "02" then "Feb"
+ when "03" then "Mar"
+ when "04" then "Apr"
+ when "05" then "May"
+ when "06" then "Jun"
+ when "07" then "Jul"
+ when "08" then "Aug"
+ when "09" then "Sep"
+ when "10" then "Oct"
+ when "11" then "Nov"
+ when "12" then "Dec"
+ end
+ puts "time_to_verify:", start_date[0..1]+' '+month_text+' '+time_to_verify
+ return start_date[0..1]+' '+month_text+' '+time_to_verify
+ else
+ puts "time_to_verify:", time_to_verify
+ return time_to_verify
+ end
+ end
+
+ ########################################################################################################################################
+ #
+ # create_calendar_event_via_calendar
+ #
+ # description:
+ # This function creates calendar event via calendar application UI
+ #
+ # preconditions:
+ #
+ # parameters:
+ # -subject: subject of the meeting (not working yet)
+ # -start_day: start day of the meeting(not working yet)
+ # -start_month: start month of the meeting(not working yet)
+ # -start_year: start year of the meeting(not working yet)
+ # -start_hour: start hour of the meeting(minimun value two hours more than current time)
+ # -start_minute: start minute of the meeting(not working yet)
+ # -duration_days: duration of the days, that meeting is lasting(not working yet)
+ # -duration_hours: duration of the hours, that meeting is lasting(not working yet)
+ # -duration_minutes: duration of the minutes, that meeting is lasting(not working yet)
+ #
+ # return value:
+ # -time_to_verify: time, that is supposed to be in the calendar widget (Format: hh:mm-hh:mm or hh:mm (am/pm)-hh:mm (am/pm))
+ #
+ # created: Jarno Mäkelä
+ # creation date: 13-Aug-2010
+ #
+ ########################################################################################################################################
+
+ def create_calendar_event_via_calendar(subject,start_day, start_month, start_year, start_hour, start_minute, duration_days, duration_hours, duration_minutes)
+ #Creates calendar event via calendar application
+ #let's calculate the real values of start date. In parameters, eg. the day value can exceed 31, so we need to change month and set day
+ #to 1. Same calculation needed for other parameter values
+ if start_minute > 15 then
+ if start_minute > 45 then
+ start_hour = start_hour + 1
+ start_minute = 0
+ else
+ start_minute = 30
+ end
+ else
+ start_minute = 0
+ end
+ start_date = calculate_date(start_day, start_month, start_year, start_hour, start_minute)
+ puts "start_date:",start_date.to_s
+ start_time_split = (start_date.to_s).split
+ start_time = start_time_split[1]
+ start_time_to_verify = start_time[0..4]
+ puts "start_time_to_verify:",start_time_to_verify
+ end_date = calculate_date(start_day+duration_days, start_month, start_year, start_hour+duration_hours, start_minute + duration_minutes)
+ puts "end_date:",end_date.to_s
+ end_time_split = (end_date.to_s).split
+ end_time = end_time_split[1]
+ end_time_to_verify = end_time[0..4]
+ puts "end_time_to_verify:",end_time_to_verify
+ #puts "create_calendar_event_via_calendar @hourformat_12 = " + @hourformat_12.to_s
+ if @hourformat_12 == true then
+ #12 hour time used
+ time_to_verify = convert_time_to_12hour_format(start_time_to_verify)+'-'+convert_time_to_12hour_format(end_time_to_verify)
+ else
+ #24 hour time used
+ time_to_verify = start_time_to_verify+'-'+end_time_to_verify
+ end
+ cal_app = @sut.run(:name => "calendar.exe")
+ #cal_app.HbIconItem(:iconName => 'qtg_mono_options_menu').tap
+ cal_app.HbMarqueeItem(:text => 'Calendar').tap
+ cal_app.HbTextItem(:text => 'New entry').tap
+ #Add the subject. Cannot do this currently,since phone won't go away from text input
+ #cal_app.HbLineEdit( :name => 'subjectItem' ).tap
+ #cal_app.HbLineEdit( :name => 'subjectItem' ).HbScrollArea.HbWidget.type_text(subject)
+ #cal_app.QGraphicsWidget( :name => 'vkbHandle' ).tap
+ #Add start time
+ cal_app.HbPushButton( :name => 'startTime' ).tap
+ set_event_time_via_UI(cal_app,start_time_to_verify)
+ cal_app.HbTextItem( :text => 'OK' ).tap
+ cal_app.HbIconItem(:iconName => 'qtg_mono_back').tap
+ #cal_app.HbIconItem(:iconName => 'qtg_mono_back').tap
+ cal_app.close
+ #let's put date if event is in other future day than today
+ if start_day > @day.to_i then
+ start_date = start_time_split[0]
+ month_text = case start_date[3..4]
+ when "01" then "Jan"
+ when "02" then "Feb"
+ when "03" then "Mar"
+ when "04" then "Apr"
+ when "05" then "May"
+ when "06" then "Jun"
+ when "07" then "Jul"
+ when "08" then "Aug"
+ when "09" then "Sep"
+ when "10" then "Oct"
+ when "11" then "Nov"
+ when "12" then "Dec"
+ end
+ puts "time_to_verify:", start_date[0..1]+' '+month_text+' '+time_to_verify
+ return start_date[0..1]+' '+month_text+' '+time_to_verify
+ else
+ puts "time_to_verify:", time_to_verify
+ return time_to_verify
+ end
+ end
+
+ ##############################################################################################################################################
+ # Calendar widget - initialize
+ ##############################################################################################################################################
+ #
+ # Purpose of the test is to make initializing of calendar widget environment
+ #
+ # Created at: 10.08.2010
+ # Created by: Jarno Mäkelä
+ # Reviewed by:
+ #
+ # === Initializing consists
+ # - Counting of existing Home screens
+ # - Checking phone date
+ # - Checking calendar widget existing and removing it if it is found in HS
+ # - Navigating to first HS
+ #
+ # === params
+ # none
+ #
+ ############################################################################################################################################
+
+ def test_initialize_calendar_widget_test_env
+ puts "test_initialize_calendar_widget_test_env start"
+ app = @sut.application(:name => 'hsapplication')
+ #Let's check existing Home screens
+ #identificator = TestObjectIdentificator.new(:type => :HsPageVisual)
+ #xml = app.HsIdleWidget.HbWidget( :__index =>2 ).xml_data
+ #element_set = xml.xpath( xpath = identificator.get_xpath_to_identify( xml ) )
+ #@HS_count = element_set.size
+ #check_phone_date
+ #Check, if calendar widget exists in some of the Home screens
+ if (app.test_object_exists?("HbWidget",{:name => 'CalendarWidget'})) then
+ #Check, which HS window calendar widget exists
+ for i in 0..(@HS_count-1)
+ if(app.HsIdleWidget.HbWidget(:__index =>2).HsPageVisual(:__index =>i).test_object_exists?("HbWidget",{:name => 'CalendarWidget'})) then
+ puts "calendar widget found in HS " + (i+1).to_s
+ widget_HS_location = i
+ break
+ end
+ end
+ #Go to homescreen, where calendar widget is and remove it
+ #first check, that we are in first HS
+ for i in 0..(@HS_count-1)
+ if(app.HsIdleWidget.HbWidget( :name => 'controlLayer' ).HsPageIndicator( :name => 'pageIndicator' ).HsPageIndicatorItem(:__index =>i).test_object_exists?("HbIconItem",{:iconName => 'qtg_graf_hspage_highlight'})) then
+ puts "we are in HS " + (i+1).to_s
+ our_HS_location = i
+ break
+ end
+ end
+ #Go to same HS where calendar widget is
+ if our_HS_location == widget_HS_location then
+ remove_calendar_widget_from_homescreen(our_HS_location)
+ else
+ if our_HS_location < widget_HS_location then
+ for i in our_HS_location..widget_HS_location-1
+ app.HsIdleWidget.HbWidget( :name => 'controlLayer' ).HsPageIndicator( :name => 'pageIndicator' ).HsPageIndicatorItem(:__index =>our_HS_location).gesture(:Left,1,200)
+ end
+ sleep 1
+ remove_calendar_widget_from_homescreen(widget_HS_location)
+ else
+ for i in widget_HS_location..our_HS_location-1
+ app.HsIdleWidget.HbWidget( :name => 'controlLayer' ).HsPageIndicator( :name => 'pageIndicator' ).HsPageIndicatorItem(:__index =>our_HS_location).gesture(:Right,1,200)
+ end
+ sleep 1
+ remove_calendar_widget_from_homescreen(widget_HS_location)
+ end
+ end
+ end
+ #navigate to the first home screen
+ navigate_to_first_homescreen
+ end
+
################################################################################################################################################
###
### BAT cases start
@@ -652,44 +848,34 @@
#
# === preconditions
# - Device is in Home Screen
- # - Some events in Calendar.
+ # - There is no calendar widget on any home screens
#
# === params
# none
#
############################################################################################################################################
- def _test_calendar_widget_load_unload_widget_in_HomeScreen
+ def test_calendar_widget_load_unload_widget_in_HomeScreen
#running_round = 1
#max_running_rounds = 2
#begin
#Preconditions:
#Device is in Homescreen
app = @sut.application(:name => 'hsapplication')
- navigate_to_first_homescreen
verify(){app.HbIconItem(:iconName => 'qtg_mono_applications_all')}
- #Some events in calendar
+ #There is no calendar widget on any home screens. This is done in initialize test function already
check_phone_date
check_phone_time
- create_calendar_event(app, 'Meeting 1',@day.to_i+1,@month.to_i,@year.to_i,@hour.to_i+1,@minute.to_i,0,1,0)
- create_calendar_event(app, 'Meeting 2',@day.to_i+2,@month.to_i,@year.to_i,@hour.to_i-2,@minute.to_i,0,1,0)
#Step 1:Tap application list button in the upper right corner of Home Screen
app.HbIconItem(:iconName => 'qtg_mono_applications_all').tap
- #step 2: Select 'add to homescreen' by longpressing 'Calendar Widget' in the catalog list
+ #step 2: Select 'Calendar Widget' by tapping it.
add_calendar_widget_to_homescreen(app,'AppListButton')
#step 2 expected: Calendar widget is added to Home Screen.
day_to_verify = @day.to_i
#puts "day_to_verify =", day_to_verify
- verify(){app.HbTextItem(:text => day_to_verify)}
- #Calendar widget content contains "No event for next 7 days"
- #verify(){app.HbTextItem(:text => 'No events for next 7 days')}
- #Verify, that reminder icon in widget is not shown
- #if not(app.test_object_exists?("HbIconItem",{:iconName => 'images/bell.PNG'})) then
- # raise VerificationError ,"ERROR: There is not reminder icon in calendar widget, when it should be there", caller
- #end
+ verify(){app.HbLabel( :name => 'dayNumber' ).HbTextItem(:text => day_to_verify)}
#Step 3 and Step4:Remove calendar widget from display
- remove_calendar_widget_from_homescreen(0)
- delete_calendar_events(app)
+ #remove_calendar_widget_from_homescreen(0)
#rescue
# if (running_round < max_running_rounds) then
# running_round = running_round + 1
@@ -748,7 +934,7 @@
#
############################################################################################################################################
- def _test_calendar_widget_one_event_today_one_event_tomorrow
+ def test_calendar_widget_one_event_today_one_event_tomorrow
#running_round = 1
#max_running_rounds = 2
#begin
@@ -760,7 +946,7 @@
#- One event happens few hours after current phone time at today and one event at tomorrow in Calendar.
check_phone_date
check_phone_time
- today_time_for_verification = create_calendar_event(app, 'Today meeting',@day.to_i,@month.to_i,@year.to_i,@hour.to_i+3,@minute.to_i,0,1,0)
+ today_time_for_verification = create_calendar_event_via_calendar("not working",@day.to_i,@month.to_i,@year.to_i,@hour.to_i+2,@minute.to_i,0,1,0)
tomorrow_time_for_verification = create_calendar_event(app, 'Tomorrow meeting',@day.to_i+1,@month.to_i,@year.to_i,@hour.to_i,@minute.to_i,0,1,0)
#-Calendar widget is added to Home Screen.
#Not adding calendar widget, if it already exists there
@@ -819,73 +1005,100 @@
#
############################################################################################################################################
- def _test_calendar_widget_overlapping_events
- running_round = 1
- max_running_rounds = 2
- begin
- #Preconditions:
- #Device is in Homescreen
- app = @sut.application(:name => 'hsapplication')
- verify(){app.HbIconItem(:iconName => 'qtg_mono_applications_all')}
- navigate_to_first_homescreen
- #- One event happens few hours after current phone time at today in Calendar.
- check_phone_date
- check_phone_time
- today_time_for_verification = create_calendar_event(app, 'Today meeting',@day.to_i,@month.to_i,@year.to_i,@hour.to_i+3,@minute.to_i,0,1,0)
- #-Calendar widget is added to Home Screen.
- #Not adding calendar widget, if it already exists there
- if not(app.test_object_exists?("HbWidget",{:name => 'CalendarWidget'})) then
- #add calendar widget to home screen
- app.HbIconItem(:iconName => 'qtg_mono_applications_all').tap
- add_calendar_widget_to_homescreen(app,'AppListButton')
- end
- #Step 1:Check Calendar widget.
- #step 1 Expected: - All icons (widget icon and reminder icon) are shown correctly.
- #- Calendar widget shows the event as two rows: first row show the event time and second row shows the event title.
- day_to_verify = @day.to_i
- verify(){app.HbTextItem(:text => day_to_verify)}
- verify(){app.HbLabel( :name => 'upperLabel' ).HbTextItem( :text => today_time_for_verification )}
- verify(){app.HbLabel( :name => 'lowerLabel' ).HbTextItem( :text => 'Today meeting' )}
- #Verify, that reminder icon in widget is shown
- #if not(app.test_object_exists?("HbIconItem",{:iconName => 'images/bell.PNG'})) then
- # raise VerificationError ,"ERROR: There is not reminder icon in calendar widget, when it should be there", caller
- #end
-
- #Step 2:Create another event overlapping the first event in Calendar.
- another_time_for_verification = create_calendar_event(app, 'Another today meeting',@day.to_i,@month.to_i,@year.to_i,@hour.to_i+3,@minute.to_i+15,0,1,0)
- #Step 3:Return to Home Screen and check Calendar widget.
- #Step 3 Expected: - All icons (widget icon and reminder icon) are shown correctly.
- #- Calendar widget shows the overlapping information as two rows: first row shows overlapping time and second row shows text
- #'2 events overlapping'.
- if @hourformat_12 == true then
- overlapping_time_for_verification = today_time_for_verification[0..7]+'-'+another_time_for_verification[9..16]
- else
- overlapping_time_for_verification = today_time_for_verification[0..4]+'-'+another_time_for_verification[6..10]
- end
- puts "overlapping_time_for_verification: ",overlapping_time_for_verification
- verify(){app.HbLabel( :name => 'upperLabel' ).HbTextItem( :text => overlapping_time_for_verification )}
- verify(){app.HbLabel( :name => 'lowerLabel' ).HbTextItem( :text => '2 events overlapping' )}
- #Step 4: Tap the overlapping events part in calendar view
- app.HbLabel( :name => 'lowerLabel' ).HbTextItem( :text => '2 events overlapping' ).tap
- #Step 4 Expected: - Phone goes to calendar agenda view with all events visible.
- #ToDo
- # - The date is same as the event date.
- #ToDo
- remove_calendar_widget_from_homescreen(0)
- delete_calendar_events(app)
- rescue
- if (running_round < max_running_rounds) then
- running_round = running_round + 1
- puts "Some error came during run. Lets try again"
- teardown
- retry
- else
- puts "Test failed"
- raise
- end
- end #rescue
+ def test_calendar_widget_overlapping_events
+ #Preconditions:
+ #Device is in Homescreen
+ app = @sut.application(:name => 'hsapplication')
+ verify(){app.HbIconItem(:iconName => 'qtg_mono_applications_all')}
+ #- One event happens few hours after current phone time at today in Calendar.
+ check_phone_date
+ check_phone_time
+ today_time_for_verification = create_calendar_event_via_calendar("not working",@day.to_i,@month.to_i,@year.to_i,@hour.to_i+2,@minute.to_i,0,0,0)
+ #-Calendar widget is added to Home Screen.
+ #Not adding calendar widget, if it already exists there
+ if not(app.test_object_exists?("HbWidget",{:name => 'CalendarWidget'})) then
+ #add calendar widget to home screen
+ app.HbIconItem(:iconName => 'qtg_mono_applications_all').tap
+ add_calendar_widget_to_homescreen(app,'AppListButton')
+ end
+ #Step 1:Check Calendar widget.
+ #step 1 Expected: - All icons (widget icon and reminder icon) are shown correctly.
+ #- Calendar widget shows the event as two rows: first row show the event time and second row shows the event title.
+ day_to_verify = @day.to_i
+ verify(){app.HbTextItem(:text => day_to_verify)}
+ verify(){app.HbLabel( :name => 'upperLabel' ).HbTextItem( :text => today_time_for_verification )}
+ verify(){app.HbLabel( :name => 'lowerLabel' ).HbTextItem( :text => 'Unnamed' )}
+ #Verify, that reminder icon in widget is shown
+ if not(app.test_object_exists?("HbFrameItem",{:frameGraphicsName => 'qtg_small_reminder'})) then
+ raise VerificationError ,"ERROR: There is not reminder icon in calendar widget, when it should be there", caller
+ end
+
+ #Step 2:Create another event overlapping the first event in Calendar.
+ another_time_for_verification = create_calendar_event_via_calendar("Another not working",@day.to_i,@month.to_i,@year.to_i,@hour.to_i+2,@minute.to_i,0,0,0)
+ #Step 3:Return to Home Screen and check Calendar widget.
+ #Step 3 Expected: - All icons (widget icon and reminder icon) are shown correctly.
+ #- Calendar widget shows the overlapping information as two rows: first row shows overlapping time and second row shows text
+ #'2 events overlapping'.
+ if @hourformat_12 == true then
+ overlapping_time_for_verification = today_time_for_verification[0..7]+'-'+another_time_for_verification[9..16]
+ else
+ overlapping_time_for_verification = today_time_for_verification[0..4]+'-'+another_time_for_verification[6..10]
+ end
+ puts "overlapping_time_for_verification: ",overlapping_time_for_verification
+ verify(){app.HbLabel( :name => 'upperLabel' ).HbTextItem( :text => overlapping_time_for_verification )}
+ verify(){app.HbLabel( :name => 'lowerLabel' ).HbTextItem( :text => '2 overlapping entry' )}
+ #Step 4: Tap the overlapping events part in calendar view
+ app.HbLabel( :name => 'lowerLabel' ).HbTextItem( :text => '2 overlapping entry' ).tap
+ #Step 4 Expected: - Phone goes to calendar agenda view with all events visible.
+ #ToDo
+ # !! NOT WORKING IN week 30 SW !!
+ # - The date is same as the event date.
+ #ToDo
+ delete_calendar_events_via_UI
end
+ def test_calendar_widget_overlapping_events_fixed
+ #Preconditions:
+ #Device is in Homescreen
+ app = @sut.application(:name => 'hsapplication')
+ verify(){app.HbIconItem(:iconName => 'qtg_mono_applications_all')}
+ #- One event happens few hours after current phone time at today in Calendar.
+ check_phone_date
+ check_phone_time
+ today_time_for_verification = create_calendar_event_via_calendar("not working",@day.to_i,@month.to_i,@year.to_i,@hour.to_i+2,@minute.to_i,0,0,0)
+ #-Calendar widget is added to Home Screen.
+ #Not adding calendar widget, if it already exists there
+ if not(app.test_object_exists?("HbWidget",{:name => 'CalendarWidget'})) then
+ #add calendar widget to home screen
+ app.HbIconItem(:iconName => 'qtg_mono_applications_all').tap
+ add_calendar_widget_to_homescreen(app,'AppListButton')
+ end
+ #Step 1:Check Calendar widget.
+ #step 1 Expected: - All icons (widget icon and reminder icon) are shown correctly.
+ #- Calendar widget shows the event as two rows: first row show the event time and second row shows the event title.
+ day_to_verify = @day.to_i
+ verify(){app.HbTextItem(:text => day_to_verify)}
+ #Verify, that reminder icon in widget is shown
+ if not(app.test_object_exists?("HbFrameItem",{:frameGraphicsName => 'qtg_small_reminder'})) then
+ raise VerificationError ,"ERROR: There is not reminder icon in calendar widget, when it should be there", caller
+ end
+
+ #Step 2:Create another event overlapping the first event in Calendar.
+ another_time_for_verification = create_calendar_event_via_calendar("Another not working",@day.to_i,@month.to_i,@year.to_i,@hour.to_i+2,@minute.to_i,0,0,0)
+ #Step 3:Return to Home Screen and check Calendar widget.
+ #Step 3 Expected: - All icons (widget icon and reminder icon) are shown correctly.
+ #- Calendar widget shows the overlapping information as two rows: first row shows overlapping time and second row shows text
+ #'2 events overlapping'.
+ if @hourformat_12 == true then
+ overlapping_time_for_verification = today_time_for_verification[0..7]+'-'+another_time_for_verification[9..16]
+ else
+ overlapping_time_for_verification = today_time_for_verification[0..4]+'-'+another_time_for_verification[6..10]
+ end
+ puts "overlapping_time_for_verification: ",overlapping_time_for_verification
+ verify(){app.HbLabel( :name => 'lowerLabel' ).HbTextItem( :text => '2 overlapping entry' )}
+ delete_calendar_events_via_UI
+ end #test_calendar_widget_overlapping_events_fixed
+
##############################################################################################################################################
# Calendar widget - Tapping upcoming event
##############################################################################################################################################
@@ -939,7 +1152,7 @@
app = @sut.application(:name => 'hsapplication')
#verify(){@sut.application(:name => 'hsapplication').HbIconItem(:iconName => 'qtg_mono_applications_all')}
verify(){app.HbIconItem(:iconName => 'qtg_mono_applications_all')}
- navigate_to_first_homescreen
+ #navigate_to_first_homescreen
#-Calendar widget is added to Home Screen.
#Not adding calendar widget, if it already exists there
if not(app.test_object_exists?("HbWidget",{:name => 'CalendarWidget'})) then
@@ -970,7 +1183,7 @@
verify(){app.HbTextItem(:text => day_to_verify)}
verify(){app.HbTextItem(:text => month_in_view)}
#Calendar widget content contains "No event for next 7 days"
- verify(){app.HbTextItem(:text => 'No calendar entries today or next 7 days')}
+ verify(){app.HbTextItem(:text => 'No entries for 7 days')}
#Verify, that reminder icon in widget is not shown
if (app.test_object_exists?("HbIconItem",{:iconName => 'images/bell.PNG'})) then