Example #1
0
        public void Trash()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil(), factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            observer.TraceLog = bean.TraceLog = "";
            crud.Trash(bean);
            Assert.Empty(bean.TraceLog);
            Assert.Empty(observer.TraceLog);

            var id = crud.Store(bean);

            observer.TraceLog = bean.TraceLog = "";
            crud.Trash(bean);
            Assert.Equal("bt:" + id + " at:" + id, bean.TraceLog);
            Assert.Equal("bt:" + id + " at:" + id, observer.TraceLog);
            Assert.Equal(id, bean["id"]);

            Assert.Null(crud.Load <Tracer>(id));
        }
Example #2
0
        public void RowToBean()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, null, factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.RowToBean <Tracer>(new Dictionary <string, object> {
                { "s", "hello" }
            });

            Assert.Null(bean["id"]);
            Assert.Equal("hello", bean["s"]);
            Assert.Equal("ad: bl: al:", bean.TraceLog);
            Assert.Equal("ad: bl: al:", observer.TraceLog);

            observer.TraceLog = "";

            bean = crud.RowToBean <Tracer>(new Dictionary <string, object> {
                { "id", 123 },
                { "s", "see you" }
            });

            Assert.Equal(123, bean["id"]);
            Assert.Equal("see you", bean["s"]);
            Assert.Equal("ad: bl: al:123", bean.TraceLog);
            Assert.Equal("ad: bl: al:123", observer.TraceLog);

            Assert.Null(crud.Load("temp", null));
        }
Example #3
0
 public void Dispense_Default()
 {
     var crud = new BeanCrud(null, null, null);
     var bean = crud.Dispense("test");
     Assert.Equal("test", bean.GetKind());
     Assert.Equal(typeof(Bean), bean.GetType());
 }
Example #4
0
        public void Load()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil(), factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            // Load non-existing bean
            Assert.Null(crud.Load("any", 123));
            Assert.Empty(observer.TraceLog);

            var bean = crud.Dispense <Tracer>();

            bean.Put("p1", "test");

            var id = crud.Store(bean);

            observer.TraceLog = "";

            bean = crud.Load <Tracer>(id);
            Assert.Equal("ad: bl: al:" + id, bean.TraceLog);
            Assert.Equal("ad: bl: al:" + id, observer.TraceLog);
            Assert.NotNull(bean["id"]);
            Assert.Equal(id, bean["id"]);
            Assert.Equal("test", bean["p1"]);
        }
Example #5
0
        public void RowToBean()
        {
            var crud = new BeanCrud(new InMemoryStorage(), null, null);
            var observer = new TracingObserver();
            crud.AddObserver(observer);

            var bean = crud.RowToBean<Tracer>(new Dictionary<string, object> {
                { "s", "hello" }
            });

            Assert.Null(bean["id"]);
            Assert.Equal("hello", bean["s"]);
            Assert.Equal("ad: bl: al:", bean.TraceLog);
            Assert.Equal("ad: bl: al:", observer.TraceLog);

            observer.TraceLog = "";

            bean = crud.RowToBean<Tracer>(new Dictionary<string, object> {
                { "id", 123 },
                { "s", "see you" }
            });

            Assert.Equal(123, bean["id"]);
            Assert.Equal("see you", bean["s"]);
            Assert.Equal("ad: bl: al:123", bean.TraceLog);
            Assert.Equal("ad: bl: al:123", observer.TraceLog);

            Assert.Null(crud.Load("temp", null));
        }
Example #6
0
        public void ImplicitTransactionsOnStoreAndTrash()
        {
            using(var conn = SQLitePortability.CreateConnection()) {
                conn.Open();

                IDatabaseDetails details = new SQLiteDetails();
                IDatabaseAccess db = new DatabaseAccess(conn, details);
                IKeyAccess keys = new KeyUtil();
                DatabaseStorage storage = new DatabaseStorage(details, db, keys);
                IBeanCrud crud = new BeanCrud(storage, db, keys);

                storage.EnterFluidMode();

                var bean = crud.Dispense<ThrowingBean>();
                bean["foo"] = "ok";
                var id = crud.Store(bean);

                bean.Throw = true;
                bean["foo"] = "fail";

                try { crud.Store(bean); } catch { }
                Assert.Equal("ok", db.Cell<string>(true, "select foo from test where id = {0}", id));

                try { crud.Trash(bean); } catch { }
                Assert.True(db.Cell<int>(true, "select count(*) from test") > 0);
            }
        }
Example #7
0
        public void Store()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil(), factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            // ----- Insert
            var id = crud.Store(bean);

            Assert.Equal(0L, id);
            Assert.Equal(0L, bean["id"]);
            Assert.Equal($"ad: bs: bi: ai:{id} as:{id}", bean.TraceLog);
            Assert.Equal($"ad: bs: bi: ai:{id} as:{id}", observer.TraceLog);

            // ------ Update
            bean.Put("p1", "test");
            observer.TraceLog = "";
            bean.TraceLog     = "";
            crud.Store(bean);
            Assert.Equal(0L, bean["id"]);
            Assert.Equal($"bs:{id} bu:{id} au:{id} as:{id}", bean.TraceLog);
            Assert.Equal($"bs:{id} bu:{id} au:{id} as:{id}", observer.TraceLog);
        }
Example #8
0
        public void ImplicitTransactionsOnStoreAndTrash()
        {
            using (var conn = SQLitePortability.CreateConnection()) {
                conn.Open();

                IDatabaseDetails details = new SQLiteDetails();
                IDatabaseAccess  db      = new DatabaseAccess(conn, details);
                IKeyAccess       keys    = new KeyUtil();
                DatabaseStorage  storage = new DatabaseStorage(details, db, keys);
                IBeanFactory     factory = new BeanFactory();
                IBeanCrud        crud    = new BeanCrud(storage, db, keys, factory);

                storage.EnterFluidMode();

                var bean = crud.Dispense <ThrowingBean>();
                bean["foo"] = "ok";
                var id = crud.Store(bean);

                bean.Throw  = true;
                bean["foo"] = "fail";

                try { crud.Store(bean); } catch { }
                Assert.Equal("ok", db.Cell <string>(true, "select foo from test where id = {0}", id));

                try { crud.Trash(bean); } catch { }
                Assert.True(db.Cell <int>(true, "select count(*) from test") > 0);
            }
        }
Example #9
0
        public void Dispense_Default()
        {
            var crud = new BeanCrud(null, null, null);
            var bean = crud.Dispense("test");

            Assert.Equal("test", bean.GetKind());
            Assert.Equal(typeof(Bean), bean.GetType());
        }
Example #10
0
        public void PreventDirectInstantiation()
        {
            var crud = new BeanCrud(null, null, null);

            Assert.Throws <InvalidOperationException>(delegate() {
                crud.Store(new Tracer());
            });

            Assert.Throws <InvalidOperationException>(delegate() {
                crud.Trash(new Tracer());
            });
        }
Example #11
0
        public void PreventDirectInstantiation()
        {
            var crud = new BeanCrud(null, null, null);

            Assert.Throws<InvalidOperationException>(delegate() {
                crud.Store(new Tracer());
            });

            Assert.Throws<InvalidOperationException>(delegate() {
                crud.Trash(new Tracer());
            });
        }
Example #12
0
        public void PreventDirectInstantiation()
        {
            IBeanFactory factory = new BeanFactory();
            var          crud    = new BeanCrud(null, null, null, factory);

            Assert.Throws <InvalidOperationException>(() => {
                crud.Store(new Tracer());
            });

            Assert.Throws <InvalidOperationException>(() => {
                crud.Trash(new Tracer());
            });
        }
Example #13
0
        public void Dispense_Hooks()
        {
            var crud = new BeanCrud(null, null, null);
            var observer = new TracingObserver();
            crud.AddObserver(observer);

            var bean = crud.Dispense<Tracer>();
            Assert.Equal("tracer", bean.GetKind());

            Assert.Equal("ad:", bean.TraceLog);
            Assert.Equal("ad:", observer.TraceLog);
            Assert.Same(bean, observer.LastBean);
        }
Example #14
0
        public void Dispense_Hooks()
        {
            var crud     = new BeanCrud(null, null, null);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            Assert.Equal("tracer", bean.GetKind());

            Assert.Equal("ad:", bean.TraceLog);
            Assert.Equal("ad:", observer.TraceLog);
            Assert.Same(bean, observer.LastBean);
        }
Example #15
0
        public void Store()
        {
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil());
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            var id = crud.Store(bean);

            Assert.Equal(0L, id);
            Assert.Equal(0L, bean["id"]);
            Assert.Equal("ad: bs: as:" + id, bean.TraceLog);
            Assert.Equal("ad: bs: as:" + id, observer.TraceLog);
        }
Example #16
0
        public void Dispense_Hooks()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(null, null, null, factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            Assert.Equal("tracer", bean.GetKind());

            Assert.Equal("ad:", bean.TraceLog);
            Assert.Equal("ad:", observer.TraceLog);
            Assert.Same(bean, observer.LastBean);
        }
Example #17
0
        public void Store()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil(), factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            var id = crud.Store(bean);

            Assert.Equal(0L, id);
            Assert.Equal(0L, bean["id"]);
            Assert.Equal("ad: bs: as:" + id, bean.TraceLog);
            Assert.Equal("ad: bs: as:" + id, observer.TraceLog);
        }
Example #18
0
        public void ConvertsValueToString()
        {
            IBeanFactory factory = new BeanFactory();
            var          crud    = new BeanCrud(null, null, null, factory);

            var bean = crud.Dispense("foo");

            bean.Import(
                new Dictionary <string, object>()
            {
                { "null", null },
                { "bool", true },
                { "sbyte", sbyte.Parse("123") },
                { "ssbyte", sbyte.Parse("-123") },
                { "byte", byte.Parse("123") },
                { "int", 123 },
                { "long", 123456789L },
                { "double", 123.4567 },
                { "decimal", 123.45m },
                { "string", "Hello!" },
                { "datetime", new DateTime(2000, 1, 1) },
                { "guid", Guid.Parse("6161ADAD-72F0-48D1-ACE2-CD98315C9D5B") },
                { "byte[]", Encoding.UTF8.GetBytes("Hello!") }
            }
                );

            AssertExtensions.WithCulture("de-DE", () =>
            {
                Assert.Equal("#NULL#", bean["null"].FormatValueToString());
                Assert.Equal("true", bean["bool"].FormatValueToString());
                Assert.Equal("123", bean["sbyte"].FormatValueToString());
                Assert.Equal("-123", bean["ssbyte"].FormatValueToString());
                Assert.Equal("123", bean["byte"].FormatValueToString());
                Assert.Equal("123", bean["int"].FormatValueToString());
                Assert.Equal("123456789", bean["long"].FormatValueToString());
                Assert.Equal("123,4567", bean["double"].FormatValueToString());
                Assert.Equal("123,45", bean["decimal"].FormatValueToString());
                Assert.Equal("Hello!", bean["string"].FormatValueToString());
                Assert.Equal("2000-01-01T00:00:00", bean["datetime"].FormatValueToString());
                Assert.Equal("6161ADAD-72F0-48D1-ACE2-CD98315C9D5B", bean["guid"].FormatValueToString());
                Assert.Equal("Hello!", bean["byte[]"].FormatValueToString());
            });
        }
Example #19
0
        public void HandlesObserver()
        {
            var crud         = new BeanCrud(new InMemoryStorage(), null, null, null);
            var auditorLight = new AuditorLight();
            var tracer       = new TracingObserver();

            crud.AddObserver(auditorLight);
            crud.AddObserver(tracer);
            Assert.True(crud.HasObservers());
            Assert.True(crud.IsObserverLoaded <AuditorLight>());
            Assert.True(crud.IsObserverLoaded <TracingObserver>());

            crud.AddObserver(auditorLight);
            Assert.Equal(auditorLight, crud.GetObserver <AuditorLight>());

            crud.RemoveObserver <TracingObserver>();
            Assert.False(crud.IsObserverLoaded <TracingObserver>());

            Assert.True(crud.HasObservers());
        }
        public DatabaseBeanFinderTests()
        {
            _conn = SQLitePortability.CreateConnection();
            _conn.Open();

            IDatabaseDetails details = new SQLiteDetails();
            IDatabaseAccess  db      = new DatabaseAccess(_conn, details);
            IKeyAccess       keys    = new KeyUtil();
            IStorage         storage = new DatabaseStorage(details, db, keys);
            IBeanCrud        crud    = new BeanCrud(storage, db, keys);
            IBeanFinder      finder  = new DatabaseBeanFinder(details, db, crud);

            db.Exec("create table foo(x)");
            db.Exec("insert into foo(x) values(1)");
            db.Exec("insert into foo(x) values(2)");
            db.Exec("insert into foo(x) values(3)");

            _db     = db;
            _finder = finder;
        }
        public DatabaseBeanFinderTests()
        {
            _conn = SQLitePortability.CreateConnection();
            _conn.Open();

            IDatabaseDetails details = new SQLiteDetails();
            IDatabaseAccess db = new DatabaseAccess(_conn, details);
            IKeyAccess keys = new KeyUtil();
            IStorage storage = new DatabaseStorage(details, db, keys);
            IBeanCrud crud = new BeanCrud(storage, db, keys);
            IBeanFinder finder = new DatabaseBeanFinder(details, db, crud);

            db.Exec("create table foo(x)");
            db.Exec("insert into foo(x) values(1)");
            db.Exec("insert into foo(x) values(2)");
            db.Exec("insert into foo(x) values(3)");

            _db = db;
            _finder = finder;
        }
Example #22
0
        public void Load()
        {
            var crud = new BeanCrud(new InMemoryStorage(), null, new KeyUtil());
            var observer = new TracingObserver();
            crud.AddObserver(observer);

            // Load non-existing bean
            Assert.Null(crud.Load("any", 123));
            Assert.Empty(observer.TraceLog);

            var bean = crud.Dispense<Tracer>();
            bean.Put("p1", "test");

            var id = crud.Store(bean);
            observer.TraceLog = "";

            bean = crud.Load<Tracer>(id);
            Assert.Equal("ad: bl: al:" + id, bean.TraceLog);
            Assert.Equal("ad: bl: al:" + id, observer.TraceLog);
            Assert.NotNull(bean["id"]);
            Assert.Equal(id, bean["id"]);
            Assert.Equal("test", bean["p1"]);
        }
Example #23
0
        public void Trash()
        {
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil());
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            observer.TraceLog = bean.TraceLog = "";
            crud.Trash(bean);
            Assert.Empty(bean.TraceLog);
            Assert.Empty(observer.TraceLog);

            var id = crud.Store(bean);

            observer.TraceLog = bean.TraceLog = "";
            crud.Trash(bean);
            Assert.Equal("bt:" + id + " at:" + id, bean.TraceLog);
            Assert.Equal("bt:" + id + " at:" + id, observer.TraceLog);
            Assert.Equal(id, bean["id"]);

            Assert.Null(crud.Load <Tracer>(id));
        }
Example #24
0
        public void Trash()
        {
            var crud = new BeanCrud(new InMemoryStorage(), null, new KeyUtil());
            var observer = new TracingObserver();
            crud.AddObserver(observer);

            var bean = crud.Dispense<Tracer>();

            observer.TraceLog = bean.TraceLog = "";
            crud.Trash(bean);
            Assert.Empty(bean.TraceLog);
            Assert.Empty(observer.TraceLog);

            var id = crud.Store(bean);

            observer.TraceLog = bean.TraceLog = "";
            crud.Trash(bean);
            Assert.Equal("bt:" + id + " at:" + id, bean.TraceLog);
            Assert.Equal("bt:" + id + " at:" + id, observer.TraceLog);
            Assert.Equal(id, bean["id"]);

            Assert.Null(crud.Load<Tracer>(id));
        }
Example #25
0
        public void Store()
        {
            var crud = new BeanCrud(new InMemoryStorage(), null, new KeyUtil());
            var observer = new TracingObserver();
            crud.AddObserver(observer);

            var bean = crud.Dispense<Tracer>();

            var id = crud.Store(bean);
            Assert.Equal(0L, id);
            Assert.Equal(0L, bean["id"]);
            Assert.Equal("ad: bs: as:" + id, bean.TraceLog);
            Assert.Equal("ad: bs: as:" + id, observer.TraceLog);
        }