예제 #1
0
        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)));
        }
예제 #2
0
        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;
        }