コード例 #1
0
        public void Should_Be_Able_To_Update()
        {
            NormalModel entity = new NormalModel();

            NormalModel newEntity = new NormalModel
            {
                Id          = entity.Id,
                Description = rdg.Get <string>()
            };

            using (TestTrackerContext newContext2 = GetNewContextInstance())
            {
                newContext2.NormalModels.Attach(newEntity);
                newContext2.Entry(newEntity).State = EntityState.Modified;
                newContext2.SaveChanges();

                newEntity.AssertAuditForModification(newContext2, newEntity.Id, null,
                                                     new AuditLogDetail
                {
                    NewValue      = newEntity.Description,
                    OriginalValue = entity.Description,
                    PropertyName  = nameof(NormalModel.Description)
                });
            }
        }
コード例 #2
0
        public void CanRaiseDeleteEvent()
        {
            using (TestTrackerContext context = GetNewContextInstance())
            {
                EntityTracker.TrackAllProperties <NormalModel>();

                bool eventRaised = false;

                context.OnAuditLogGenerated += (sender, args) =>
                {
                    NormalModel eventEntity = args.Entity as NormalModel;

                    if (args.Log.EventType == EventType.Deleted &&
                        args.Log.TypeFullName == typeof(NormalModel).FullName &&
                        eventEntity != null)
                    {
                        eventRaised = true;
                    }
                };

                NormalModel existingEntity = ObjectFactory
                                             .Create <NormalModel>(save: true, testDbContext: context);

                context.NormalModels.Remove(existingEntity);
                context.SaveChanges();

                //assert
                Assert.IsTrue(eventRaised);

                existingEntity.AssertAuditForDeletion(context, existingEntity.Id, null,
                                                      x => x.Description,
                                                      x => x.Id);
            }
        }
コード例 #3
0
        public async Task Can_get_all_logs()
        {
            string      descr = RandomText;
            NormalModel model = ObjectFactory.Create <NormalModel>();

            model.Description = descr;

            Db.NormalModels.Add(model);
            await Db.SaveChangesAsync(RandomText);

            model.Id.AssertIsNotZero();

            IEnumerable <AuditLog> logs = Db
                                          .GetLogs("TrackerEnabledDbContext.Common.Testing.Models.NormalModel")
                                          .ToList();

            logs.AssertCountIsNotZero("logs not found");

            AuditLog lastLog = logs.LastOrDefault().AssertIsNotNull("last log is null");

            IEnumerable <AuditLogDetail> details = lastLog.LogDetails
                                                   .AssertIsNotNull("log details is null");

            details.AssertCountIsNotZero("no log details found");
        }
        public void Can_track_local_propery_change()
        {
            //add enity
            string oldDescription = RandomText;
            string newDescription = RandomText;
            var    entity         = new NormalModel {
                Description = oldDescription
            };

            Db.Entry(entity).State = EntityState.Added;
            Db.SaveChanges();

            //modify entity
            entity.Description = newDescription;
            Db.SaveChanges();

            AuditLogDetail[] expectedLog = new List <AuditLogDetail>
            {
                new AuditLogDetail
                {
                    NewValue      = newDescription,
                    OriginalValue = oldDescription,
                    PropertyName  = "Description"
                }
            }.ToArray();


            //assert
            entity.AssertAuditForModification(Db, entity.Id, null, expectedLog);
        }
        public async Task Can_get_all_logs()
        {
            var options = new DbContextOptionsBuilder <TestTrackerContext>()
                          .UseSqlServer(TestConnectionString)
                          .Options;

            string      descr = rdg.Get <string>();
            NormalModel model = new NormalModel();

            model.Description = descr;

            using (TestTrackerContext ttc = new TestTrackerContext(options))
            {
                ttc.NormalModels.Add(model);
                await ttc.SaveChangesAsync(rdg.Get <string>());

                model.Id.AssertIsNotZero();

                IEnumerable <AuditLog> logs = ttc.GetLogs("TrackerEnabledDbContext.Common.Tests.Models.NormalModel")
                                              .AssertCountIsNotZero("logs not found");

                AuditLog lastLog = logs.LastOrDefault().AssertIsNotNull("last log is null");

                IEnumerable <AuditLogDetail> details = lastLog.LogDetails
                                                       .AssertIsNotNull("log details is null")
                                                       .AssertCountIsNotZero("no log details found");
            }
        }
        public void Can_track_deletion_when_state_changed()
        {
            var options = new DbContextOptionsBuilder <TestTrackerContext>()
                          .UseSqlServer(TestConnectionString)
                          .Options;

            string description = rdg.Get <string>();

            //add
            NormalModel normalModel = new NormalModel();

            normalModel.Description = description;
            using (TestTrackerContext ttc = new TestTrackerContext(options))
            {
                ttc.NormalModels.Add(normalModel);
                ttc.SaveChanges();

                //remove
                ttc.Entry(normalModel).State = EntityState.Deleted;
                ttc.SaveChanges();

                //assert
                normalModel.AssertAuditForDeletion(ttc, normalModel.Id, null,
                                                   x => x.Description,
                                                   x => x.Id);
            }
        }
        public async Task Can_save_changes_with_userID()
        {
            int userId = RandomNumber;

            //add enity
            string oldDescription = RandomText;
            string newDescription = RandomText;
            var    entity         = new NormalModel {
                Description = oldDescription
            };

            Db.Entry(entity).State = EntityState.Added;
            Db.SaveChanges();

            //modify entity
            entity.Description = newDescription;
            await Db.SaveChangesAsync(userId);

            AuditLogDetail[] expectedLog = new List <AuditLogDetail>
            {
                new AuditLogDetail
                {
                    NewValue      = newDescription,
                    OriginalValue = oldDescription,
                    PropertyName  = "Description"
                }
            }.ToArray();


            //assert
            entity.AssertAuditForModification(Db, entity.Id, userId.ToString(), expectedLog);
        }
        public void Can_track_deletion()
        {
            var options = new DbContextOptionsBuilder <TestTrackerContext>()
                          .UseSqlServer(TestConnectionString)
                          .Options;

            string description = rdg.Get <string>();
            string userName    = rdg.Get <string>();

            //add
            NormalModel normalModel = new NormalModel();

            normalModel.Description = description;
            using (TestTrackerContext ttc = new TestTrackerContext(options))
            {
                ttc.NormalModels.Add(normalModel);
                ttc.SaveChanges(userName);

                //remove
                ttc.NormalModels.Remove(normalModel);
                ttc.SaveChanges(userName);

                normalModel.AssertAuditForDeletion(ttc, normalModel.Id, userName,
                                                   x => x.Description,
                                                   x => x.Id);
            }
        }
コード例 #9
0
ファイル: Form1.cs プロジェクト: mengtoumingren/CodeBuilder
        /// <summary>
        /// SQL Server生成代码
        /// </summary>
        /// <param name="className"></param>
        /// <param name="nameSpace"></param>
        /// <param name="filePath"></param>
        /// <param name="dt"></param>
        private void BuilderCode(string className, string nameSpace, string filePath, DataTable dt)
        {
            TableHelper helper = new TableHelper(false, false, false);
            NormalModel model  = new NormalModel();

            model.NameSpace = nameSpace;
            model.TableName = className;
            model.Title     = className;
            // model.SearchColumnsStr
            List <CodeModel.ColumnInfo> list = new List <CodeModel.ColumnInfo>();

            foreach (DataRow row in dt.Rows)
            {
                CodeModel.ColumnInfo column = new CodeModel.ColumnInfo();
                column.ColumnName = row["COLUMN_NAME"].ToString();
                column.DBType     = row["DATA_TYPE"].ToString();
                list.Add(column);
            }
            model.ColumnList = list;
            string content  = helper.GetClassString(model);
            string fileName = filePath + className + ".cs";

            using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
            {
                byte[] buffer = Encoding.UTF8.GetBytes(content);
                fs.Write(buffer, 0, buffer.Length);
                //fs.Flush();
                //fs.Close();
            }
        }
コード例 #10
0
ファイル: Form1.cs プロジェクト: mengtoumingren/CodeBuilder
        private void CreatCodeByPDM(string nameSpace, string filePath, TableInfo table)
        {
            string      tableName = table.Code;
            TableHelper helper    = new TableHelper(false, false, false);
            NormalModel model     = new NormalModel();

            model.NameSpace = nameSpace;
            model.TableName = tableName;
            model.Title     = table.Name;

            //model.ColumnList = table.Columns;
            // model.SearchColumnsStr
            List <CodeModel.ColumnInfo> list = new List <CodeModel.ColumnInfo>();

            foreach (var row in table.Columns)
            {
                CodeModel.ColumnInfo column = new CodeModel.ColumnInfo();
                column.ColumnName      = row.Code;
                column.DBType          = row.DataType;
                column.Comment         = row.Name;
                column.IsAutoIncrement = row.Identity;
                column.IsMainKey       = row.IsPrimaryKey;
                list.Add(column);
            }
            model.ColumnList = list;
            string content  = helper.GetClassString(model, true);
            string fileName = filePath + "\\" + tableName + ".cs";

            using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
            {
                byte[] buffer = Encoding.UTF8.GetBytes(content);
                fs.Write(buffer, 0, buffer.Length);
            }
        }
        public void Can_save_model()
        {
            NormalModel model = ObjectFactory.Create <NormalModel>();

            Db.NormalModels.Add(model);
            Db.SaveChanges();
            model.Id.AssertIsNotZero();
        }
        public void Can_save_when_entity_state_changed()
        {
            NormalModel model = ObjectFactory.Create <NormalModel>();

            Db.Entry(model).State = EntityState.Added;
            Db.SaveChanges();
            model.Id.AssertIsNotZero();
        }
        public async Task Can_save_async()
        {
            NormalModel model = ObjectFactory.Create <NormalModel>();

            Db.Entry(model).State = EntityState.Added;
            await Db.SaveChangesAsync();

            model.Id.AssertIsNotZero();
        }
コード例 #14
0
        public void Can_Create_AuditLogDetail_ForAddedEntity_WithoutQueryingDatabase()
        {
            NormalModel model = ObjectFactory.Create <NormalModel>();

            Db.NormalModels.Add(model);
            Db.ChangeTracker.DetectChanges();

            optionsBuilder.LogTo(sql => Assert.Fail("Expected no database queries but the following query was executed: {0}", sql));
        }
コード例 #15
0
        /// <summary>
        /// Creates a Distribution object by analyzing the distribution of the list.
        /// </summary>
        /// <param name="list">List to be analyzed</param>
        /// <returns>Distribution object about the list's distribution</returns>
        public static Distribution MakeDistribution <T>(this IList <T> list)
            where T : IConvertible
        {
            double      mean = list.Mean();
            NormalModel norm = new NormalModel(mean, list.StandardDeviation(mean));

            //FiveNumberSummary sum = list.Get5NS();

            return(new Distribution(norm));
        }
コード例 #16
0
        private void btnCreate_Click(object sender, EventArgs e)
        {
            NormalModel model = new NormalModel();

            model.DbName           = this.txtDBName.Text.Trim();
            model.SearchColumnsStr = this.txtSearchColumnName.Text.Trim();
            model.TableStr         = this.txtName.Text.Trim();
            model.NameSpace        = this.txtNameSpace.Text.Trim();
            model.DbType           = rbtnMSSQL.Checked ? 0 : 1;

            UIHelper.InitNormalCode(model);
            CreateClass(model);
            if (model.DbType == 0)
            {
                SqlCreateSqlHelper sqlHelper = new SqlCreateSqlHelper(model);
                SetContent(this.txtAddCode, sqlHelper.CreateInsertMethod);
                SetContent(this.txtDeleteCode, sqlHelper.CreateDeleteMethod);
                SetContent(this.txtBatDeleteCode, sqlHelper.CreateBatDeleteMethod);
                SetContent(this.txtUpdateCode, sqlHelper.CreateUpdateMethod);
                SetContent(this.txtSearchAllCode, sqlHelper.CreateSelectByPageAndSizeAddCount);
                SetContent(this.txtSearchPageCode, sqlHelper.CreateSelectByPageAndSize);
                SetContent(this.txtFactoryCode, sqlHelper.CreateConnectionFactory);
                SetContent(this.txtHelperCode, SourceHelper.GetResource, "sqlhelper.txt");
                SetContent(this.txtAll, new List <Func <string> >()
                {
                    sqlHelper.CreateInsertMethod,
                    sqlHelper.CreateDeleteMethod,
                    sqlHelper.CreateBatDeleteMethod,
                    sqlHelper.CreateUpdateMethod,
                    sqlHelper.CreateSelectByPageAndSizeAddCount,
                    sqlHelper.CreateSelectByPageAndSize
                });
            }
            else if (model.DbType == 1)
            {
                MySqlCreateMySqlHelper sqlHelper = new MySqlCreateMySqlHelper(model);
                SetContent(this.txtAddCode, sqlHelper.CreateInsertMethod);
                SetContent(this.txtDeleteCode, sqlHelper.CreateDeleteMethod);
                SetContent(this.txtBatDeleteCode, sqlHelper.CreateBatDeleteMethod);
                SetContent(this.txtUpdateCode, sqlHelper.CreateUpdateMethod);
                SetContent(this.txtSearchAllCode, sqlHelper.CreateSelectByPageAndSizeAddCount);
                SetContent(this.txtSearchPageCode, sqlHelper.CreateSelectByPageAndSize);
                SetContent(this.txtFactoryCode, sqlHelper.CreateConnectionFactory);
                SetContent(this.txtHelperCode, SourceHelper.GetResource, "mysqlhelper.txt");
                SetContent(this.txtAll, new List <Func <string> >()
                {
                    sqlHelper.CreateInsertMethod,
                    sqlHelper.CreateDeleteMethod,
                    sqlHelper.CreateBatDeleteMethod,
                    sqlHelper.CreateUpdateMethod,
                    sqlHelper.CreateSelectByPageAndSizeAddCount,
                    sqlHelper.CreateSelectByPageAndSize
                });
            }
        }
        public void Can_recognise_context_tracking_indicator_when_disabled()
        {
            NormalModel model = ObjectFactory.Create <NormalModel>();

            Db.NormalModels.Add(model);

            Db.TrackingEnabled = false;
            Db.SaveChanges();

            model.AssertNoLogs(Db, model.Id);
        }
コード例 #18
0
        private NormalModel GetDisconnectedExistingNormalModel()
        {
            TestTrackerContext newContext1 = GetNewContextInstance();
            NormalModel        entity      = new NormalModel();

            newContext1.NormalModels.Add(entity);
            newContext1.SaveChanges();

            entity.Id.AssertIsNotZero("entity was not saved to database");

            return(entity);
        }
        public void Can_Create_AuditLogDetail_ForAddedEntity_WithoutQueryingDatabase()
        {
            NormalModel model = ObjectFactory.Create <NormalModel>();

            Db.NormalModels.Add(model);
            Db.ChangeTracker.DetectChanges();
            var entry   = Db.ChangeTracker.Entries().First();
            var auditor = new AdditionLogDetailsAuditor(entry, null);

            optionsBuilder.LogTo(sql => Assert.Fail("Expected no database queries but the following query was executed: {0}", sql));
            var auditLogDetails = auditor.CreateLogDetails().ToList();
        }
コード例 #20
0
        public void CalculateNormalsCubeTest()
        {
            Model cube = new ColouredCube();

            Vector3[] normals = NormalModel.CalculateNormals(cube);
            Vector3   sum     = new Vector3();

            foreach (Vector3 v in normals)
            {
                sum += v;
            }

            VectorAssertions.AreEqual(new Vector3(), sum, 0.0001);
        }
        public void Can_track_addition_when_usermane_not_provided()
        {
            string randomText = RandomText;

            NormalModel normalModel = ObjectFactory.Create <NormalModel>();

            normalModel.Description = randomText;
            Db.NormalModels.Add(normalModel);
            Db.SaveChanges();

            normalModel.AssertAuditForAddition(Db, normalModel.Id, null,
                                               x => x.Description,
                                               x => x.Id);
        }
コード例 #22
0
        public async Task Can_get_all_logs()
        {
            string      descr = RandomText;
            NormalModel model = ObjectFactory.Create <NormalModel>();

            model.Description = descr;

            Db.NormalModels.Add(model);
            await Db.SaveChangesAsync(RandomText);

            model.Id.AssertIsNotZero();

            Db.GetLogs("TrackerEnabledDbContext.Common.Testing.Models.NormalModel")
            .AssertCountIsNotZero("logs not found");
        }
        public void Can_save_model()
        {
            var options = new DbContextOptionsBuilder <TestTrackerContext>()
                          .UseSqlServer(TestConnectionString)
                          .Options;

            NormalModel model = new NormalModel();

            using (TestTrackerContext ttc = new TestTrackerContext(options))
            {
                ttc.NormalModels.Add(model);
                ttc.SaveChanges();
            }
            model.Id.AssertIsNotZero();
        }
        public void Can_save_when_entity_state_changed()
        {
            var options = new DbContextOptionsBuilder <TestTrackerContext>()
                          .UseSqlServer(TestConnectionString)
                          .Options;

            NormalModel model = new NormalModel();

            using (TestTrackerContext ttc = new TestTrackerContext(options))
            {
                ttc.Entry(model).State = EntityState.Added;
                ttc.SaveChanges();
            }
            model.Id.AssertIsNotZero();
        }
        public void Can_track_addition_when_state_changed_directly()
        {
            string randomText = RandomText;
            string userName   = RandomText;

            NormalModel model = ObjectFactory.Create <NormalModel>();

            model.Description     = randomText;
            Db.Entry(model).State = EntityState.Added;
            Db.SaveChanges(userName);

            model.AssertAuditForAddition(Db, model.Id, userName,
                                         x => x.Description,
                                         x => x.Id);
        }
        public async Task Can_save_async()
        {
            var options = new DbContextOptionsBuilder <TestTrackerContext>()
                          .UseSqlServer(TestConnectionString)
                          .Options;

            NormalModel model = new NormalModel();

            using (TestTrackerContext ttc = new TestTrackerContext(options))
            {
                ttc.Entry(model).State = EntityState.Added;
                await ttc.SaveChangesAsync();
            }
            model.Id.AssertIsNotZero();
        }
コード例 #27
0
        public async Task Can_Override_annotation_based_configuration_for_entity_skipTracking()
        {
            var model = new NormalModel();

            EntityTracker
            .OverrideTracking <NormalModel>()
            .Disable();

            string userName = RandomText;

            Db.NormalModels.Add(model);
            await Db.SaveChangesAsync(userName);

            model.AssertNoLogs(Db, model.Id);
        }
        public void Can_track_addition_when_usermane_not_provided()
        {
            string randomText = RandomText;

            NormalModel normalModel = ObjectFactory <NormalModel> .Create();

            normalModel.Description = randomText;
            db.NormalModels.Add(normalModel);
            db.SaveChanges();

            normalModel.AssertAuditForAddition(db, normalModel.Id, null,
                                               new KeyValuePair <string, string>("Description", randomText),
                                               new KeyValuePair <string, string>("Id", normalModel.Id.ToString())
                                               );
        }
        public void Can_Create_AuditLogDetail_ForDeletedEntity_WithoutQueryingDatabase()
        {
            NormalModel model = ObjectFactory.Create <NormalModel>();

            Db.NormalModels.Add(model);
            Db.SaveChanges();
            Db.NormalModels.Remove(model);
            Db.ChangeTracker.DetectChanges();
            EntityEntry             entry   = Db.ChangeTracker.Entries().First();
            ChangeLogDetailsAuditor auditor = new ChangeLogDetailsAuditor(entry, null);

//            Db.Database.Log = sql => Assert.Fail("Expected no database queries but the following query was executed: {0}", sql);
//            var auditLogDetails = auditor.CreateLogDetails().ToList();
//            Db.Database.Log = null;
        }
        public void Can_track_addition_when_username_provided()
        {
            string randomText = RandomText;
            string userName   = RandomText;

            NormalModel normalModel = ObjectFactory <NormalModel> .Create();

            normalModel.Description = randomText;
            db.NormalModels.Add(normalModel);
            db.SaveChanges(userName);

            normalModel.AssertAuditForAddition(db, normalModel.Id, userName,
                                               x => x.Description,
                                               x => x.Id);
        }