From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- comm/calendar/test/unit/test_bug759324.js | 74 +++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 comm/calendar/test/unit/test_bug759324.js (limited to 'comm/calendar/test/unit/test_bug759324.js') diff --git a/comm/calendar/test/unit/test_bug759324.js b/comm/calendar/test/unit/test_bug759324.js new file mode 100644 index 0000000000..e2dabcd9f9 --- /dev/null +++ b/comm/calendar/test/unit/test_bug759324.js @@ -0,0 +1,74 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +let storage = getStorageCal(); + +/** + * Checks if the capabilities.propagate-sequence feature of the storage calendar + * still works + */ +add_task(async function testBug759324() { + storage.setProperty("capabilities.propagate-sequence", "true"); + + let str = [ + "BEGIN:VEVENT", + "UID:recItem", + "SEQUENCE:3", + "RRULE:FREQ=WEEKLY", + "DTSTART:20120101T010101Z", + "END:VEVENT", + ].join("\r\n"); + + let item = createEventFromIcalString(str); + let rid = cal.createDateTime("20120101T010101Z"); + let rec = item.recurrenceInfo.getOccurrenceFor(rid); + rec.title = "changed"; + item.recurrenceInfo.modifyException(rec, true); + + do_test_pending(); + + let addedItem = await storage.addItem(item); + addedItem.QueryInterface(Ci.calIEvent); + let seq = addedItem.getProperty("SEQUENCE"); + let occ = addedItem.recurrenceInfo.getOccurrenceFor(rid); + + equal(seq, 3); + equal(occ.getProperty("SEQUENCE"), seq); + + let changedItem = addedItem.clone(); + changedItem.setProperty("SEQUENCE", parseInt(seq, 10) + 1); + + checkModifiedItem(rid, await storage.modifyItem(changedItem, addedItem)); +}); + +async function checkModifiedItem(rid, changedItem) { + changedItem.QueryInterface(Ci.calIEvent); + let seq = changedItem.getProperty("SEQUENCE"); + let occ = changedItem.recurrenceInfo.getOccurrenceFor(rid); + + equal(seq, 4); + equal(occ.getProperty("SEQUENCE"), seq); + + // Now check with the pref off + storage.deleteProperty("capabilities.propagate-sequence"); + + let changedItem2 = changedItem.clone(); + changedItem2.setProperty("SEQUENCE", parseInt(seq, 10) + 1); + + checkNormalItem(rid, await storage.modifyItem(changedItem2, changedItem)); +} + +function checkNormalItem(rid, changedItem) { + changedItem.QueryInterface(Ci.calIEvent); + let seq = changedItem.getProperty("SEQUENCE"); + let occ = changedItem.recurrenceInfo.getOccurrenceFor(rid); + + equal(seq, 5); + equal(occ.getProperty("SEQUENCE"), 4); + completeTest(); +} + +function completeTest() { + do_test_finished(); +} -- cgit v1.2.3