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