public void creates_record_and_does_not_create_entity_change_when_is_not_added()
        {
            _entity["ProductName"].Value.Raw  = "Product";
            _entity["Discontinued"].Value.Raw = false;
            _creator.Create(_entity);

            var products = DB.Products.All().ToList();

            Assert.Equal(1, products.Count);

            A.CallTo(() => _user.Current()).MustNotHaveHappened();
            var changes = DB.EntityChanges.All().ToList();

            Assert.Equal(0, changes.Count);
        }
        public void updates_record_and_does_not_create_entity_change_when_is_not_added()
        {
            _entity["ProductName"].Value.Raw = "Product2";
            _updater.Update(_entity);

            var products = (List <Product>)DB.Products.All();

            Assert.Equal(1, products.Count);
            Assert.Equal("Product2", products.First().ProductName);

            A.CallTo(() => _user.Current()).MustNotHaveHappened();
            var changes = DB.EntityChanges.All().ToList();

            Assert.Equal(0, changes.Count);
        }
 public RecordsCreator_()
 {
     _user = A.Fake<IProvidingUser>();
     A.CallTo(() => _user.Current()).Returns("Test");
     var executor = new DbCommandExecutor(_user);
     _creator = new RecordsCreator(executor);
     Admin.AddEntity<Product>();
     Admin.SetForeignKeysReferences();
     Admin.ConnectionStringName = ConnectionStringName;
     _entity =
         Admin.EntitiesTypes.FirstOrDefault(x => x.Name == "Product");
 }
        public RecordsCreator_()
        {
            _user = A.Fake <IProvidingUser>();
            A.CallTo(() => _user.Current()).Returns("Test");
            var executor = new DbCommandExecutor(_user);

            _creator = new RecordsCreator(executor);
            Admin.AddEntity <Product>();
            Admin.SetForeignKeysReferences();
            Admin.ConnectionStringName = ConnectionStringName;
            _entity =
                Admin.EntitiesTypes.FirstOrDefault(x => x.Name == "Product");
        }
        public RecordsUpdater_()
        {
            _source = new RecordsSource(new Notificator());
            _user = A.Fake<IProvidingUser>();
            A.CallTo(() => _user.Current()).Returns("Test");
            var executor = new DbCommandExecutor(_user);
            _updater = new RecordsUpdater(executor, _source);
            Admin.AddEntity<Product>();
            Admin.SetForeignKeysReferences();
            Admin.ConnectionStringName = ConnectionStringName;

            _productId = DB.Products.Insert(ProductName: "Product").ProductID;
            _entity = _source.GetEntityWithData(Admin.GetEntity("Product"), _productId.ToString());
        }
        public RecordsUpdater_()
        {
            _source = new RecordsSource(new Notificator());
            _user   = A.Fake <IProvidingUser>();
            A.CallTo(() => _user.Current()).Returns("Test");
            var executor = new DbCommandExecutor(_user);

            _updater = new RecordsUpdater(executor, _source);
            Admin.AddEntity <Product>();
            Admin.SetForeignKeysReferences();
            Admin.ConnectionStringName = ConnectionStringName;

            _productId = DB.Products.Insert(ProductName: "Product").ProductID;
            _entity    = _source.GetEntityWithData(Admin.GetEntity("Product"), _productId.ToString());
        }
        private DbCommand CreateChangeCommand(
            string entityName,
            EntityChangeType changeType,
            string keyValue,
            Func <string> changeDescriber = null)
        {
            var cmd = DB.CreateCommand();

            var sql =
                @"INSERT INTO {0} ([EntityName], [EntityKey], [ChangeType], [Description], [ChangedOn], [ChangedBy])
VALUES (@0,@1,@2,@3,@4,@5);".Fill(Admin.ChangeEntity.TableName);

            cmd.AddParam(entityName);
            cmd.AddParam(keyValue);
            cmd.AddParam(changeType);
            cmd.AddParam(changeDescriber == null ? null : changeDescriber());
            cmd.AddParam(DateTime.UtcNow);
            cmd.AddParam(_user.Current());

            cmd.CommandText = sql;

            return(cmd);
        }