public async Task UpdateEntityWithWrongVersion()
        {
            var calendar = CreateEntity(1);
            var v        = await _calDavDataAccess.CreateEntity(
                SerializeCalendar (calendar),
                calendar.Events[0].UID);

            calendar.Events[0].Summary += "xxx";

            var v2 = await _calDavDataAccess.TryUpdateEntity(
                v.Id,
                v.Version,
                SerializeCalendar (calendar));

            if (ShouldWaitForNewEtag)
            {
                const int maxRetries = 5;
                for (var i = 0; i < maxRetries && v2.Version == v.Version; i++)
                {
                    await Task.Delay(300);

                    v2 = (await _calDavDataAccess.GetVersions(new[] { v.Id }))[0];
                }

                if (v2.Version == v.Version)
                {
                    Assert.Fail("Server didn't change etag after update"); // Some servers (e.g. Google) don't change etag sometimes
                }
            }

            calendar.Events[0].Summary += "xxx";

            Assert.That(
                await _calDavDataAccess.TryUpdateEntity(
                    v.Id,
                    v.Version,
                    SerializeCalendar(calendar)),
                Is.Null);
        }
Esempio n. 2
0
 public Task <IReadOnlyList <EntityVersion <WebResourceName, string> > > GetVersions(IEnumerable <IdWithAwarenessLevel <WebResourceName> > idsOfEntitiesToQuery)
 {
     return(_calDavDataAccess.GetVersions(idsOfEntitiesToQuery.Select(i => i.Id)));
 }