diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /comm/calendar/test/unit/test_bug759324.js | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'comm/calendar/test/unit/test_bug759324.js')
-rw-r--r-- | comm/calendar/test/unit/test_bug759324.js | 74 |
1 files changed, 74 insertions, 0 deletions
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(); +} |