Esempio n. 1
0
    public async Task Connection_parent_child()
    {
        var query   = @"
{
  parentEntitiesConnection(first:2, after: '0') {
    totalCount
    edges {
      cursor
      node {
        property
        children
        {
          property
        }
      }
    }
    items {
      property
      children
      {
        property
      }
    }
  }
}
";
        var entity1 = new ParentEntity
        {
            Property = "Value1"
        };
        var entity2 = new ChildEntity
        {
            Property = "Value2"
        };
        var entity3 = new ChildEntity
        {
            Property = "Value3"
        };

        entity1.Children.Add(entity2);
        entity1.Children.Add(entity3);
        var entity4 = new ParentEntity
        {
            Property = "Value4"
        };
        var entity5 = new ChildEntity
        {
            Property = "Value5"
        };

        entity4.Children.Add(entity5);

        await using var database = await sqlInstance.Build();

        var result = await RunQuery(database, query, null, null, entity1, entity2, entity3, entity4, entity5);

        ObjectApprover.Verify(result);
    }
Esempio n. 2
0
    public void Overwrites()
    {
        Console.WriteLine("from Console");
        Debug.WriteLine("from Debug");
        Trace.WriteLine("from Trace");
        var logs = XunitLogging.Flush();

        ObjectApprover.Verify(logs);
    }
Esempio n. 3
0
    public void Info()
    {
        LocalDbApi.CreateAndStart("InfoTest");
        var info = LocalDbApi.GetInstance("InfoTest");

        ObjectApprover.Verify(info);
        LocalDbApi.StopAndDelete("InfoTest");
        Assert.False(LocalDbApi.GetInstance("InfoTest").Exists);
    }
Esempio n. 4
0
 public void Write_lines()
 {
     Write("part1");
     Write(" part2");
     WriteLine();
     WriteLine("part3");
     WriteLine("ignored");
     ObjectApprover.Verify(Logs);
 }
 public async Task SyncSingle()
 {
     using (var database = await BuildContext())
         using (database.Context.FilterResults(BuildFilters()))
         {
             var result = database.Context.ParentEntities.Include(x => x.Children).Single();
             ObjectApprover.Verify(result);
         }
 }
Esempio n. 6
0
    public void Write_lines()
    {
        XunitLogging.Write("part1");
        XunitLogging.Write(" part2");
        XunitLogging.WriteLine();
        XunitLogging.WriteLine("part3");
        var logs = XunitLogging.Flush();

        ObjectApprover.Verify(logs);
    }
Esempio n. 7
0
    public async Task Queryable(int?first, int?after, int?last, int?before)
    {
        var fieldContext = new ResolveFieldContext <string>();

        await using var database = await sqlInstance.BuildWithRollback();

        var entities   = database.Context.Entities;
        var connection = await ConnectionConverter.ApplyConnectionContext(entities, first, after, last, before, fieldContext, new Filters());

        ObjectApprover.Verify(connection);
    }
Esempio n. 8
0
 static void Verify(TestResult result)
 {
     ObjectApprover.Verify(new
     {
         result.Errors,
         result.Messages,
         result.Warnings,
         result.AssemblyPath,
         result.Assembly.FullName
     },
                           ScrubCurrentDirectory);
 }
Esempio n. 9
0
    public async Task NoFileAndNoInstance()
    {
        LocalDbApi.StopAndDelete("NoFileAndNoInstance");
        DirectoryFinder.Delete("NoFileAndNoInstance");

        var wrapper = new Wrapper("NoFileAndNoInstance", DirectoryFinder.Find("NoFileAndNoInstance"));

        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        await wrapper.CreateDatabaseFromTemplate("Simple");

        ObjectApprover.Verify(await wrapper.ReadDatabaseState("Simple"));
        LocalDbApi.StopInstance("NoFileAndNoInstance");
    }
Esempio n. 10
0
    public async Task Child_parent()
    {
        var query = @"
{
  childEntities
  {
    property
    parent
    {
      property
    }
  }
}";

        var entity1 = new ParentEntity
        {
            Property = "Value1"
        };
        var entity2 = new ChildEntity
        {
            Property = "Value2",
            Parent   = entity1
        };
        var entity3 = new ChildEntity
        {
            Property = "Value3",
            Parent   = entity1
        };

        entity1.Children.Add(entity2);
        entity1.Children.Add(entity3);
        var entity4 = new ParentEntity
        {
            Property = "Value4"
        };
        var entity5 = new ChildEntity
        {
            Property = "Value5",
            Parent   = entity4
        };

        entity4.Children.Add(entity5);

        using (var database = await sqlInstance.Build())
        {
            var result = await RunQuery(database, query, null, null, entity1, entity2, entity3, entity4, entity5);

            ObjectApprover.Verify(result);
        }
    }
Esempio n. 11
0
    public async Task Async()
    {
        await Task.Delay(1);

        XunitLogging.WriteLine("part1");
        await Task.Delay(1).ConfigureAwait(false);

        XunitLogging.WriteLine("part2");
        await Task.Delay(1).ConfigureAwait(false);

        var logs = XunitLogging.Flush();

        ObjectApprover.Verify(logs);
    }
Esempio n. 12
0
    public async Task SingleParent_Child()
    {
        var query = @"
{
  parentEntity(id: ""00000000-0000-0000-0000-000000000001"") {
    property
    children
    {
      property
    }
  }
}";

        var entity1 = new ParentEntity
        {
            Id       = Guid.Parse("00000000-0000-0000-0000-000000000001"),
            Property = "Value1"
        };
        var entity2 = new ChildEntity
        {
            Property = "Value2",
            Parent   = entity1
        };
        var entity3 = new ChildEntity
        {
            Property = "Value3",
            Parent   = entity1
        };

        entity1.Children.Add(entity2);
        entity1.Children.Add(entity3);
        var entity4 = new ParentEntity
        {
            Property = "Value4"
        };
        var entity5 = new ChildEntity
        {
            Property = "Value5",
            Parent   = entity4
        };

        entity4.Children.Add(entity5);

        using (var database = await sqlInstance.Build())
        {
            var result = await RunQuery(database, query, null, null, entity1, entity2, entity3, entity4, entity5);

            ObjectApprover.Verify(result);
        }
    }
    public async Task Connection_parent_child_Filtered()
    {
        var query   = @"
{
  parentEntitiesConnectionFiltered {
    totalCount
    edges {
      cursor
      node {
        property
        children
        {
          property
        }
      }
    }
    items {
      property
      children
      {
        property
      }
    }
  }
}
";
        var entity1 = new FilterParentEntity
        {
            Property = "Value1"
        };
        var entity2 = new FilterChildEntity
        {
            Property = "Ignore"
        };
        var entity3 = new FilterChildEntity
        {
            Property = "Value3"
        };

        entity1.Children.Add(entity2);
        entity1.Children.Add(entity3);

        using (var database = await sqlInstance.Build())
        {
            var result = await RunQuery(database, query, null, BuildFilters(), entity1, entity2, entity3);

            ObjectApprover.Verify(result);
        }
    }
Esempio n. 14
0
    public async Task SingleNullable_NotFound()
    {
        var query = @"
{
  parentEntityNullable(id: ""00000000-0000-0000-0000-000000000001"") {
    property
  }
}";

        using var database = await sqlInstance.Build();

        var result = await RunQuery(database, query, null, null);

        ObjectApprover.Verify(result);
    }
Esempio n. 15
0
    public async Task Single_NotFound()
    {
        var query = @"
{
  parentEntity(id: ""00000000-0000-0000-0000-000000000001"") {
    property
  }
}";

        using var database = await sqlInstance.Build();

        var error = await Assert.ThrowsAsync <ExecutionError>(() => RunQuery(database, query, null, null));

        ObjectApprover.Verify(error.Message);
    }
Esempio n. 16
0
    public async Task Where_with_nullable_properties1()
    {
        var query = "{ withNullableEntities (where: {path: 'Nullable', comparison: 'equal'}){ id } }";

        var entity1 = new WithNullableEntity();
        var entity2 = new WithNullableEntity
        {
            Nullable = 10
        };

        using var database = await sqlInstance.Build();

        var result = await RunQuery(database, query, null, null, entity1, entity2);

        ObjectApprover.Verify(result);
    }
Esempio n. 17
0
    public async Task With_null_navigation_property()
    {
        var query = @"
{
  childEntities(where: {path: 'ParentId', comparison: 'equal', value: '00000000-0000-0000-0000-000000000001'})
  {
    property
    parent
    {
      property
    }
  }
}";

        var entity1 = new ParentEntity
        {
            Id       = Guid.Parse("00000000-0000-0000-0000-000000000001"),
            Property = "Value1"
        };
        var entity2 = new ChildEntity
        {
            Property = "Value2",
            Parent   = entity1
        };
        var entity3 = new ChildEntity
        {
            Property = "Value3",
            Parent   = entity1
        };

        entity1.Children.Add(entity2);
        entity1.Children.Add(entity3);
        var entity5 = new ChildEntity
        {
            Property = "Value5"
        };

        using (var database = await sqlInstance.Build())
        {
            var result = await RunQuery(database, query, null, null, entity1, entity2, entity3, entity5);

            ObjectApprover.Verify(result);
        }
    }
Esempio n. 18
0
    public async Task Where_null_comparison_value()
    {
        var query = "{ parentEntities (where: {path: 'Property', comparison: 'equal'}){ id } }";

        var entity1 = new ParentEntity
        {
            Property = null
        };
        var entity2 = new ParentEntity
        {
            Property = "Value2"
        };

        using var database = await sqlInstance.Build();

        var result = await RunQuery(database, query, null, null, entity1, entity2);

        ObjectApprover.Verify(result);
    }
Esempio n. 19
0
    static void Verify <T>(List <LogEventEx> logEvents)
    {
        var logsForTarget    = logEvents.LogsForType <T>().ToList();
        var nsbVersion       = FileVersionInfo.GetVersionInfo(typeof(Endpoint).Assembly.Location);
        var nsbVersionString = $"{nsbVersion.FileMajorPart}.{nsbVersion.FileMinorPart}.{nsbVersion.FileBuildPart}";

        ObjectApprover.Verify(
            new
        {
            logsForTarget,
            logsForNsbSerilog  = logEvents.LogsForNsbSerilog().ToList(),
            logsWithExceptions = logEvents.LogsWithExceptions().ToList()
        },
            jsonSerializerSettings: null,
            scrubber: s => s
            .Replace(Environment.MachineName, "MachineName")
            .Replace(nsbVersionString, "NsbVersion")
            .RemoveLinesContaining("StackTraceString"));
    }
Esempio n. 20
0
    public async Task Null_on_nested()
    {
        var query = @"
{
  level1Entities(where: {path: 'Level2Entity.Level3EntityId', comparison: 'equal', value: '00000000-0000-0000-0000-000000000003'})
  {
    level2Entity
    {
      level3Entity
      {
        property
      }
    }
  }
}";

        var level3a = new Level3Entity
        {
            Id       = Guid.Parse("00000000-0000-0000-0000-000000000003"),
            Property = "Valuea"
        };
        var level2a = new Level2Entity
        {
            Level3Entity = level3a
        };
        var level1a = new Level1Entity
        {
            Level2Entity = level2a
        };

        var level2b = new Level2Entity();
        var level1b = new Level1Entity
        {
            Level2Entity = level2b
        };

        using (var database = await sqlInstance.Build())
        {
            var result = await RunQuery(database, query, null, null, level1b, level2b, level1a, level2a, level3a);

            ObjectApprover.Verify(result);
        }
    }
Esempio n. 21
0
    public void Null()
    {
        XunitLogging.WriteLine("XunitLogger.WriteLine");
        XunitLogging.WriteLine();
        XunitLogging.WriteLine("Console.WriteLine(null)");
#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type.
        Console.WriteLine((string)null);
#pragma warning restore CS8600 // Converting null literal or possible null value to non-nullable type.
        XunitLogging.WriteLine("Debug.WriteLine(null)");
        Debug.WriteLine(null);
        XunitLogging.WriteLine("Debug.Write(null)");
        Debug.Write(null);
        XunitLogging.WriteLine("Trace.WriteLine(null)");
        Trace.WriteLine(null);
        XunitLogging.WriteLine("Trace.Write(null)");
        Trace.Write(null);
        var logs = XunitLogging.Flush();
        ObjectApprover.Verify(logs);
    }
Esempio n. 22
0
    public void Counters()
    {
        var context = XunitLogging.Context;
        var foo     = new
        {
            int1   = context.NextInt(),
            int2   = context.NextInt(),
            uint1  = context.NextUInt(),
            uint2  = context.NextUInt(),
            long1  = context.NextLong(),
            long2  = context.NextLong(),
            ulong1 = context.NextULong(),
            ulong2 = context.NextULong(),
            guid1  = context.NextGuid(),
            guid2  = context.NextGuid(),
        };

        ObjectApprover.Verify(foo);
    }
    public void ValidPropsFromBase()
    {
        var moduleDefinition = ModuleDefinition.CreateModule("Foo", ModuleKind.Dll);

        var resolver    = new MockAssemblyResolver();
        var innerWeaver = BuildInnerWeaver(moduleDefinition, resolver);

        innerWeaver.SplitUpReferences();

        var weaverEntry = new WeaverEntry
        {
            Element      = "<foo/>",
            AssemblyPath = @"c:\FakePath\Assembly.dll"
        };
        var moduleWeaver = new ValidFromBaseModuleWeaver();

        innerWeaver.SetProperties(weaverEntry, moduleWeaver);

        SerializerBuilder.IgnoreMembersWithType <ModuleDefinition>();
        ObjectApprover.Verify(moduleWeaver);
    }
Esempio n. 24
0
    public async Task MisNamedQuery()
    {
        var query = @"
{
  misNamed
  {
    misNamedChildren
    {
      id
    }
  }
}";

        var entity1 = new WithMisNamedQueryParentEntity();
        var entity2 = new WithMisNamedQueryChildEntity
        {
            Parent = entity1
        };
        var entity3 = new WithMisNamedQueryChildEntity
        {
            Parent = entity1
        };

        entity1.Children.Add(entity2);
        entity1.Children.Add(entity3);
        var entity4 = new WithMisNamedQueryParentEntity();
        var entity5 = new WithMisNamedQueryChildEntity
        {
            Parent = entity4
        };

        entity4.Children.Add(entity5);

        using (var database = await sqlInstance.Build())
        {
            var result = await RunQuery(database, query, null, null, entity1, entity2, entity3, entity4, entity5);

            ObjectApprover.Verify(result);
        }
    }
Esempio n. 25
0
    public async Task RecreateWithOpenConnection()
    {
        LocalDbApi.StopAndDelete("RecreateWithOpenConnection");
        DirectoryFinder.Delete("RecreateWithOpenConnection");

        var wrapper = new Wrapper("RecreateWithOpenConnection", DirectoryFinder.Find("RecreateWithOpenConnection"));

        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        var connectionString = await wrapper.CreateDatabaseFromTemplate("Simple");

        using (var connection = new SqlConnection(connectionString))
        {
            await connection.OpenAsync();

            wrapper = new Wrapper("RecreateWithOpenConnection", DirectoryFinder.Find("RecreateWithOpenConnection"));
            wrapper.Start(timestamp, TestDbBuilder.CreateTable);
            await wrapper.CreateDatabaseFromTemplate("Simple");
        }

        ObjectApprover.Verify(await wrapper.ReadDatabaseState("Simple"));
        LocalDbApi.StopInstance("RecreateWithOpenConnection");
    }
    public async Task Child_filtered()
    {
        var query = @"
{
  parentEntitiesFiltered
  {
    property
    children
    {
      property
    }
  }
}";

        var entity1 = new FilterParentEntity
        {
            Property = "Value1"
        };
        var entity2 = new FilterChildEntity
        {
            Property = "Ignore",
            Parent   = entity1
        };
        var entity3 = new FilterChildEntity
        {
            Property = "Value3",
            Parent   = entity1
        };

        entity1.Children.Add(entity2);
        entity1.Children.Add(entity3);
        using (var database = await sqlInstance.Build())
        {
            var result = await RunQuery(database, query, null, BuildFilters(), entity1, entity2, entity3);

            ObjectApprover.Verify(result);
        }
    }
Esempio n. 27
0
    public async Task DeleteDatabaseWithOpenConnection()
    {
        var connection = await instance.CreateDatabaseFromTemplate("ToDelete");

        using (var sqlConnection = new SqlConnection(connection))
        {
            await sqlConnection.OpenAsync();

            await instance.DeleteDatabase("ToDelete");

            var deletedState = await instance.ReadDatabaseState("ToDelete");

            await instance.CreateDatabaseFromTemplate("ToDelete");

            var createdState = await instance.ReadDatabaseState("ToDelete");

            ObjectApprover.Verify(new
            {
                deletedState,
                createdState
            });
        }
    }
Esempio n. 28
0
    public async Task Multiple_nested()
    {
        var query = @"
{
  level1Entities
  {
    level2Entity
    {
      level3Entity
      {
        property
      }
    }
  }
}";

        var level3 = new Level3Entity
        {
            Property = "Value"
        };
        var level2 = new Level2Entity
        {
            Level3Entity = level3
        };
        var level1 = new Level1Entity
        {
            Level2Entity = level2
        };

        using (var database = await sqlInstance.Build())
        {
            var result = await RunQuery(database, query, null, null, level1, level2, level3);

            ObjectApprover.Verify(result);
        }
    }
Esempio n. 29
0
    public async Task Where_multiple()
    {
        var query = @"
{
  parentEntities
  (where:
    [
      {path: 'Property', comparison: 'startsWith"", value: 'Valu'}
      {path: 'Property', comparison: 'endsWith"", value: 'ue3'}
    ]
  )
  {
    property
  }
}";

        var entity1 = new ParentEntity
        {
            Property = "Value1"
        };
        var entity2 = new ParentEntity
        {
            Property = "Value2"
        };
        var entity3 = new ParentEntity
        {
            Property = "Value3"
        };

        using (var database = await sqlInstance.Build())
        {
            var result = await RunQuery(database, query, null, null, entity1, entity2, entity3);

            ObjectApprover.Verify(result);
        }
    }
    public async Task Run()
    {
        GraphTypeTypeRegistry.Register <Entity1, Entity1Graph>();
        GraphTypeTypeRegistry.Register <Entity2, Entity2Graph>();

        var sqlInstance1 = new SqlInstance <DbContext1>(
            constructInstance: builder => new DbContext1(builder.Options));

        var sqlInstance2 = new SqlInstance <DbContext2>(
            constructInstance: builder => new DbContext2(builder.Options));

        var query = @"
{
  entity1
  {
    property
  },
  entity2
  {
    property
  }
}";

        var entity1 = new Entity1
        {
            Property = "the entity1"
        };
        var entity2 = new Entity2
        {
            Property = "the entity2"
        };

        var sqlDatabase1 = await sqlInstance1.Build();

        var sqlDatabase2 = await sqlInstance2.Build();

        await using (var dbContext = sqlDatabase1.NewDbContext())
        {
            dbContext.AddRange(entity1);
            await dbContext.SaveChangesAsync();
        }

        await using (var dbContext = sqlDatabase2.NewDbContext())
        {
            dbContext.AddRange(entity2);
            await dbContext.SaveChangesAsync();
        }

        await using var dbContext1 = sqlDatabase1.NewDbContext();
        await using var dbContext2 = sqlDatabase2.NewDbContext();
        var services = new ServiceCollection();

        services.AddSingleton <MultiContextQuery>();
        services.AddSingleton <Entity1Graph>();
        services.AddSingleton <Entity2Graph>();
        services.AddSingleton(dbContext1);
        services.AddSingleton(dbContext2);

        #region RegisterMultipleInContainer
        EfGraphQLConventions.RegisterInContainer(
            services,
            userContext => ((UserContext)userContext).DbContext1);
        EfGraphQLConventions.RegisterInContainer(
            services,
            userContext => ((UserContext)userContext).DbContext2);
        #endregion

        await using var provider = services.BuildServiceProvider();
        using var schema         = new MultiContextSchema(new FuncDependencyResolver(provider.GetRequiredService));
        var documentExecuter = new EfDocumentExecuter();
        #region MultiExecutionOptions
        var executionOptions = new ExecutionOptions
        {
            Schema      = schema,
            Query       = query,
            UserContext = new UserContext(dbContext1, dbContext2)
        };
        #endregion

        var executionResult = await documentExecuter.ExecuteWithErrorCheck(executionOptions);

        ObjectApprover.Verify(executionResult.Data);
    }