예제 #1
0
        public void FailsForDeleteDisallowed()
        {
            var item = new SmartEntity(_db)
            {
                Name = "Bob"
            };

            item.SetAccessLevel(AccessLevel.Insert);

            _db.Add(item);
            Assert.Equal(1, _db.SaveChanges());

            Assert.Equal(UpdateResult.FailedDeleteDisallowed, item.DeleteFromDatabase());

            item.SetAccessLevel(AccessLevel.FullAccess);
            Assert.Equal(UpdateResult.Success, item.DeleteFromDatabase());
        }
예제 #2
0
        public void DeleteFromDatabase()
        {
            var item = new SmartEntity(_db)
            {
                Name = "Bob"
            };

            _db.Add(item);
            Assert.Equal(1, _db.SaveChanges());

            Assert.Single(_db.SmartEntities);
            Assert.Equal(UpdateResult.Success, item.DeleteFromDatabase());
            Assert.Empty(_db.SmartEntities);
        }
예제 #3
0
        public void DeleteSucceedsForConcurrentDelete()
        {
            var item = new SmartEntity(_db)
            {
                Name = "Bob"
            };

            Assert.Equal(UpdateResult.Success, item.SaveToDatabase());

            // removed in another thread.
            _db.Remove(item);
            Assert.Equal(1, _db.SaveChanges());

            // the entity is still gone, even if deleted in another thread.
            Assert.Equal(UpdateResult.SuccessNoChanges, item.DeleteFromDatabase());
        }
예제 #4
0
        public void DeleteFailsForConcurrentUpdate()
        {
            var item = new SmartEntity(_db)
            {
                Name = "Bob"
            };

            Assert.Equal(UpdateResult.Success, item.SaveToDatabase());

            var v = item.RowVersion;

            item.Name = "Roy";
            Assert.Equal(UpdateResult.Success, item.SaveToDatabase());


            item.RowVersion = v;
            item.Name       = "Jon";
            Assert.Equal(UpdateResult.FailedUpdatedByOther, item.DeleteFromDatabase());
        }