예제 #1
0
        public async Task <IReadOnlyList <EntityWithId <WebResourceName, IICalendar> > > Get(ICollection <WebResourceName> ids, ILoadEntityLogger logger)
        {
            if (ids.Count == 0)
            {
                return new EntityWithId <WebResourceName, IICalendar>[] { }
            }
            ;

            using (AutomaticStopwatch.StartInfo(s_logger, string.Format("CalDavRepository.Get ({0} entitie(s))", ids.Count)))
            {
                var entities = await _calDavDataAccess.GetEntities(ids);

                return(await ParallelDeserialize(entities, logger));
            }
        }
예제 #2
0
        public Task <IReadOnlyList <EntityWithVersion <Uri, IICalendar> > > Get(ICollection <Uri> ids)
        {
            return(Task.Factory.StartNew(() =>
            {
                if (ids.Count == 0)
                {
                    return new EntityWithVersion <Uri, IICalendar>[] {}
                }
                ;

                using (AutomaticStopwatch.StartInfo(s_logger, string.Format("CalDavRepository.Get ({0} entitie(s))", ids.Count)))
                {
                    var entities = _calDavDataAccess.GetEntities(ids);

                    return ParallelDeserialize(entities);
                }
            }));
        }
예제 #3
0
        public async Task Test_CRUD()
        {
            foreach (var evt in await _calDavDataAccess.GetEventVersions(null))
            {
                await _calDavDataAccess.DeleteEntity(evt.Id, evt.Version);
            }

            var entitiesWithVersion = new List <EntityVersion <WebResourceName, string> >();

            var uids = new List <string>();

            for (int i = 1; i <= 5; i++)
            {
                var iCalendar = CreateEntity(i);
                uids.Add(iCalendar.Events[0].UID);
                entitiesWithVersion.Add(
                    await _calDavDataAccess.CreateEntity(
                        SerializeCalendar(
                            iCalendar), iCalendar.Events[0].UID));
            }

            var queriedEntitesWithVersion = await _calDavDataAccess.GetEventVersions(new DateTimeRange (DateTime.Now.AddDays(150), DateTime.Now.AddDays(450)));

            Assert.That(queriedEntitesWithVersion.Count, Is.EqualTo(3));

            CollectionAssert.IsSubsetOf(
                queriedEntitesWithVersion.Select(e => e.Id),
                entitiesWithVersion.Select(e => e.Id));

            var updatedCalendar = CreateEntity(600);

            updatedCalendar.Events[0].UID = uids[1];
            var updated = await _calDavDataAccess.UpdateEntity(
                entitiesWithVersion[1].Id,
                entitiesWithVersion[1].Version,
                SerializeCalendar (updatedCalendar));

            Assert.That(
                (await _calDavDataAccess.GetEventVersions(new DateTimeRange(DateTime.Now.AddDays(150), DateTime.Now.AddDays(450)))).Count,
                Is.EqualTo(2));

            var updatedRevertedCalendar = CreateEntity(2);

            updatedRevertedCalendar.Events[0].UID = uids[1];
            var updateReverted = await _calDavDataAccess.UpdateEntity(
                updated.Id,
                updated.Version,
                SerializeCalendar (updatedRevertedCalendar));

            Assert.That(
                (await _calDavDataAccess.GetEventVersions(new DateTimeRange(DateTime.Now.AddDays(150), DateTime.Now.AddDays(450)))).Count,
                Is.EqualTo(3));

            await _calDavDataAccess.DeleteEntity(updateReverted.Id, updateReverted.Version);

            Assert.That(
                (await _calDavDataAccess.GetEventVersions(new DateTimeRange(DateTime.Now.AddDays(150), DateTime.Now.AddDays(450)))).Count,
                Is.EqualTo(2));

            var entites = await _calDavDataAccess.GetEntities(entitiesWithVersion.Take (4).Select(e => e.Id));

            if (!DeletedEntitesAreJustMarkedAsDeletedAndStillAvailableViaCalendarMultigetReport)
            {
                Assert.That(entites.Count, Is.EqualTo(3)); // Only 3, the second was deleted

                CollectionAssert.AreEquivalent(
                    entites.Select(e => DeserializeCalendar(e.Entity).Events[0].Summary),
                    new[] { "Event1", "Event3", "Event4" });
            }
            else
            {
                CollectionAssert.AreEquivalent(
                    entites.Select(e => DeserializeCalendar(e.Entity).Events[0].Summary),
                    new[] { "Event1", "Event2", "Event3", "Event4" });
            }
        }