public void Merge_entry_exists_on_client_but_not_on_server() { bool?answer = null; var state = new ApplicationState(); state.MyDays = new Dictionary <CacheKey, TrainingDaysHolder>(); var currentHolder = new TrainingDaysHolder(new UserSearchDTO() { GlobalId = Guid.NewGuid() }); state.MyDays.Add(new CacheKey() { ProfileId = currentHolder.User.GlobalId }, currentHolder); var days = currentHolder; state.CurrentBrowsingTrainingDays = days; DateTime time = DateTime.UtcNow.MonthDate(); days.TrainingDays.Add(time.AddDays(1), new TrainingDayInfo(new TrainingDayDTO() { TrainingDate = time.AddDays(1) })); days.TrainingDays.Add(time.AddDays(2), new TrainingDayInfo(new TrainingDayDTO() { TrainingDate = time.AddDays(2) })); var day = new TrainingDayDTO() { TrainingDate = time.AddDays(3) }; day.GlobalId = Guid.NewGuid(); day.Objects.Add(new StrengthTrainingEntryDTO() { Comment = "Test" }); day.Objects[0].Version = 1; day.Objects[0].GlobalId = Guid.NewGuid(); days.TrainingDays.Add(time.AddDays(3), new TrainingDayInfo(day)); state.TrainingDay = days.TrainingDays[time.AddDays(3)].Copy(); var serverCopy = day.Copy(); //entry on the client state.TrainingDay.TrainingDay.Objects.Add(new SizeEntryDTO() { Version = 1, GlobalId = Guid.NewGuid(), Comment = "size" }); OfflineModeManager manager = new OfflineModeManager(state.MyDays, currentHolder.User.GlobalId); manager.MergeNew(serverCopy, state, false, delegate(ModificationType m) { throw new Exception("Shouldn't be here "); }); Assert.AreEqual(1, state.TrainingDay.TrainingDay.Objects[0].Version); Assert.AreEqual(1, state.TrainingDay.TrainingDay.Objects.Count); Assert.AreEqual("Test", state.TrainingDay.TrainingDay.Objects[0].Comment); Assert.AreEqual(1, days.TrainingDays[state.TrainingDay.TrainingDay.TrainingDate].TrainingDay.Objects[0].Version); Assert.AreEqual(1, days.TrainingDays[state.TrainingDay.TrainingDay.TrainingDate].TrainingDay.Objects.Count); //should be a different references to the same object (copy) Assert.AreNotEqual(state.TrainingDay, days.TrainingDays[state.TrainingDay.TrainingDay.TrainingDate].TrainingDay); Assert.AreEqual(false, days.TrainingDays[state.TrainingDay.TrainingDay.TrainingDate].IsModified); Assert.AreEqual(false, days.TrainingDays[state.TrainingDay.TrainingDay.TrainingDate].IsConflict); }
private void updateChanges(WymiaryDTO currentSizes, TrainingDaysHolder holder) { var newWay = holder.TrainingDays.SelectMany(d => d.Value.TrainingDay.Objects.OfType <SizeEntryDTO>().Where(h => h.TrainingDay.TrainingDate < currentSizes.Time.DateTime.Date)); var res = (from i in newWay where i.Wymiary.Weight > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousWeight = res.Wymiary.Weight; } res = (from i in newWay where i.Wymiary.Height > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousHeight = res.Wymiary.Height; } res = (from i in newWay where i.Wymiary.Pas > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousPas = res.Wymiary.Pas; } res = (from i in newWay where i.Wymiary.Klatka > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousKlatka = res.Wymiary.Klatka; } res = (from i in newWay where i.Wymiary.LeftBiceps > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousLeftBiceps = res.Wymiary.LeftBiceps; } res = (from i in newWay where i.Wymiary.RightBiceps > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousRightBiceps = res.Wymiary.RightBiceps; } res = (from i in newWay where i.Wymiary.RightForearm > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousRightForearm = res.Wymiary.RightForearm; } res = (from i in newWay where i.Wymiary.LeftForearm > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousLeftForearm = res.Wymiary.LeftForearm; } res = (from i in newWay where i.Wymiary.RightUdo > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousRightUdo = res.Wymiary.RightUdo; } res = (from i in newWay where i.Wymiary.LeftUdo > 0 orderby i.TrainingDay.TrainingDate descending select i).FirstOrDefault(); if (res != null) { PreviousLeftUdo = res.Wymiary.LeftUdo; } Dispatcher.BeginInvoke(delegate { updateChanges(); }); }