public async Task CreateRowDefaultTest() { // Setup: // ... We will have 3 columns DbColumnWrapper[] cols = { new DbColumnWrapper(new TestDbColumn("col1")), // No default new DbColumnWrapper(new TestDbColumn("col2")), // Has default (defined below) new DbColumnWrapper(new TestDbColumn("filler")) // Filler column so we can use the common code }; // ... Metadata provider will return 3 columns EditColumnMetadata[] metas = { new EditColumnMetadata // No default { DefaultValue = null, EscapedName = cols[0].ColumnName }, new EditColumnMetadata // Has default { DefaultValue = "default", EscapedName = cols[1].ColumnName }, new EditColumnMetadata { EscapedName = cols[2].ColumnName } }; var etm = new EditTableMetadata { Columns = metas, EscapedMultipartName = "tbl", IsMemoryOptimized = false }; etm.Extend(cols); // ... Create a result set var q = await Common.GetQuery(cols.Cast <DbColumn>().ToArray(), false); // ... Create a session from all this EditSession s = await Common.GetCustomSession(q, etm); // If: I add a row to the session, on a table that has defaults var result = s.CreateRow(); // Then: // ... Result should not be null, new row ID should be > 0 Assert.NotNull(result); Assert.True(result.NewRowId > 0); // ... There should be 3 default values (3 columns) Assert.NotEmpty(result.DefaultValues); Assert.Equal(3, result.DefaultValues.Length); // ... There should be specific values for each kind of default Assert.Null(result.DefaultValues[0]); Assert.Equal("default", result.DefaultValues[1]); }
public static EditTableMetadata GetCustomEditTableMetadata(DbColumn[] columns) { // Create column metadata providers and column wrappers var columnMetas = new List <EditColumnMetadata>(); var columnWrappers = new List <DbColumnWrapper>(); for (int i = 0; i < columns.Length; i++) { columnMetas.Add(new EditColumnMetadata { EscapedName = columns[i].ColumnName, Ordinal = i }); columnWrappers.Add(new DbColumnWrapper(columns[i])); } // Create the table metadata EditTableMetadata editTableMetadata = new EditTableMetadata { Columns = columnMetas.ToArray(), EscapedMultipartName = TableName, IsMemoryOptimized = false }; editTableMetadata.Extend(columnWrappers.ToArray()); return(editTableMetadata); }
public static EditTableMetadata GetStandardMetadata(DbColumn[] columns, bool isMemoryOptimized = false) { // Create column metadata providers var columnMetas = columns.Select((c, i) => { var ecm = new EditColumnMetadata { EscapedName = c.ColumnName, Ordinal = i }; return(ecm); }).ToArray(); // Create column wrappers var columnWrappers = columns.Select(c => new DbColumnWrapper(c)).ToArray(); // Create the table metadata EditTableMetadata editTableMetadata = new EditTableMetadata { Columns = columnMetas, EscapedMultipartName = "tbl", IsMemoryOptimized = isMemoryOptimized }; editTableMetadata.Extend(columnWrappers); return(editTableMetadata); }
public TestDbColumnsWithTableMetadata(bool isMemoryOptimized, bool identityCol, int defaultCols, int nullableCols) { List <DbColumn> dbColumns = new List <DbColumn>(); List <DbColumnWrapper> columnWrappers = new List <DbColumnWrapper>(); List <EditColumnMetadata> columnMetadatas = new List <EditColumnMetadata>(); int startingOrdinal = 0; // Add the identity column at the front of the table if (identityCol) { const string colName = "id"; DbColumn dbColumn = new TestDbColumn(colName) { IsKey = true, IsIdentity = true, IsAutoIncrement = true }; EditColumnMetadata columnMetadata = new EditColumnMetadata { EscapedName = colName, Ordinal = startingOrdinal, DefaultValue = null }; dbColumns.Add(dbColumn); columnWrappers.Add(new DbColumnWrapper(dbColumn)); columnMetadatas.Add(columnMetadata); startingOrdinal++; } // Add each column to the table for (int i = startingOrdinal; i < 3 + startingOrdinal; i++) { string colName = $"col{i}"; DbColumn dbColumn; EditColumnMetadata columnMetadata; if (i < defaultCols + startingOrdinal) { // This column will have a default value dbColumn = new TestDbColumn(colName) { AllowDBNull = false }; columnMetadata = new EditColumnMetadata { EscapedName = colName, Ordinal = i, DefaultValue = DefaultValue }; } else if (i < nullableCols + defaultCols + startingOrdinal) { // This column will be nullable dbColumn = new TestDbColumn(colName) { AllowDBNull = true }; columnMetadata = new EditColumnMetadata { EscapedName = colName, Ordinal = i, DefaultValue = null }; } else { // This column doesn't have a default value or is nullable dbColumn = new TestDbColumn(colName) { AllowDBNull = false }; columnMetadata = new EditColumnMetadata { EscapedName = colName, Ordinal = i, DefaultValue = null }; } dbColumns.Add(dbColumn); columnWrappers.Add(new DbColumnWrapper(dbColumn)); columnMetadatas.Add(columnMetadata); } // Put together the table metadata EditTableMetadata editTableMetadata = new EditTableMetadata { Columns = columnMetadatas.ToArray(), EscapedMultipartName = TableName, IsMemoryOptimized = isMemoryOptimized }; editTableMetadata.Extend(columnWrappers.ToArray()); DbColumns = dbColumns.ToArray(); TableMetadata = editTableMetadata; }