コード例 #1
0
        public void get_with_json()
        {
            var serializer = new TestsSerializer();
            var target = new Target();
            var json = serializer.ToJson(target);

            var map = new NulloIdentityMap(serializer);

            var target2 = map.Get<Target>(target.Id, json, null);
            target2.Id.ShouldBe(target.Id);
        }
コード例 #2
0
        public void lazy_get_hit()
        {
            var serializer = new TestsSerializer();
            var target = new Target();
            var json = serializer.ToJson(target);

            var map = new NulloIdentityMap(serializer);

            var target2 = map.Get<Target>(target.Id, () => new FetchResult<Target>(target, json, null));
            target2.Id.ShouldBe(target.Id);
           
        }
コード例 #3
0
ファイル: IdentityMapTests.cs プロジェクト: jtanus/pg-marten
        public void store()
        {
            var target     = Target.Random();
            var serializer = new TestsSerializer();

            var map = new IdentityMap(serializer, null);

            map.Store(target.Id, target);


            map.Get <Target>(target.Id, "", null).ShouldBeTheSameAs(target);
        }
コード例 #4
0
        public void lazy_get_hit()
        {
            var serializer = new TestsSerializer();
            var target     = new Target();
            var json       = serializer.ToJson(target);

            var map = new NulloIdentityMap(serializer);

            var target2 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, json, null));

            target2.Id.ShouldBe(target.Id);
        }
コード例 #5
0
        public void get_with_json()
        {
            var serializer = new TestsSerializer();
            var target     = new Target();
            var json       = serializer.ToJson(target);

            var map = new NulloIdentityMap(serializer);

            var target2 = map.Get <Target>(target.Id, json.ToReader(), null);

            target2.Id.ShouldBe(target.Id);
        }
コード例 #6
0
        public void get_value_on_first_request()
        {
            var target = Target.Random();

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var target2 = map.Get<Target>(target.Id, serializer.ToJson(target), null);

            target2.Id.ShouldBe(target.Id);
            target2.ShouldNotBeTheSameAs(target);
        }
コード例 #7
0
        public void get_value_on_first_request()
        {
            var target = Target.Random();

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var target2 = map.Get <Target>(target.Id, serializer.ToJson(target).ToReader(), null);

            target2.Id.ShouldBe(target.Id);
            target2.ShouldNotBeTheSameAs(target);
        }
コード例 #8
0
ファイル: IdentityMapTests.cs プロジェクト: jtanus/pg-marten
        public void get_value_on_first_request_with_lazy_json()
        {
            var target = Target.Random();

            var serializer = new TestsSerializer();

            var map = new IdentityMap(serializer, null);

            var json         = serializer.ToJson(target);
            var clonedTarget = serializer.FromJson <Target>(json);

            var target2 = map.Get <Target>(target.Id, () =>
            {
                return(new FetchResult <Target>(clonedTarget, json, null));
            });

            target2.Id.ShouldBe(target.Id);
            target2.ShouldNotBeTheSameAs(target);
        }
コード例 #9
0
        public void end_to_end_test_using_the_transform()
        {
            var user = new User {
                FirstName = "Jeremy", LastName = "Miller"
            };
            var json = new TestsSerializer().ToCleanJson(user);

            var func = TransformFunction.ForFile(new StoreOptions(), _getFullnameJs);

            using var conn = theStore.Tenancy.Default.Database.CreateConnection();
            conn.Open();
            conn.CreateCommand(func.GenerateFunction()).ExecuteNonQuery();

            var actual = (string)conn.CreateCommand("select mt_transform_get_fullname(:json)")
                         .With("json", json, NpgsqlDbType.Jsonb)
                         .ExecuteScalar();

            actual.ShouldBe("{\"fullname\": \"Jeremy Miller\"}");
        }
コード例 #10
0
        public void end_to_end_test_using_the_transform()
        {
            var user = new User {
                FirstName = "Jeremy", LastName = "Miller"
            };
            var json = new TestsSerializer().ToCleanJson(user);

            var func = TransformFunction.ForFile(new StoreOptions(), _getFullnameJs);

            using (var conn = theStore.Tenancy.Default.OpenConnection())
            {
                var cmd = new NpgsqlCommand(func.GenerateFunction());
                conn.Execute(cmd);

                var cmd2   = new NpgsqlCommand("select mt_transform_get_fullname(:json)").WithJsonParameter("json", json);
                var actual = conn.QueryScalar <string>(cmd2);

                actual.ShouldBe("{\"fullname\": \"Jeremy Miller\"}");
            }
        }
コード例 #11
0
        public void remove_item()
        {
            var target = Target.Random();
            var target2 = Target.Random();
            target2.Id = target.Id;

            var serializer = new TestsSerializer();

            var map = new IdentityMap(serializer, null);

            var target3 = map.Get<Target>(target.Id, serializer.ToJson(target), null);

            // now remove it
            map.Remove<Target>(target.Id);

            var target4 = map.Get<Target>(target.Id, serializer.ToJson(target2), null);
            target4.ShouldNotBeNull();
            target4.ShouldNotBeTheSameAs(target3);

        }
コード例 #12
0
        public void get_value_on_first_request_with_lazy_json()
        {
            var target = Target.Random();

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var json = serializer.ToJson(target);
            var clonedTarget = serializer.FromJson<Target>(json);

            var target2 = map.Get<Target>(target.Id, () =>
            {
                
                return new FetchResult<Target>(clonedTarget, json, null);
            });

            target2.Id.ShouldBe(target.Id);
            target2.ShouldNotBeTheSameAs(target);
        }
コード例 #13
0
        public void detect_changes_with_no_changes()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get <Target>(a.Id, serializer.ToJson(a).ToReader(), null);
            var b1 = map.Get <Target>(a.Id, serializer.ToJson(b).ToReader(), null);
            var c1 = map.Get <Target>(a.Id, serializer.ToJson(c).ToReader(), null);
            var d1 = map.Get <Target>(a.Id, serializer.ToJson(d).ToReader(), null);

            // no changes

            map.DetectChanges().Any().ShouldBeFalse();
        }
コード例 #14
0
        public void remove_item()
        {
            var target  = Target.Random();
            var target2 = Target.Random();

            target2.Id = target.Id;

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var target3 = map.Get <Target>(target.Id, serializer.ToJson(target).ToReader(), null);

            // now remove it
            map.Remove <Target>(target.Id);

            var target4 = map.Get <Target>(target.Id, serializer.ToJson(target2).ToReader(), null);

            target4.ShouldNotBeNull();
            target4.ShouldNotBeTheSameAs(target3);
        }
コード例 #15
0
        public void get_value_on_subsequent_requests_with_lazy_json()
        {
            var target = Target.Random();

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var target2 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, serializer.ToJson(target), null));
            var target3 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, serializer.ToJson(target), null));
            var target4 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, serializer.ToJson(target), null));
            var target5 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, serializer.ToJson(target), null));

            target2.Id.ShouldBe(target.Id);
            target3.Id.ShouldBe(target.Id);
            target4.Id.ShouldBe(target.Id);
            target5.Id.ShouldBe(target.Id);

            target2.ShouldBeTheSameAs(target3);
            target2.ShouldBeTheSameAs(target4);
            target2.ShouldBeTheSameAs(target5);
        }
コード例 #16
0
        public void get_value_on_subsequent_requests()
        {
            var target = Target.Random();

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var target2 = map.Get<Target>(target.Id, serializer.ToJson(target), null);
            var target3 = map.Get<Target>(target.Id, serializer.ToJson(target), null);
            var target4 = map.Get<Target>(target.Id, serializer.ToJson(target), null);
            var target5 = map.Get<Target>(target.Id, serializer.ToJson(target), null);

            target2.Id.ShouldBe(target.Id);
            target3.Id.ShouldBe(target.Id);
            target4.Id.ShouldBe(target.Id);
            target5.Id.ShouldBe(target.Id);

            target2.ShouldBeTheSameAs(target3);
            target2.ShouldBeTheSameAs(target4);
            target2.ShouldBeTheSameAs(target5);
        }
コード例 #17
0
ファイル: IdentityMapTests.cs プロジェクト: jtanus/pg-marten
        public void get_value_on_subsequent_requests()
        {
            var target = Target.Random();

            var serializer = new TestsSerializer();

            var map = new IdentityMap(serializer, null);

            var target2 = map.Get <Target>(target.Id, serializer.ToJson(target), null);
            var target3 = map.Get <Target>(target.Id, serializer.ToJson(target), null);
            var target4 = map.Get <Target>(target.Id, serializer.ToJson(target), null);
            var target5 = map.Get <Target>(target.Id, serializer.ToJson(target), null);

            target2.Id.ShouldBe(target.Id);
            target3.Id.ShouldBe(target.Id);
            target4.Id.ShouldBe(target.Id);
            target5.Id.ShouldBe(target.Id);

            target2.ShouldBeTheSameAs(target3);
            target2.ShouldBeTheSameAs(target4);
            target2.ShouldBeTheSameAs(target5);
        }
コード例 #18
0
        public void detect_changes_with_no_changes()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get<Target>(a.Id, serializer.ToJson(a), null);
            var b1 = map.Get<Target>(a.Id, serializer.ToJson(b), null);
            var c1 = map.Get<Target>(a.Id, serializer.ToJson(c), null);
            var d1 = map.Get<Target>(a.Id, serializer.ToJson(d), null);

            // no changes

            map.DetectChanges().Any().ShouldBeFalse();
        }
コード例 #19
0
        public void detect_changes_with_multiple_dirties()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get<Target>(a.Id, serializer.ToJson(a), null);
            a1.Long++;

            var b1 = map.Get<Target>(b.Id, serializer.ToJson(b), null);
            var c1 = map.Get<Target>(c.Id, serializer.ToJson(c), null);
            c1.Long++;

            var d1 = map.Get<Target>(d.Id, serializer.ToJson(d), null);


            var changes = map.DetectChanges();
            changes.Count().ShouldBe(2);
            changes.Any(x => x.Id.As<Guid>() == a1.Id).ShouldBeTrue();
            changes.Any(x => x.Id.As<Guid>() == c1.Id).ShouldBeTrue();
        }
コード例 #20
0
        public void detect_changes_then_clear_the_changes()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get<Target>(a.Id, serializer.ToJson(a), null);
            a1.Long++;

            var b1 = map.Get<Target>(b.Id, serializer.ToJson(b), null);
            var c1 = map.Get<Target>(c.Id, serializer.ToJson(c), null);
            c1.Long++;

            var d1 = map.Get<Target>(d.Id, serializer.ToJson(d), null);


            var changes = map.DetectChanges();

            changes.Each(x => x.ChangeCommitted());


            map.DetectChanges().Any().ShouldBeFalse();
        }
コード例 #21
0
        public void get_with_miss_in_database()
        {
            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);
            map.Get<Target>(Guid.NewGuid(), () => null).ShouldBeNull();
        }
コード例 #22
0
        public void has_positive()
        {
            var target = Target.Random();
            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            map.Store(target.Id, target);

            map.Has<Target>(target.Id).ShouldBeTrue();

        }
コード例 #23
0
        public void has_negative()
        {
            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);
            map.Has<Target>(Guid.NewGuid()).ShouldBeFalse();
        }
コード例 #24
0
        public void retrieve()
        {
            var target = Target.Random();
            var serializer = new TestsSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            map.Store(target.Id, target);

            map.Retrieve<Target>(target.Id).ShouldBeTheSameAs(target);
        }
コード例 #25
0
        public void store()
        {
            var target = Target.Random();
            var serializer = new TestsSerializer();

            var map = new IdentityMap(serializer, null);

            map.Store(target.Id, target);


            map.Get<Target>(target.Id, "", null).ShouldBeTheSameAs(target);
        }
コード例 #26
0
        public void end_to_end_test_using_the_transform()
        {
            using (var store = TestingDocumentStore.Basic())
            {
                var user = new User {FirstName = "Jeremy", LastName = "Miller"};
                var json = new TestsSerializer().ToCleanJson(user);

                var func = TransformFunction.ForFile(new StoreOptions(), _getFullnameJs);

                using (var conn = store.Advanced.OpenConnection())
                {
                    conn.Execute(cmd => cmd.Sql(func.GenerateFunction()).ExecuteNonQuery());

                    var actual = conn.Execute(cmd =>
                    {
                        return cmd.Sql("select mt_transform_get_fullname(:json)")
                            .WithJsonParameter("json", json).ExecuteScalar().As<string>();
                    });

                    actual.ShouldBe("{\"fullname\": \"Jeremy Miller\"}");
                }

                
            }
        }
コード例 #27
0
 public TestService()
 {
     _testsSerializer = new TestsSerializer();
 }
コード例 #28
0
        public void get_value_on_subsequent_requests_with_lazy_json()
        {
            var target = Target.Random();

            var serializer = new TestsSerializer();

            var map = new IdentityMap(serializer, null);

            var target2 = map.Get<Target>(target.Id, () => new FetchResult<Target>(target, serializer.ToJson(target), null));
            var target3 = map.Get<Target>(target.Id, () => new FetchResult<Target>(target, serializer.ToJson(target), null));
            var target4 = map.Get<Target>(target.Id, () => new FetchResult<Target>(target, serializer.ToJson(target), null));
            var target5 = map.Get<Target>(target.Id, () => new FetchResult<Target>(target, serializer.ToJson(target), null));

            target2.Id.ShouldBe(target.Id);
            target3.Id.ShouldBe(target.Id);
            target4.Id.ShouldBe(target.Id);
            target5.Id.ShouldBe(target.Id);

            target2.ShouldBeTheSameAs(target3);
            target2.ShouldBeTheSameAs(target4);
            target2.ShouldBeTheSameAs(target5);
        }