~ubuntu-branches/ubuntu/oneiric/lightning-extension/oneiric-security

« back to all changes in this revision

Viewing changes to calendar/test/mozmill/recurrence/testWeeklyNRecurrence.js

  • Committer: Package Import Robot
  • Author(s): Chris Coulson
  • Date: 2012-11-08 10:00:06 UTC
  • mfrom: (1.3.8)
  • Revision ID: package-import@ubuntu.com-20121108100006-xpf89hktfitzuqc3
Tags: 1.9+build1-0ubuntu0.11.10.1
* New upstream stable release to support Thunderbird 17 (CALENDAR_1_9_BUILD1)
  - see LP: #1080212 for USN information

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* This Source Code Form is subject to the terms of the Mozilla Public
 
2
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 
3
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
4
 
 
5
var calUtils = require("../shared-modules/calendar-utils");
 
6
var modalDialog = require("../shared-modules/modal-dialog");
 
7
var utils = require("../shared-modules/utils");
 
8
 
 
9
const sleep = 500;
 
10
var calendar = "Mozmill";
 
11
var hour = 8;
 
12
var eventPath = '/{"tooltip":"itemTooltip","calendar":"' + calendar.toLowerCase() + '"}';
 
13
 
 
14
var setupModule = function(module) {
 
15
  controller = mozmill.getMail3PaneController();
 
16
  calUtils.createCalendar(controller, calendar);
 
17
}
 
18
 
 
19
var testWeeklyNRecurrence = function () {
 
20
  controller.click(new elementslib.ID(controller.window.document, "calendar-tab-button"));
 
21
  calUtils.switchToView(controller, "day");
 
22
  calUtils.goToDate(controller, 2009, 1, 5);
 
23
  
 
24
  // create weekly recurring event
 
25
  controller.doubleClick(new elementslib.Lookup(controller.window.document,
 
26
    calUtils.getEventBoxPath(controller, "day", calUtils.CANVAS_BOX, undefined, 1, hour)), 1, 1);
 
27
  controller.waitFor(function() {return mozmill.utils.getWindows("Calendar:EventDialog").length > 0}, sleep);
 
28
  let event = new mozmill.controller.MozMillController(mozmill.utils.getWindows("Calendar:EventDialog")[0]);
 
29
  
 
30
  let md = new modalDialog.modalDialog(event.window);
 
31
  md.start(setRecurrence);
 
32
  event.waitForElement(new elementslib.ID(event.window.document, "item-repeat"));
 
33
  event.select(new elementslib.ID(event.window.document, "item-repeat"), undefined, undefined, "custom");
 
34
  
 
35
  event.click(new elementslib.ID(event.window.document, "button-save"));
 
36
  
 
37
  
 
38
  // check day view
 
39
  let box = calUtils.getEventBoxPath(controller, "day", calUtils.EVENT_BOX, undefined, 1, hour)
 
40
    + eventPath;
 
41
  
 
42
  // Monday, Tuesday, Wednesday, Thursday
 
43
  for(let i = 0; i < 4; i++){
 
44
    controller.assertNode(new elementslib.Lookup(controller.window.document, box));
 
45
    calUtils.forward(controller, 1);
 
46
  }
 
47
  
 
48
  // Saturday
 
49
  calUtils.forward(controller, 1);
 
50
  controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, box));
 
51
  
 
52
  // check week view
 
53
  calUtils.switchToView(controller, "week");
 
54
  
 
55
  // Monday, Tuesday, Wednesday, Thursday
 
56
  for(let i = 2; i < 6; i++){
 
57
    box = calUtils.getEventBoxPath(controller, "week", calUtils.EVENT_BOX, undefined, i, hour)
 
58
      + eventPath;
 
59
    controller.waitForElement(new elementslib.Lookup(controller.window.document, box));
 
60
  }
 
61
  
 
62
  // Saturday
 
63
  box = calUtils.getEventBoxPath(controller, "week", calUtils.EVENT_BOX, undefined, 7, hour)
 
64
    + eventPath;
 
65
  controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, box));
 
66
  
 
67
  // check multiweek view
 
68
  calUtils.switchToView(controller, "multiweek");
 
69
  checkMultiWeekView("multiweek");
 
70
  
 
71
  // check month view
 
72
  calUtils.switchToView(controller, "month");
 
73
  checkMultiWeekView("month");
 
74
  
 
75
  // delete event
 
76
  box = calUtils.getEventBoxPath(controller, "month", calUtils.EVENT_BOX, 2, 2, hour)
 
77
    + eventPath;
 
78
  controller.click(new elementslib.Lookup(controller.window.document, box));
 
79
  calUtils.handleParentDeletion(controller, false);
 
80
  controller.keypress(new elementslib.ID(controller.window.document, "month-view"),
 
81
    "VK_DELETE", {});
 
82
  controller.waitForElementNotPresent(new elementslib.Lookup(controller.window.document, box));
 
83
}
 
84
 
 
85
function setRecurrence(recurrence){
 
86
  // weekly
 
87
  recurrence.waitForElement(new elementslib.ID(recurrence.window.document, "period-list"));
 
88
  recurrence.select(new elementslib.ID(recurrence.window.document, "period-list"), undefined, undefined, "1");
 
89
  recurrence.sleep(sleep);
 
90
  
 
91
  let mon = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.2.Mmm");
 
92
  let tue = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.3.Mmm");
 
93
  let wed = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.4.Mmm");
 
94
  let thu = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.5.Mmm");
 
95
  let sat = utils.getProperty("chrome://calendar/locale/dateFormat.properties", "day.7.Mmm");
 
96
  
 
97
  let days = '/id("calendar-event-dialog-recurrence")/id("recurrence-pattern-groupbox")/'
 
98
    + 'id("recurrence-pattern-grid")/id("recurrence-pattern-rows")/id("recurrence-pattern-period-row")/'
 
99
    + 'id("period-deck")/id("period-deck-weekly-box")/[1]/id("daypicker-weekday")/anon({"anonid":"mainbox"})/';
 
100
  
 
101
  // starting from Monday so it should be checked
 
102
  recurrence.assertChecked(new elementslib.Lookup(recurrence.window.document, days + '{"label":"' + mon + '"}'));
 
103
  // check Tuesday, Wednesday, Thursday and Saturday too
 
104
  recurrence.click(new elementslib.Lookup(recurrence.window.document, days + '{"label":"' + tue + '"}'));
 
105
  recurrence.click(new elementslib.Lookup(recurrence.window.document, days + '{"label":"' + wed + '"}'));
 
106
  recurrence.click(new elementslib.Lookup(recurrence.window.document, days + '{"label":"' + thu + '"}'));
 
107
  recurrence.click(new elementslib.Lookup(recurrence.window.document, days + '{"label":"' + sat + '"}'));
 
108
  
 
109
  // set number of occurrences
 
110
  recurrence.click(new elementslib.ID(recurrence.window.document, "recurrence-range-for"));
 
111
  let input = '/id("calendar-event-dialog-recurrence")/id("recurrence-range-groupbox")/[1]/'
 
112
    + 'id("recurrence-duration")/id("recurrence-range-count-box")/id("repeat-ntimes-count")/'
 
113
    + 'anon({"class":"textbox-input-box numberbox-input-box"})/anon({"anonid":"input"})';
 
114
  // replace previous number
 
115
  recurrence.keypress(new elementslib.Lookup(recurrence.window.document, input), "a", {ctrlKey:true});
 
116
  recurrence.type(new elementslib.Lookup(recurrence.window.document, input), "4");
 
117
    
 
118
  // close dialog
 
119
  recurrence.click(new elementslib.Lookup(recurrence.window.document, '/id("calendar-event-dialog-recurrence")/'
 
120
    + 'anon({"anonid":"buttons"})/{"dlgtype":"accept"}'));
 
121
}
 
122
 
 
123
function checkMultiWeekView(view){
 
124
  let week = 1;
 
125
  
 
126
  // in month view event starts from 2nd row
 
127
  if(view == "month") week++;
 
128
 
 
129
  // Monday, Tuesday, Wednesday, Thursday
 
130
  for(let i = 2; i < 6; i++){
 
131
    let box = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, week, i, undefined)
 
132
      + eventPath;
 
133
    controller.assertNode(new elementslib.Lookup(controller.window.document, box));
 
134
  }
 
135
  
 
136
  // Saturday
 
137
  let box = calUtils.getEventBoxPath(controller, view, calUtils.EVENT_BOX, week, 7, undefined)
 
138
    + eventPath;
 
139
  controller.assertNodeNotExist(new elementslib.Lookup(controller.window.document, box));
 
140
}
 
141
 
 
142
var teardownTest = function(module) {
 
143
  calUtils.deleteCalendars(controller, calendar);
 
144
}