Exemplo n.º 1
0
    /// <inheritdoc/>
    public IFluentQuery <TEntity, TId> Sort(string columnAlias, SortOrder order)
    {
        if (Errors.Count > 0)
        {
            return(this);
        }

        return(QueryF.GetColumnFromAlias(Table, columnAlias).Switch(
                   some: x => Update(parts => parts with {
            Sort = parts.Sort.WithItem((x, order))
        }),
Exemplo n.º 2
0
    public void StrongId_Returns_StrongId_Value()
    {
        // Arrange
        var value = Rnd.Lng;

        // Act
        var result = QueryF.GetParameterValue(new TestId(value));

        // Assert
        Assert.Equal(value, result);
    }
Exemplo n.º 3
0
    public void Not_StrongId_Returns_Original_Value()
    {
        // Arrange
        var value = Rnd.Str;

        // Act
        var result = QueryF.GetParameterValue(value);

        // Assert
        Assert.Same(value, result);
    }
Exemplo n.º 4
0
    public void No_Matching_Columns_Returns_Empty_List()
    {
        // Arrange
        var table = new FooTable();

        // Act
        var result = QueryF.GetColumnsFromTable <FooNone>(table);

        // Assert
        Assert.Empty(result);
    }
    public void Unable_To_Get_Column_Returns_PropertyDoesNotExistOnTypeMsg()
    {
        // Arrange

        // Act
        var r0 = QueryF.GetColumnFromExpression <BrokenTable>(t => t.Bar);
        var r1 = QueryF.GetColumnFromExpression(new BrokenTable(), t => t.Bar);

        // Assert
        r0.AssertNone().AssertType <PropertyDoesNotExistOnTypeMsg <BrokenTable> >();
        r1.AssertNone().AssertType <PropertyDoesNotExistOnTypeMsg <BrokenTable> >();
    }
Exemplo n.º 6
0
    public void Returns_Properties_Without_Ignored()
    {
        // Arrange

        // Act
        var result = QueryF.GetModelProperties <TestModel>();

        // Assert
        Assert.Collection(result,
                          x => Assert.Equal(nameof(TestModel.Foo), x.Name),
                          x => Assert.Equal(nameof(TestModel.Bar), x.Name)
                          );
    }
Exemplo n.º 7
0
    public void No_Columns_Returns_Empty_String()
    {
        // Arrange
        var client  = Substitute.For <IDbClient>();
        var columns = new ColumnList();

        // Act
        var result = QueryF.GetColumnsFromList(client, columns);

        // Assert
        Assert.Empty(result);
        client.DidNotReceiveWithAnyArgs().Escape(Arg.Any <IColumn>(), true);
    }
Exemplo n.º 8
0
    public void Property_Does_Not_Exist_On_Table__Returns_None_With_NoMatchingItemsMsg()
    {
        // Arrange
        var table = new TestTable();

        // Act
        var r0 = QueryF.GetColumnFromAlias(table, Rnd.Str);
        var r1 = QueryF.GetColumnFromAlias <TestTable>(Rnd.Str);

        // Assert
        r0.AssertNone().AssertType <NoMatchingItemsMsg>();
        r1.AssertNone().AssertType <NoMatchingItemsMsg>();
    }
Exemplo n.º 9
0
    public void No_Columns_Returns_Empty_String()
    {
        // Arrange
        var client  = Substitute.For <IDbClient>();
        var columns = new ColumnList();

        // Act
        var result = QueryF.GetSelectFromList(client, columns);

        // Assert
        Assert.Equal(string.Empty, result);
        client.DidNotReceiveWithAnyArgs().EscapeWithTable(Arg.Any <IColumn>(), true);
        client.DidNotReceiveWithAnyArgs().JoinList(Arg.Any <List <string> >(), false);
    }
Exemplo n.º 10
0
    public void Returns_Extracted_Columns()
    {
        // Arrange
        var table = new FooTable();

        // Act
        var result = QueryF.GetColumnsFromTable <Foo>(table);

        // Assert
        Assert.Collection(result,
                          x => Assert.Equal((table.GetName(), table.FooId), (x.TblName, x.ColName)),
                          x => Assert.Equal(table.Bar0, x.ColName),
                          x => Assert.Equal(table.Bar1, x.ColName)
                          );
    }
Exemplo n.º 11
0
    public void Escapes_And_Joins_Columns()
    {
        // Arrange
        var client  = Substitute.For <IDbClient>();
        var c0      = Substitute.For <IColumn>();
        var c1      = Substitute.For <IColumn>();
        var columns = new ColumnList(new[] { c0, c1 });

        // Act
        QueryF.GetSelectFromList(client, columns);

        // Assert
        client.Received(1).EscapeWithTable(c0, true);
        client.Received(1).EscapeWithTable(c1, true);
        client.ReceivedWithAnyArgs(1).JoinList(Arg.Any <List <string> >(), false);
    }
Exemplo n.º 12
0
    public void Escapes_And_Joins_Columns()
    {
        // Arrange
        var client  = Substitute.For <IDbClient>();
        var c0      = Substitute.For <IColumn>();
        var c1      = Substitute.For <IColumn>();
        var columns = new ColumnList(new[] { c0, c1 });

        // Act
        var result = QueryF.GetColumnsFromList(client, columns);

        // Assert
        client.Received(1).Escape(c0, true);
        client.Received(1).Escape(c1, true);
        Assert.Equal(2, result.Count);
    }
Exemplo n.º 13
0
    public void Property_Exists__Get_Value_Is_Null__Returns_None_With_UnableToGetColumnFromAliasMsg()
    {
        // Arrange
        var table = new TestTable();
        var alias = nameof(TestTable.Foo);

        // Act
        var r0 = QueryF.GetColumnFromAlias(table, alias);
        var r1 = QueryF.GetColumnFromAlias <TestTable>(alias);

        // Assert
        var n0 = r0.AssertNone().AssertType <UnableToGetColumnFromAliasMsg>();

        Assert.Equal(table, n0.Table);
        Assert.Equal(alias, n0.ColumnAlias);
        var n1 = r1.AssertNone().AssertType <UnableToGetColumnFromAliasMsg>();

        Assert.Equal(table, n1.Table);
        Assert.Equal(alias, n1.ColumnAlias);
    }
    public void Returns_Column_With_Property_Value_As_Name_And_Property_Name_As_Alias()
    {
        // Arrange
        var tableName = Rnd.Str;
        var table     = new TestTable(tableName);

        // Act
        var r0 = QueryF.GetColumnFromExpression(table, t => t.Foo);
        var r1 = QueryF.GetColumnFromExpression <TestTable>(t => t.Foo);

        // Assert
        var s0 = r0.AssertSome();

        Assert.Equal(tableName, s0.TblName.Name);
        Assert.Equal(table.Foo, s0.ColName);
        Assert.Equal(nameof(table.Foo), s0.ColAlias);
        var s1 = r1.AssertSome();

        Assert.Equal("TestTable", s1.TblName.Name);
        Assert.Equal(table.Foo, s1.ColName);
        Assert.Equal(nameof(table.Foo), s1.ColAlias);
    }
Exemplo n.º 15
0
    public void Property_Exists__Get_Value_Is_String__Returns_Column_With_Correct_Values()
    {
        // Arrange
        var table = new TestTable();
        var alias = nameof(TestTable.Bar);
        var value = nameof(TestTable) + nameof(TestTable.Bar);

        // Act
        var r0 = QueryF.GetColumnFromAlias(table, alias);
        var r1 = QueryF.GetColumnFromAlias <TestTable>(alias);

        // Assert
        var s0 = r0.AssertSome();

        Assert.Equal(table.GetName(), s0.TblName);
        Assert.Equal(alias, s0.ColAlias);
        Assert.Equal(value, s0.ColName);
        var s1 = r1.AssertSome();

        Assert.Equal(table.GetName(), s1.TblName);
        Assert.Equal(alias, s1.ColAlias);
        Assert.Equal(value, s1.ColName);
    }
Exemplo n.º 16
0
 /// <inheritdoc/>
 public Task <Maybe <TValue> > ExecuteAsync <TValue>(string columnAlias, IDbTransaction transaction) =>
 QueryF.GetColumnFromAlias(Table, columnAlias)
 .BindAsync(x =>
Exemplo n.º 17
0
 /// <summary>
 /// Build a column object from a column selector expression
 /// </summary>
 /// <typeparam name="TTable">Table type</typeparam>
 /// <param name="table">Table object</param>
 /// <param name="column">Column expression</param>
 public static IColumn GetColumnFromExpression <TTable>(TTable table, Expression <Func <TTable, string> > column)
     where TTable : ITable =>
 QueryF.GetColumnFromExpression(table, column)
 .Unwrap(
     () => throw new UnableToGetColumnFromExpressionException <TTable>()