public async Task LoadSelectedVocWithNewSpec() { // load voc from server var voc = sSession.Get <Vocabulary>(IntToGuid <Vocabulary>(2)); await s.OnlySelectedVocs(sSession, voc.ToEnumerable()) .SendFrom(Side.Server, Scope.Voc); // добавлен словарь, шаблоны Assert.IsTrue(clSession.Query <Vocabulary>().Any(x => x.Id == voc.Id)); var clientWtIds = clSession.Query <WordTemplate>().Select(x => x.Id).ToList(); Assert.IsTrue(voc.WordTemplates.Select(x => x.Id).IsSubsetOf(clientWtIds)); var vocOnCLient = clSession.Query <Vocabulary>() .Where(v => v.Id == voc.Id) .ToList(); var l = new VocLoader(clSession); l.LoadOrUpdateVocs(vocOnCLient); // по каждому шаблону есть слово var clientWordTitles = GetWordTitles(); Assert.IsTrue(voc.WordTemplates.Select(x => x.Title).All(x => clientWordTitles.Contains(x))); // загружена специальность выбранного словаря var clientSpecIds = clSession.Query <Speciality>().Select(x => x.Id).ToList(); Assert.IsTrue(voc.Specialities.Select(x => x.Id).All(x => clientSpecIds.Contains(x))); }
public async Task SyncVocsToLoad(ConnectionInfo remote, string local, IEnumerable <Vocabulary> vocsToLoad) { Contract.Requires(Constants.IsClient); var syncer = new Syncer( serverConStr: remote.ConnectionString, clientConStr: local, serverProviderName: remote.ProviderName); using (var s = NHib.OpenSession()) syncer = syncer.OnlySelectedVocs(s, vocsToLoad); Mouse.OverrideCursor = Cursors.AppStarting; await syncer.SendFrom(Side.Server, Scope.Voc); Mouse.OverrideCursor = null; }