Ejemplo n.º 1
0
        public void VersionValidatorTest()
        {
            var domain = GetDomain();

            using (var session = domain.OpenSession())
                using (var scope = session.Activate()) {
                    var versions = new VersionSet();

                    Person alex;
                    Person dmitri;
                    using (var tx = session.OpenTransaction()) {
                        alex   = new Person(session, "Yakunin, Alex");
                        dmitri = new Person(session, "Maximov, Dmitri");
                        tx.Complete();
                    }

                    using (VersionCapturer.Attach(session, versions))
                        using (var tx = session.OpenTransaction()) {
                            // Simulating entity displaying @ web page
                            // By default this leads to their addition to VersionSet
                            Dump(alex);
                            Dump(dmitri);
                            tx.Complete();
                        }

                    // Let's clone VersionSet (actually - serialize & deserialize)
                    versions = Cloner.Clone(versions);
                    // And dump it
                    Dump(versions);

                    using (VersionValidator.Attach(session, versions))
                        using (var tx = session.OpenTransaction()) {
                            alex.Name = "Edited Alex";  // Passes
                            alex.Name = "Edited again"; // Passes, because this is not the very first modification
                            tx.Complete();
                        }

                    AssertEx.Throws <VersionConflictException>(() => {
                        using (VersionValidator.Attach(session, versions))
                            using (var tx = session.OpenTransaction()) {
                                alex.Name = "And again";
                                tx.Complete();
                            }// Version check fails on Session.Persist() here
                    });

                    using (var tx = session.OpenTransaction())
                        versions.Add(alex, true); // Overwriting versions
                    Dump(versions);

                    using (VersionValidator.Attach(session, versions))
                        using (var tx = session.OpenTransaction()) {
                            alex.Name = "Edited again"; // Passes now
                            tx.Complete();
                        }
                }
        }
Ejemplo n.º 2
0
 private void Dump(VersionSet versions)
 {
     Console.WriteLine("VersionSet: \r\n{0}",
                       versions
                       .Select(pair => new Pair <Key, VersionInfo>(pair.Key, pair.Value))
                       .ToDelimitedString("\r\n")
                       .Indent(2, true)
                       );
     Console.WriteLine();
 }
Ejemplo n.º 3
0
        public async Task GetVersionSets()
        {
            IPlanGridApi      client      = PlanGridClient.Create();
            Page <VersionSet> versionSets = await client.GetVersionSets(TestData.Project1Uid);

            Assert.AreEqual(1, versionSets.Data.Length);
            VersionSet versionSet = versionSets.Data[0];

            Assert.AreEqual(TestData.Project1VersionSet1Uid, versionSet.Uid);
            Assert.AreEqual(TestData.VersionSet1Name, versionSet.Name);
            Assert.AreEqual(TestData.VersionSet1PublishDate, versionSet.PublishDate);
        }
        public virtual void OptimisticUpdate <T>(Key key, VersionInfo expectedVersion, Action <T> updater)
            where T : class, IEntity
        {
            var expectedVersions = new VersionSet(
                new List <KeyValuePair <Key, VersionInfo> > {
                new KeyValuePair <Key, VersionInfo>(key, expectedVersion),
            });

            var session = Session.Demand();

            using (VersionValidator.Attach(session, expectedVersions)) {
                using (var tx = session.OpenTransaction()) {
                    var entity = session.Query.Single <T>(key);
                    updater.Invoke(entity);
                    session.Validate();
                    tx.Complete();
                }
            }
        }
 public void Reset()
 {
     this._currentSelectedSet = CardSet.AllCards;
     this._currentSelectedRarity = RaritySet.AnyRarity;
     this._currentSelectedVersion = VersionSet.AllVersions;
 }
        public void PickVersion(VersionSet versionSet)
        {
            //            for (int i = 0; i < 5; i++)
            //            {
                _logger.TraceFormat(LogMessageFormat, this._currentSelectedVersion, versionSet);
                this._currentSelectedVersion =
                    (VersionSet)PickFilterOption((int)this._currentSelectedVersion, (int)versionSet,
                                                 _pbv.FilterVersionsSelectorPosition);

                //var version = _pbv.TradeFilterVersionText.GetOCRValue().Enumerize();
                //try
                //{
                //    AutoItX.Sleep(i > 2 ? 5000 : 1000);
                //    var versionNames = Enum.GetNames(typeof(VersionSet));
                //    var diffSet = (from v in versionNames
                //                   let diff = Levenshtein.Compute(version, v)
                //                   where diff < 4
                //                   select v).FirstOrDefault();

                //    if (diffSet != null)
                //    {
                //        this._currentSelectedVersion = (VersionSet) Enum.Parse(typeof (VersionSet), diffSet);
                //        if (this._currentSelectedVersion != versionSet)
                //        {
                //            _logger.Info("Incorrect filter set for version trying again.");
                //        }
                //        else
                //        {
                //            break;
                //        }
                //    }
                //}
                //catch (Exception ex)
                //{
                //    if (version.StartsWith(VersionSet.Premium.ToString()))
                //    {
                //        this._currentSelectedVersion = VersionSet.Premium;
                //        break;
                //    }

                //    if (version.StartsWith(VersionSet.Packs.ToString()))
                //    {
                //        this._currentSelectedVersion = VersionSet.Packs;
                //        break;
                //    }

                //    _logger.Error(ex, "Exception parsing enum value from screen");
                //}
            //            }
        }
        public void SkipTest()
        {
            var config = DomainConfigurationFactory.Create();

            config.Types.Register(typeof(Base));
            config.Types.Register(typeof(Skip));
            config.Types.Register(typeof(VersionBehavior.Model.Version));
            config.Types.Register(typeof(HasVersion));
            config.Types.Register(typeof(HasSkipVersion));
            var domain                 = Domain.Build(config);
            var skipTypeInfo           = domain.Model.Types[typeof(Skip)];
            var hasVersionTypeInfo     = domain.Model.Types[typeof(HasVersion)];
            var hasSkipVersionTypeInfo = domain.Model.Types[typeof(HasSkipVersion)];

            Assert.AreEqual(2, skipTypeInfo.GetVersionColumns().Count);
            Assert.AreEqual(2, hasVersionTypeInfo.GetVersionColumns().Count);
            Assert.AreEqual(2, hasSkipVersionTypeInfo.GetVersionColumns().Count);
            using (var session = domain.OpenSession()) {
                var        versions        = new VersionSet();
                var        updatedVersions = new VersionSet();
                Skip       skip;
                HasVersion hasVersion;
                using (VersionCapturer.Attach(session, versions))
                    using (var t = session.OpenTransaction()) {
                        skip = new Skip()
                        {
                            Content = "Content", Tag = "Tag", Description = "Desription", NotVersion = "NotVersion"
                        };
                        hasVersion = new HasVersion {
                            Content = "Content",
                            Tag     = "Tag",
                            Version = { Major = 10, Minor = 100, Meta = 1000 }
                        };
                        t.Complete();
                    }
                using (VersionCapturer.Attach(session, updatedVersions))
                    using (VersionValidator.Attach(session, versions))
                        using (var t = session.OpenTransaction()) {
                            skip.Content       = "AnotherContent";
                            skip.Content       = "AnotherContetnCorrect";
                            hasVersion.Content = "AnotherContent";
                            hasVersion.Content = "AnotherContetnCorrect";
                            t.Complete();
                        }
                AssertEx.Throws <VersionConflictException>(() => {
                    using (VersionValidator.Attach(session, versions))
                        using (var t = session.OpenTransaction()) {
                            skip.Tag       = "AnotherTag";
                            hasVersion.Tag = "AnotherTag";
                            t.Complete();
                        }
                });

                using (VersionValidator.Attach(session, updatedVersions))
                    using (var t = session.OpenTransaction()) {
                        skip.Tag       = "AnotherTag";
                        hasVersion.Tag = "AnotherTag";
                        t.Complete();
                    }
            }
            var allVersions = new VersionSet();

            using (var session = domain.OpenSession())
                using (VersionCapturer.Attach(session, allVersions))
                    using (VersionValidator.Attach(session, allVersions)) {
                        Skip       skip;
                        HasVersion hasVersion;
                        using (var t = session.OpenTransaction()) {
                            skip = new Skip()
                            {
                                Content = "Content", Tag = "Tag", Description = "Desription", NotVersion = "NotVersion"
                            };
                            hasVersion = new HasVersion {
                                Content = "Content",
                                Tag     = "Tag",
                                Version = { Major = 10, Minor = 100, Meta = 1000 }
                            };
                            t.Complete();
                        }
                        using (var t = session.OpenTransaction()) {
                            skip.Content       = "AnotherContent";
                            skip.Content       = "AnotherContetnCorrect";
                            hasVersion.Content = "AnotherContent";
                            hasVersion.Content = "AnotherContetnCorrect";
                            t.Complete();
                        }
                        using (var t = session.OpenTransaction()) {
                            skip.Tag       = "AnotherTag";
                            hasVersion.Tag = "AnotherTag";
                            t.Complete();
                        }
                    }
        }
        public void AutoTest()
        {
            var config = DomainConfigurationFactory.Create();

            config.Types.Register(typeof(Base));
            config.Types.Register(typeof(Auto));
            config.Types.Register(typeof(AutoInheritor));
            var domain                = Domain.Build(config);
            var autoTypeInfo          = domain.Model.Types[typeof(Auto)];
            var autoInheritorTypeInfo = domain.Model.Types[typeof(AutoInheritor)];

            Assert.AreEqual(1, autoTypeInfo.GetVersionColumns().Count);
            Assert.AreEqual(2, autoInheritorTypeInfo.GetVersionColumns().Count);
            using (var session = domain.OpenSession()) {
                var           versions        = new VersionSet();
                var           updatedVersions = new VersionSet();
                Auto          auto;
                AutoInheritor autoInheritor;
                using (VersionCapturer.Attach(session, versions))
                    using (var t = session.OpenTransaction()) {
                        auto = new Auto()
                        {
                            Content = "Content", Tag = "Tag"
                        };
                        autoInheritor = new AutoInheritor()
                        {
                            Content = "Content", Tag = "Tag"
                        };
                        t.Complete();
                    }
                using (VersionCapturer.Attach(session, updatedVersions))
                    using (VersionValidator.Attach(session, versions))
                        using (var t = session.OpenTransaction()) {
                            auto.Content          = "AnotherContent";
                            auto.Content          = "AnotherContetnCorrect";
                            autoInheritor.Content = "AnotherContent";
                            autoInheritor.Content = "AnotherContetnCorrect";
                            t.Complete();
                        }
                AssertEx.Throws <VersionConflictException>(() => {
                    using (VersionValidator.Attach(session, versions))
                        using (var t = session.OpenTransaction()) {
                            auto.Tag          = "AnotherTag";
                            autoInheritor.Tag = "AnotherTag";
                            t.Complete();
                        }
                });

                using (VersionValidator.Attach(session, updatedVersions))
                    using (var t = session.OpenTransaction()) {
                        auto.Tag          = "AnotherTag";
                        autoInheritor.Tag = "AnotherTag";
                        t.Complete();
                    }
            }
            var allVersions = new VersionSet();

            using (var session = domain.OpenSession())
                using (VersionCapturer.Attach(session, allVersions))
                    using (VersionValidator.Attach(session, allVersions)) {
                        Auto          auto;
                        AutoInheritor autoInheritor;
                        using (var t = session.OpenTransaction()) {
                            auto = new Auto()
                            {
                                Content = "Content", Tag = "Tag"
                            };
                            autoInheritor = new AutoInheritor()
                            {
                                Content = "Content", Tag = "Tag"
                            };
                            t.Complete();
                        }
                        using (var t = session.OpenTransaction()) {
                            auto.Content          = "AnotherContent";
                            auto.Content          = "AnotherContetnCorrect";
                            autoInheritor.Content = "AnotherContent";
                            autoInheritor.Content = "AnotherContetnCorrect";
                            t.Complete();
                        }

                        using (var t = session.OpenTransaction()) {
                            auto.Tag          = "AnotherTag";
                            autoInheritor.Tag = "AnotherTag";
                            t.Complete();
                        }
                    }
        }
        public void ManualTest()
        {
            var config = DomainConfigurationFactory.Create();

            config.Types.Register(typeof(Base));
            config.Types.Register(typeof(Manual));
            config.Types.Register(typeof(AnotherManual));
            config.Types.Register(typeof(ManualInheritor));
            config.Types.Register(typeof(AnotherManualInheritor));
            var domain                         = Domain.Build(config);
            var manualTypeInfo                 = domain.Model.Types[typeof(Manual)];
            var anotherManualTypeInfo          = domain.Model.Types[typeof(AnotherManual)];
            var manualInheritorTypeInfo        = domain.Model.Types[typeof(ManualInheritor)];
            var anotherManualInheritorTypeInfo = domain.Model.Types[typeof(AnotherManualInheritor)];

            Assert.AreEqual(1, manualTypeInfo.GetVersionColumns().Count);
            Assert.AreEqual(2, anotherManualTypeInfo.GetVersionColumns().Count);
            Assert.AreEqual(1, manualInheritorTypeInfo.GetVersionColumns().Count);
            Assert.AreEqual(2, anotherManualInheritorTypeInfo.GetVersionColumns().Count);
            using (var session = domain.OpenSession()) {
                var                    versions        = new VersionSet();
                var                    updatedVersions = new VersionSet();
                Manual                 manual;
                ManualInheritor        manualInheritor;
                AnotherManual          anotherManual;
                AnotherManualInheritor anotherManualInheritor;
                using (VersionCapturer.Attach(session, versions))
                    using (var t = session.OpenTransaction()) {
                        manual = new Manual()
                        {
                            Tag = "Tag", Content = "Content", Version = 1
                        };
                        manualInheritor = new ManualInheritor()
                        {
                            Tag = "Tag", Content = "Content", Version = 1, Name = "Name"
                        };
                        anotherManual = new AnotherManual()
                        {
                            Tag = "Tag", Content = "Content", Version = 1, SubVersion = 100
                        };
                        anotherManualInheritor = new AnotherManualInheritor()
                        {
                            Tag = "Tag", Content = "Content", Version = 1, SubVersion = 100, Name = "Name"
                        };
                        t.Complete();
                    }
                using (VersionCapturer.Attach(session, updatedVersions))
                    using (VersionValidator.Attach(session, versions))
                        using (var t = session.OpenTransaction()) {
                            manual.Version                    = 2;
                            manual.Tag                        = "AnotherTag";
                            manual.Tag                        = "AnotherTagCorrect";
                            manualInheritor.Name              = "AnotherName";
                            manualInheritor.Version           = 2;
                            anotherManual.Tag                 = "AnotherTag";
                            anotherManual.SubVersion          = 200;
                            anotherManualInheritor.Name       = "AnotherName";
                            anotherManualInheritor.SubVersion = 200;
                            t.Complete();
                        }
                AssertEx.Throws <VersionConflictException>(() => {
                    using (VersionValidator.Attach(session, versions))
                        using (var t = session.OpenTransaction()) {
                            manual.Tag                  = "YetAnotherTag";
                            anotherManual.Tag           = "YetAnotherTag";
                            anotherManual.Version       = 2;
                            manualInheritor.Name        = "YetAnotherName";
                            anotherManualInheritor.Name = "YetAnotherName";
                            t.Complete();
                        }
                });

                using (VersionValidator.Attach(session, updatedVersions))
                    using (var t = session.OpenTransaction()) {
                        manual.Tag                  = "YetAnotherTag";
                        anotherManual.Tag           = "YetAnotherTag";
                        anotherManual.Version       = 2;
                        manualInheritor.Name        = "YetAnotherName";
                        anotherManualInheritor.Name = "YetAnotherName";
                        t.Complete();
                    }
            }
        }
        public void DefaultTest()
        {
            var config = DomainConfigurationFactory.Create();

            config.Types.Register(typeof(Base));
            config.Types.Register(typeof(Default));
            config.Types.Register(typeof(DefaultInheritor));
            var domain                   = Domain.Build(config);
            var defaultTypeInfo          = domain.Model.Types[typeof(Default)];
            var defaultInheritorTypeInfo = domain.Model.Types[typeof(DefaultInheritor)];

            Assert.AreEqual(3, defaultTypeInfo.GetVersionColumns().Count);
            Assert.AreEqual(4, defaultInheritorTypeInfo.GetVersionColumns().Count);
            using (var session = domain.OpenSession()) {
                var     versions        = new VersionSet();
                var     updatedVersions = new VersionSet();
                Default @default;
                using (VersionCapturer.Attach(session, versions))
                    using (var t = session.OpenTransaction()) {
                        @default = new Default()
                        {
                            Name = "Name", Tag = "Tag", Version = 1
                        };
                        t.Complete();
                    }
                using (VersionCapturer.Attach(session, updatedVersions))
                    using (VersionValidator.Attach(session, versions))
                        using (var t = session.OpenTransaction()) {
                            @default.Version = 2;
                            @default.Name    = "AnotherName";
                            @default.Name    = "AnotherNameCorrect";
                            t.Complete();
                        }
                AssertEx.Throws <VersionConflictException>(() => {
                    using (VersionValidator.Attach(session, versions))
                        using (var t = session.OpenTransaction()) {
                            @default.Tag = "AnotherTag";
                            t.Complete();
                        }
                });

                using (VersionValidator.Attach(session, updatedVersions))
                    using (var t = session.OpenTransaction()) {
                        @default.Tag = "AnotherTag";
                        t.Complete();
                    }
            }
            var allVersions = new VersionSet();

            using (var session = domain.OpenSession())
                using (VersionCapturer.Attach(session, allVersions))
                    using (VersionValidator.Attach(session, allVersions)) {
                        Default @default;
                        using (var t = session.OpenTransaction()) {
                            @default = new Default()
                            {
                                Name = "Name", Tag = "Tag", Version = 1
                            };
                            t.Complete();
                        }

                        using (var t = session.OpenTransaction()) {
                            @default.Version = 2;
                            @default.Name    = "AnotherName";
                            @default.Name    = "AnotherNameCorrect";
                            t.Complete();
                        }

                        using (var t = session.OpenTransaction()) {
                            @default.Tag = "AnotherTag";
                            t.Complete();
                        }
                    }
        }