public void UT_Node_InsertPublic(Action <IEnumerable <int>, IEnumerable <int> > cleanup)
        {
            var nodeIds    = new List <int>();
            var versionIds = new List <int>();

            DataProviderUnitTest(nodeIds, versionIds, cleanup, () =>
            {
                var dp           = Providers.Instance.DataProvider;
                var nodeHeadData = CreateNodeHeadData("UT_Node_InsertPublic", Rng());
                var versionData  = CreateVersionData("42.0.A");
                var dynamicData  = new DynamicPropertyData
                {
                    ContentListProperties = new Dictionary <PropertyType, object>(),
                    DynamicProperties     = new Dictionary <PropertyType, object>(),
                    ReferenceProperties   = new Dictionary <PropertyType, List <int> >()
                };

                // ACTION
                dp.InsertNodeAsync(nodeHeadData, versionData, dynamicData, CancellationToken.None)
                .ConfigureAwait(false).GetAwaiter().GetResult();
                nodeIds.Add(nodeHeadData.NodeId);
                versionIds.Add(versionData.VersionId);

                // ASSERT
                var loaded = dp.LoadNodeHeadAsync(nodeHeadData.NodeId, CancellationToken.None)
                             .ConfigureAwait(false).GetAwaiter().GetResult();
                Assert.AreEqual(versionData.VersionId, loaded.LastMinorVersionId);
                Assert.AreEqual(versionData.VersionId, loaded.LastMajorVersionId);
            });
        }
        public void UT_Node_UpdateFirstDraft(Action <IEnumerable <int>, IEnumerable <int> > cleanup)
        {
            var nodeIds    = new List <int>();
            var versionIds = new List <int>();

            DataProviderUnitTest(nodeIds, versionIds, cleanup, () =>
            {
                var dp           = Providers.Instance.DataProvider;
                var nodeHeadData = CreateNodeHeadData("UT_Node_InsertDraft", Rng());
                var versionData  = CreateVersionData("0.1.D");
                var dynamicData  = new DynamicPropertyData
                {
                    ContentListProperties = new Dictionary <PropertyType, object>(),
                    DynamicProperties     = new Dictionary <PropertyType, object>(),
                    ReferenceProperties   = new Dictionary <PropertyType, List <int> >()
                };

                dp.InsertNodeAsync(nodeHeadData, versionData, dynamicData, CancellationToken.None)
                .ConfigureAwait(false).GetAwaiter().GetResult();
                nodeIds.Add(nodeHeadData.NodeId);
                versionIds.Add(versionData.VersionId);
                var expectedIndex = nodeHeadData.Index + 1;

                // ACTION
                nodeHeadData.Index++;
                dp.UpdateNodeAsync(nodeHeadData, versionData, dynamicData, new int[0], CancellationToken.None)
                .ConfigureAwait(false).GetAwaiter().GetResult();

                // ASSERT
                var loaded = dp.LoadNodeHeadAsync(nodeHeadData.NodeId, CancellationToken.None)
                             .ConfigureAwait(false).GetAwaiter().GetResult();
                Assert.AreEqual(expectedIndex, loaded.Index);
            });
        }
        public void UT_RefProp_Insert(Func <int, int, int[]> getReferencesFromDatabase, Action <IEnumerable <int>, IEnumerable <int> > cleanup)
        {
            var nodeIds    = new List <int>();
            var versionIds = new List <int>();

            DataProviderUnitTest(nodeIds, versionIds, cleanup, () =>
            {
                var schema = CreateSchema("UT_RefProp_Load", out var nodeType, out var propType);
                using (SchemaSwindler(schema))
                {
                    var dp = Providers.Instance.DataProvider;

                    var expectedIds = new List <int> {
                        2345, 3456, 4567, 5678, 6789
                    };
                    var nodeHeadData = CreateNodeHeadData("UT_RefProp_Insert", nodeType.Id);
                    var versionData  = CreateVersionData("1.42.D");
                    var dynamicData  = new DynamicPropertyData
                    {
                        ContentListProperties = new Dictionary <PropertyType, object>(),
                        DynamicProperties     = new Dictionary <PropertyType, object>(),
                        ReferenceProperties   = new Dictionary <PropertyType, List <int> > {
                            { propType, expectedIds }
                        }
                    };

                    // ACTION
                    dp.InsertNodeAsync(nodeHeadData, versionData, dynamicData, CancellationToken.None)
                    .ConfigureAwait(false).GetAwaiter().GetResult();
                    nodeIds.Add(nodeHeadData.NodeId);
                    versionIds.Add(versionData.VersionId);

                    // ASSERT
                    var after = getReferencesFromDatabase(versionData.VersionId, 9999);
                    Assert.AreEqual(string.Join(",", expectedIds.OrderBy(x => x)),
                                    string.Join(",", after.OrderBy(x => x)));
                }
            });