public async Task GetSchemaAsNode() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); string id = serializer.Serialize("Schema", schema.Id); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"query($id: ID!) { node(id: $id) { id ... on Schema { name description } } }") .SetVariableValue("id", id) .Create()); // assert result.MatchSnapshot(o => o.Assert(fo => Assert.Equal(id, fo.Field <string>("Data.node.id")))); }
public async Task UpdateSchema() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); string id = serializer.Serialize("Schema", schema.Id); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"mutation($id: ID!) { updateSchema(input: { id: $id name: ""abc2"" description: ""def2"" clientMutationId: ""ghi"" }) { schema { id name description } clientMutationId } }") .SetVariableValue("id", id) .Create()); // assert result.MatchSnapshot(o => o.Assert(fo => Assert.NotNull(fo.Field <string>("Data.updateSchema.schema.id")))); }
public async Task GetSchemaVersionById() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var schemaVersion = new SchemaVersion( Guid.NewGuid(), schema.Id, "abc", "def", Array.Empty <Tag>(), DateTime.UnixEpoch); await SchemaRepository.AddSchemaVersionAsync(schemaVersion); string id = serializer.Serialize("SchemaVersion", schemaVersion.Id); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"query($id: ID!) { schemaVersionById(id: $id) { id sourceText } }") .SetVariableValue("id", id) .Create()); // assert result.MatchSnapshot(o => o.Assert(fo => Assert.Equal(id, fo.Field <string>("Data.schemaVersionById.id")))); }
public async Task InputArgumentMiddleware_Should_MergeFormatter_When_UsedWithId() { // Arrange IRequestExecutor executor = await new ServiceCollection() .AddGraphQL() .AddQueryType <QueryId>() .EnableMutationConventions() .BuildRequestExecutorAsync(); // Act string id = new IdSerializer() .Serialize("Item", Guid.Parse("5ea909ec-ae00-4d00-8f96-afe0e8bdcad2")); IExecutionResult res = await executor .ExecuteAsync(@" query Foo($id: ID!){ createFoo(input: { bar: $id }) } ", new Dictionary <string, object?>() { ["id"] = id }); // Assert res.ToJson().MatchSnapshot(); SnapshotFullName fullName = Snapshot.FullName(); SnapshotFullName snapshotName = new(fullName.Filename + "_schema", fullName.FolderPath); executor.Schema.Print().MatchSnapshot(snapshotName); }
public async Task QuerySchema() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); string id = serializer.Serialize("Schema", schema.Id); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"query($name: String!) { schemas(where: { name: $name }) { nodes { id name description } } }") .SetVariableValue("name", schema.Name) .Create()); // assert result.MatchSnapshot(o => o.Assert(fo => Assert.Equal(id, fo.Field <string>("Data.schemas.nodes[0].id")))); }
public async Task GetEnvironmentsById() { // arrange var serializer = new IdSerializer(); var environment = new Environment(Guid.NewGuid(), "abc", "def"); await EnvironmentRepository.AddEnvironmentAsync(environment); string id = serializer.Serialize("Environment", environment.Id); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"query($ids: [ID!]!) { environmentsById(ids: $ids) { id name description } }") .SetVariableValue("ids", new[] { id }) .Create()); // assert result.MatchSnapshot(o => o.Assert(fo => Assert.Equal(id, fo.Field <string>("Data.environmentsById[0].id")))); }
public async Task GetSchemaById_Invalid_Id_Type() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); string id = serializer.Serialize("Foo", schema.Id); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"query($id: ID!) { schemaById(id: $id) { id name description } }") .SetVariableValue("id", id) .Create()); // assert result.MatchSnapshot(); }
protected override DriverResult Display(ContentWidgetsPart part, string displayType, dynamic shapeHelper) { var settings = part.Settings.GetModel <ContentWidgetsTypePartSettings>(); var excludedWidgetIds = IdSerializer.DeserializeIds(part.ExcludedWidgetIdsDefinition); var displayedWidgetIds = from id in IdSerializer.DeserializeIds(settings.AttachedWidgetIdsDefinition) where !excludedWidgetIds.Contains(id) select id; var results = new List <DriverResult>(); var widgets = _contentManager.GetMany <IContent>(displayedWidgetIds, VersionOptions.Published, new QueryHints().ExpandParts <WidgetPart>()); foreach (var widget in widgets) { // This is needed so the lambda gets a frech copy. var currentWidget = widget; results.Add( ContentShape("Parts_ContentWidgetsPart_Widget_" + currentWidget.ContentItem.Id, () => _contentManager.BuildDisplay(currentWidget)) ); } return(Combined(results.ToArray())); }
public async Task GetSchemaVersionsById_Invalid_Id_Type() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var schemaVersion = new SchemaVersion( Guid.NewGuid(), schema.Id, "abc", "def", Array.Empty <Tag>(), DateTime.UnixEpoch); await SchemaRepository.AddSchemaVersionAsync(schemaVersion); string id = serializer.Serialize("Foo", schemaVersion.Id); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"query($ids: [ID!]!) { schemaVersionsById(ids: $ids) { id sourceText } }") .SetVariableValue("ids", new[] { id }) .Create()); // assert result.MatchSnapshot(); }
public async Task GetSchemasByNames_Empty_Names() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); string id = serializer.Serialize("Schema", schema.Id); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"query($names: [String!]!) { schemasByName(names: $names) { id name description } }") .SetVariableValue("names", new string[0]) .Create()); // assert result.MatchSnapshot(); }
public async Task PublishSchema() { // arrange var serializer = new IdSerializer(); var schema = new Schema("abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var environment = new Environment("abc", "def"); await EnvironmentRepository.AddEnvironmentAsync(environment); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"mutation( $schemaName: String! $environmentName: String! $sourceText: String! $version: String!) { publishSchema(input: { schemaName: $schemaName environmentName: $environmentName sourceText: $sourceText tags: [ { key: ""version"" value: $version } ] clientMutationId: ""ghi"" }) { sessionId clientMutationId } }") .SetVariableValue("schemaName", "abc") .SetVariableValue("environmentName", "abc") .SetVariableValue("sourceText", "type Query { a: String }") .SetVariableValue("version", "1.0.0") .Create()); // assert result.MatchSnapshot(o => o.Assert(fo => Assert.NotNull(fo.Field <string>("Data.publishSchema.sessionId")))); Assert.Collection(ReceivedMessages, t => { PublishDocumentMessage message = Assert.IsType <PublishDocumentMessage>(t); Assert.Equal(schema.Id, message.SchemaId); Assert.Equal(environment.Id, message.EnvironmentId); Assert.Equal(DocumentType.Schema, message.Type); Assert.Null(message.ClientId); Assert.NotNull(message.SessionId); Assert.Collection(message.Tags, t => { Assert.Equal("version", t.Key); Assert.Equal("1.0.0", t.Value); }); }); }
// POST protected override DriverResult Editor(ContentWidgetsPart part, IUpdateModel updater, dynamic shapeHelper) { var viewModel = new ContentWidgetsViewModel(); updater.TryUpdateModel(viewModel, Prefix, null, null); var excludedWidgetIds = viewModel.Widgets.Where(widget => !widget.IsAttached).Select(widget => widget.Id); part.ExcludedWidgetIdsDefinition = IdSerializer.SerializeIds(excludedWidgetIds); return(Editor(part, shapeHelper)); }
public async Task OnPublishSchema() { // arrange var serializer = new IdSerializer(); var schema = new Schema("abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var environment = new Environment("abc", "def"); await EnvironmentRepository.AddEnvironmentAsync(environment); string sessionId = await SessionCreator.CreateSessionAsync(); await PublishSchemaEventSender.SendAsync( new PublishDocumentEvent( sessionId, new Issue("foo", "file.graphql", new Location(0, 0, 1, 1), IssueType.Information))); await PublishSchemaEventSender.SendAsync( PublishDocumentEvent.Completed(sessionId)); // act var responseStream = (IResponseStream)await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"subscription( $sessionId: String!) { onPublishSchema(sessionId: $sessionId) { sessionId isCompleted } }") .SetVariableValue("sessionId", sessionId) .Create()); // assert var results = new List <IReadOnlyQueryResult>(); await foreach (IReadOnlyQueryResult result in responseStream) { results.Add(result); } results.MatchSnapshot(matchOptions => matchOptions.Assert(fieldOption => Assert.Collection( fieldOption.Fields <string>("[*].Data.onPublishSchema.sessionId"), t => Assert.Equal(sessionId, t), t => Assert.Equal(sessionId, t)))); }
public async Task PublishSchema() { // arrange var serializer = new IdSerializer(); var schema = new Schema("abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var environment = new Environment("abc", "def"); await EnvironmentRepository.AddEnvironmentAsync(environment); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"mutation( $schemaName: String! $environmentName: String! $sourceText: String! $version: String!) { publishSchema(input: { schemaName: $schemaName environmentName: $environmentName sourceText: $sourceText tags: [ { key: ""version"" value: $version } ] clientMutationId: ""ghi"" }) { report { environment { name } schemaVersion { hash } } clientMutationId } }") .SetVariableValue("schemaName", "abc") .SetVariableValue("environmentName", "abc") .SetVariableValue("sourceText", "type Query { a: String }") .SetVariableValue("version", "1.0.0") .Create()); // assert result.MatchSnapshot(); }
public async Task GetSchemaVersionAsNode() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var schemaVersion = new SchemaVersion( Guid.NewGuid(), schema.Id, "abc", DocumentHash.FromSourceText("def"), Array.Empty <Tag>(), DateTime.UnixEpoch); await SchemaRepository.AddSchemaVersionAsync(schemaVersion); string id = serializer.Serialize("SchemaVersion", schemaVersion.Id); IFileContainer container = await Storage.CreateContainerAsync( schemaVersion.Id.ToString("N", CultureInfo.InvariantCulture)); byte[] buffer = Encoding.UTF8.GetBytes("SourceTextAbc"); await container.CreateFileAsync("schema.graphql", buffer, 0, buffer.Length); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"query($id: ID!) { node(id: $id) { id ... on SchemaVersion { sourceText hash { hash } } } }") .SetVariableValue("id", id) .Create()); // assert result.MatchSnapshot(o => o.Assert(fo => Assert.Equal(id, fo.Field <string>("Data.node.id")))); }
public async Task OnPublishSchema() { // arrange var serializer = new IdSerializer(); var schema = new Schema("abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var environment = new Environment("abc", "def"); await EnvironmentRepository.AddEnvironmentAsync(environment); string sessionId = "abc"; await PublishSchemaEventSender.SendAsync( new PublishSchemaEvent(sessionId, new Issue("foo", IssueType.Information))); await PublishSchemaEventSender.SendAsync( PublishSchemaEvent.Completed(sessionId)); // act var responseStream = (IResponseStream)await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"subscription( $sessionId: String!) { onPublishSchema(sessionId: $sessionId) { sessionId isCompleted } }") .SetVariableValue("sessionId", sessionId) .Create()); // assert var results = new List <IReadOnlyQueryResult>(); await foreach (IReadOnlyQueryResult result in responseStream) { results.Add(result); } results.MatchSnapshot(); }
public async Task CreateClient() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); string schemaId = serializer.Serialize("Schema", schema.Id); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"mutation($schemaId: ID! $name: String! $description: String) { createClient(input: { schemaId: $schemaId name: $name description: $description }) { schema { name description } client { name description } } }") .SetVariableValue("schemaId", schemaId) .SetVariableValue("name", "client_abc") .SetVariableValue("description", "client_def") .Create()); // assert result.MatchSnapshot(); }
public override IEnumerable <TemplateViewModel> TypePartEditor(ContentTypePartDefinition definition) { if (definition.PartDefinition.Name != "ContentWidgetsPart") { yield break; } var settings = definition.Settings.GetModel <ContentWidgetsTypePartSettings>(); var attachedWidgetIds = IdSerializer.DeserializeIds(settings.AttachedWidgetIdsDefinition); var viewModel = new ContentWidgetsViewModel(); viewModel.Widgets = (from widget in _widgetService.GetWidgets() select new ContentWidget { Id = widget.Id, Title = widget.Title, IsAttached = attachedWidgetIds.Contains(widget.Id) }).ToList(); yield return(DefinitionTemplate(viewModel, "ContentWidgetsTypePartSettings", Prefix)); }
// GET protected override DriverResult Editor(ContentWidgetsPart part, dynamic shapeHelper) { return(ContentShape("Parts_ContentWidgetsPart_Edit", () => { var excludedWidgetIds = IdSerializer.DeserializeIds(part.ExcludedWidgetIdsDefinition); var viewModel = new ContentWidgetsViewModel(); viewModel.Widgets = (from widget in _contentManager.GetMany <WidgetPart>( IdSerializer.DeserializeIds(part.Settings.GetModel <ContentWidgetsTypePartSettings>().AttachedWidgetIdsDefinition), VersionOptions.Published, new QueryHints().ExpandRecords <WidgetPartRecord>()) select new ContentWidget { Id = widget.ContentItem.Id, Title = widget.Title, IsAttached = !excludedWidgetIds.Contains(widget.Id) }).ToList(); return shapeHelper.EditorTemplate( TemplateName: "Parts.ContentWidgets", Model: viewModel, Prefix: Prefix); })); }
public async Task GetSchemaVersionsById_Invalid_Id_Type() { // arrange var serializer = new IdSerializer(); var schema = new Schema(Guid.NewGuid(), "abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var schemaVersion = new SchemaVersion( Guid.NewGuid(), schema.Id, "abc", DocumentHash.FromSourceText("def"), Array.Empty <Tag>(), DateTime.UnixEpoch); await SchemaRepository.AddSchemaVersionAsync(schemaVersion); string id = serializer.Serialize("Foo", schemaVersion.Id); IFileContainer container = await Storage.CreateContainerAsync( schemaVersion.Id.ToString("N", CultureInfo.InvariantCulture)); byte[] buffer = Encoding.UTF8.GetBytes("SourceTextAbc"); await container.CreateFileAsync("schema.graphql", buffer, 0, buffer.Length); // act IExecutionResult result = await Executor.ExecuteAsync( QueryRequestBuilder.New() .SetQuery( @"query($ids: [ID!]!) { schemaVersionsById(ids: $ids) { id sourceText } }") .SetVariableValue("ids", new[] { id }) .Create()); // assert result.MatchSnapshot(); }
public override IEnumerable <TemplateViewModel> TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel) { if (builder.Name != "ContentWidgetsPart") { yield break; } var viewModel = new ContentWidgetsViewModel(); updateModel.TryUpdateModel(viewModel, Prefix, null, null); var attachedWidgetIds = viewModel.Widgets.Where(widget => widget.IsAttached).Select(widget => widget.Id); builder.WithSetting("ContentWidgetsTypePartSettings.AttachedWidgetIdsDefinition", IdSerializer.SerializeIds(attachedWidgetIds)); yield return(DefinitionTemplate(viewModel, "ContentWidgetsTypePartSettings", Prefix)); }