spec/gush/graph_spec.rb in gush-2.0.2 vs spec/gush/graph_spec.rb in gush-2.1.0
- old
+ new
@@ -8,29 +8,46 @@
it "runs GraphViz to render graph" do
node = double("node", :[]= => true)
edge = double("edge", :[]= => true)
graph = double("graph", node: node, edge: edge)
path = Pathname.new(Dir.tmpdir).join(filename)
- expect(graph).to receive(:start).with(shape: 'diamond', fillcolor: '#CFF09E')
- expect(graph).to receive(:end).with(shape: 'diamond', fillcolor: '#F56991')
- expect(graph).to receive(:output).with(png: path.to_s)
+ expect(Graphviz::Graph).to receive(:new).and_return(graph)
- expect(graph).to receive(:add_nodes).with(/Prepare/, label: "Prepare")
- expect(graph).to receive(:add_nodes).with(/FetchFirstJob/, label: "FetchFirstJob")
- expect(graph).to receive(:add_nodes).with(/FetchSecondJob/, label: "FetchSecondJob")
- expect(graph).to receive(:add_nodes).with(/NormalizeJob/, label: "NormalizeJob")
- expect(graph).to receive(:add_nodes).with(/PersistFirstJob/, label: "PersistFirstJob")
+ node_start = double('start')
+ node_end = double('end')
+ node_prepare = double('Prepare')
+ node_fetch_first_job = double('FetchFirstJob')
+ node_fetch_second_job = double('FetchSecondJob')
+ node_normalize_job = double('NormalizeJob')
+ node_persist_first_job = double('PersistFirstJob')
- expect(graph).to receive(:add_edges).with(nil, /Prepare/)
- expect(graph).to receive(:add_edges).with(/Prepare/, /FetchFirstJob/)
- expect(graph).to receive(:add_edges).with(/Prepare/, /FetchSecondJob/)
- expect(graph).to receive(:add_edges).with(/FetchFirstJob/, /PersistFirstJob/)
- expect(graph).to receive(:add_edges).with(/FetchSecondJob/, /NormalizeJob/)
- expect(graph).to receive(:add_edges).with(/PersistFirstJob/, /NormalizeJob/)
- expect(graph).to receive(:add_edges).with(/NormalizeJob/, nil)
+ expect(graph).to receive(:add_node).with('start', {shape: 'diamond', fillcolor: '#CFF09E', color: "#555555", style: 'filled'}).and_return(node_start)
+ expect(graph).to receive(:add_node).with('end', {shape: 'diamond', fillcolor: '#F56991', color: "#555555", style: 'filled'}).and_return(node_end)
- expect(GraphViz).to receive(:new).and_yield(graph)
+ standard_options = {:color=>"#555555", :fillcolor=>"white", :label=>"Prepare", :shape=>"ellipse", :style=>"filled"}
+
+ expect(graph).to receive(:add_node).with(/Prepare/, standard_options.merge(label: "Prepare")).and_return(node_prepare)
+ expect(graph).to receive(:add_node).with(/FetchFirstJob/, standard_options.merge(label: "FetchFirstJob")).and_return(node_fetch_first_job)
+ expect(graph).to receive(:add_node).with(/FetchSecondJob/, standard_options.merge(label: "FetchSecondJob")).and_return(node_fetch_second_job)
+ expect(graph).to receive(:add_node).with(/NormalizeJob/, standard_options.merge(label: "NormalizeJob")).and_return(node_normalize_job)
+ expect(graph).to receive(:add_node).with(/PersistFirstJob/, standard_options.merge(label: "PersistFirstJob")).and_return(node_persist_first_job)
+
+ edge_options = {
+ dir: "forward",
+ penwidth: 1,
+ color: "#555555"
+ }
+
+ expect(node_start).to receive(:connect).with(node_prepare, **edge_options)
+ expect(node_prepare).to receive(:connect).with(node_fetch_first_job, **edge_options)
+ expect(node_prepare).to receive(:connect).with(node_fetch_second_job, **edge_options)
+ expect(node_fetch_first_job).to receive(:connect).with(node_persist_first_job, **edge_options)
+ expect(node_fetch_second_job).to receive(:connect).with(node_normalize_job, **edge_options)
+ expect(node_persist_first_job).to receive(:connect).with(node_normalize_job, **edge_options)
+ expect(node_normalize_job).to receive(:connect).with(node_end, **edge_options)
+
+ expect(graph).to receive(:dump_graph).and_return(nil)
subject.viz
end
end