Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -333,4 +333,395 @@ describe('convertToDevtoolsSignalGraph', () => {
},
});
});

it('should handle cluster-to-cluster dependencies (unidirectional)', () => {
const debugGraph: DebugSignalGraph = {
nodes: [
{
id: 'a',
kind: 'signal',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'Resource#foo.signalFoo',
},
{
id: 'b',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'Resource#bar.computedBar',
},
{
id: 'c',
kind: 'template',
epoch: 1,
debuggable: false,
preview: dummyPreview,
},
],
edges: [
{producer: 0, consumer: 1},
{producer: 1, consumer: 2},
],
};
const graph = convertToDevtoolsSignalGraph(debugGraph);

expect(graph).toEqual({
nodes: [
{
id: 'a',
kind: 'signal',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'signalFoo',
nodeType: 'signal',
clusterId: 'cl_foo',
},
{
id: 'b',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'computedBar',
nodeType: 'signal',
clusterId: 'cl_bar',
},
{
id: 'c',
kind: 'template',
epoch: 1,
debuggable: false,
preview: dummyPreview,
nodeType: 'signal',
clusterId: undefined,
},
{
id: 'cl_foo',
nodeType: 'cluster',
clusterType: 'resource',
label: 'foo',
previewNode: undefined,
},
{
id: 'cl_bar',
nodeType: 'cluster',
clusterType: 'resource',
label: 'bar',
previewNode: undefined,
},
],
edges: [
{producer: 0, consumer: 1}, // Pre-existing (signalFoo->computedBar)
{producer: 1, consumer: 2}, // Pre-existing (computedBar->template)
{producer: 3, consumer: 1}, // Cluster-to-signal (foo->computedBar)
{producer: 4, consumer: 2}, // Cluster-to-template (bar->template)
{producer: 0, consumer: 4}, // Signal-to-cluster (signalFoo->bar)
{producer: 3, consumer: 4}, // Cluster-to-cluster (foo->bar)
],
clusters: {
'cl_foo': {
id: 'cl_foo',
name: 'foo',
type: 'resource',
},
'cl_bar': {
id: 'cl_bar',
name: 'bar',
type: 'resource',
},
},
});
});

it('should handle cluster-to-cluster dependencies (multidirectional)', () => {
const debugGraph: DebugSignalGraph = {
nodes: [
{
id: 'a',
kind: 'signal',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'Resource#foo.signalFoo',
},
{
id: 'b',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'Resource#foo.computedFoo',
},
{
id: 'c',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'Resource#bar.computedBar',
},
{
id: 'd',
kind: 'signal',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'Resource#bar.signalBar',
},
{
id: 'e',
kind: 'template',
epoch: 1,
debuggable: false,
preview: dummyPreview,
},
],
edges: [
{producer: 0, consumer: 2},
{producer: 3, consumer: 1},
{producer: 2, consumer: 4},
{producer: 1, consumer: 4},
],
};
const graph = convertToDevtoolsSignalGraph(debugGraph);

expect(graph).toEqual({
nodes: [
{
id: 'a',
kind: 'signal',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'signalFoo',
nodeType: 'signal',
clusterId: 'cl_foo',
},
{
id: 'b',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'computedFoo',
nodeType: 'signal',
clusterId: 'cl_foo',
},
{
id: 'c',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'computedBar',
nodeType: 'signal',
clusterId: 'cl_bar',
},
{
id: 'd',
kind: 'signal',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'signalBar',
nodeType: 'signal',
clusterId: 'cl_bar',
},
{
id: 'e',
kind: 'template',
epoch: 1,
debuggable: false,
preview: dummyPreview,
nodeType: 'signal',
clusterId: undefined,
},
{
id: 'cl_foo',
nodeType: 'cluster',
clusterType: 'resource',
label: 'foo',
previewNode: undefined,
},
{
id: 'cl_bar',
nodeType: 'cluster',
clusterType: 'resource',
label: 'bar',
previewNode: undefined,
},
],
edges: [
{producer: 0, consumer: 2}, // Pre-existing (signalFoo->computedBar)
{producer: 3, consumer: 1}, // Pre-existing (signalBar->computedFoo)
{producer: 2, consumer: 4}, // Pre-existing (computedBar->template)
{producer: 1, consumer: 4}, // Pre-existing (computedFoo->template)
{producer: 5, consumer: 2}, // Cluster-to-signal (foo->computedBar)
{producer: 5, consumer: 4}, // Cluster-to-template (foo->template)
{producer: 3, consumer: 5}, // Signal-to-cluster (signalBar->foo)
{producer: 6, consumer: 4}, // Cluster-to-template (bar->template)
{producer: 6, consumer: 1}, // Cluster-to-signal (bar->computedFoo)
{producer: 0, consumer: 6}, // Signal-to-cluster (signalFoo->bar)
{producer: 6, consumer: 5}, // Cluster-to-cluster (bar->foo)
{producer: 5, consumer: 6}, // Cluster-to-cluster (foo->bar)
],
clusters: {
'cl_foo': {
id: 'cl_foo',
name: 'foo',
type: 'resource',
},
'cl_bar': {
id: 'cl_bar',
name: 'bar',
type: 'resource',
},
},
});
});

it('should handle cluster-to-cluster dependencies with one-to-many relationship (1:N)', () => {
const debugGraph: DebugSignalGraph = {
nodes: [
{
id: 'a',
kind: 'signal',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'Resource#foo.signalFoo',
},
{
id: 'b',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'Resource#bar.computedBar',
},
{
id: 'c',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'Resource#baz.computedBaz',
},
{
id: 'd',
kind: 'template',
epoch: 1,
debuggable: false,
preview: dummyPreview,
},
],
edges: [
{producer: 0, consumer: 1},
{producer: 0, consumer: 2},
{producer: 1, consumer: 3},
{producer: 2, consumer: 3},
],
};
const graph = convertToDevtoolsSignalGraph(debugGraph);

expect(graph).toEqual({
nodes: [
{
id: 'a',
kind: 'signal',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'signalFoo',
nodeType: 'signal',
clusterId: 'cl_foo',
},
{
id: 'b',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'computedBar',
nodeType: 'signal',
clusterId: 'cl_bar',
},
{
id: 'c',
kind: 'computed',
epoch: 1,
debuggable: false,
preview: dummyPreview,
label: 'computedBaz',
nodeType: 'signal',
clusterId: 'cl_baz',
},
{
id: 'd',
kind: 'template',
epoch: 1,
debuggable: false,
preview: dummyPreview,
nodeType: 'signal',
clusterId: undefined,
},
{
id: 'cl_foo',
nodeType: 'cluster',
clusterType: 'resource',
label: 'foo',
previewNode: undefined,
},
{
id: 'cl_bar',
nodeType: 'cluster',
clusterType: 'resource',
label: 'bar',
previewNode: undefined,
},
{
id: 'cl_baz',
nodeType: 'cluster',
clusterType: 'resource',
label: 'baz',
previewNode: undefined,
},
],
edges: [
{producer: 0, consumer: 1},
{producer: 0, consumer: 2},
{producer: 1, consumer: 3},
{producer: 2, consumer: 3},
{producer: 4, consumer: 1}, // foo->computedBar
{producer: 4, consumer: 2}, // foo->computedBaz
{producer: 5, consumer: 3}, // bar->template
{producer: 0, consumer: 5}, // signalFoo->bar
{producer: 6, consumer: 3}, // baz->template
{producer: 0, consumer: 6}, // signalFoo->baz
{producer: 4, consumer: 5}, // foo->bar
{producer: 4, consumer: 6}, // foo->baz
],
clusters: {
'cl_foo': {
id: 'cl_foo',
name: 'foo',
type: 'resource',
},
'cl_bar': {
id: 'cl_bar',
name: 'bar',
type: 'resource',
},
'cl_baz': {
id: 'cl_baz',
name: 'baz',
type: 'resource',
},
},
});
});
});
Loading
Loading