| 
                
               | 
              
                
               | 
              
                @@ -23,27 +23,27 @@ describe AgentsExporter do 
               | 
            
            
            
              | 
                23
               | 
              
                23
               | 
              
                       expect(data[:tag_fg_color]).to eq(tag_fg_color) 
               | 
            
            
            
              | 
                24
               | 
              
                24
               | 
              
                       expect(data[:tag_bg_color]).to eq(tag_bg_color) 
               | 
            
            
            
              | 
                25
               | 
              
                25
               | 
              
                       expect(Time.parse(data[:exported_at])).to be_within(2).of(Time.now.utc) 
               | 
            
            
            
              | 
                26
               | 
              
                
               | 
              
                -      expect(data[:links]).to eq([{ :source => 0, :receiver => 1 }])
               | 
            
            
            
              | 
                
               | 
              
                26
               | 
              
                +      expect(data[:links]).to eq([{ :source => guid_order(agent_list, :jane_weather_agent), :receiver => guid_order(agent_list, :jane_rain_notifier_agent)}])
               | 
            
            
            
              | 
                27
               | 
              
                27
               | 
              
                       expect(data[:control_links]).to eq([]) 
               | 
            
            
            
              | 
                28
               | 
              
                
               | 
              
                -      expect(data[:agents]).to eq(agent_list.map { |agent| exporter.agent_as_json(agent) })
               | 
            
            
            
              | 
                
               | 
              
                28
               | 
              
                +      expect(data[:agents]).to eq(agent_list.sort_by{|a| a.guid}.map { |agent| exporter.agent_as_json(agent) })
               | 
            
            
            
              | 
                29
               | 
              
                29
               | 
              
                       expect(data[:agents].all? { |agent_json| agent_json[:guid].present? && agent_json[:type].present? && agent_json[:name].present? }).to be_truthy
               | 
            
            
            
              | 
                30
               | 
              
                30
               | 
              
                  
               | 
            
            
            
              | 
                31
               | 
              
                
               | 
              
                -      expect(data[:agents][0]).not_to have_key(:propagate_immediately) # can't receive events 
               | 
            
            
            
              | 
                32
               | 
              
                
               | 
              
                -      expect(data[:agents][1]).not_to have_key(:schedule) # can't be scheduled 
               | 
            
            
            
              | 
                
               | 
              
                31
               | 
              
                +      expect(data[:agents][guid_order(agent_list, :jane_weather_agent)]).not_to have_key(:propagate_immediately) # can't receive events 
               | 
            
            
            
              | 
                
               | 
              
                32
               | 
              
                +      expect(data[:agents][guid_order(agent_list, :jane_rain_notifier_agent)]).not_to have_key(:schedule) # can't be scheduled 
               | 
            
            
            
              | 
                33
               | 
              
                33
               | 
              
                     end 
               | 
            
            
            
              | 
                34
               | 
              
                34
               | 
              
                  
               | 
            
            
            
              | 
                35
               | 
              
                35
               | 
              
                     it "does not output links to other agents outside of the incoming set" do 
               | 
            
            
            
              | 
                36
               | 
              
                36
               | 
              
                       Link.create!(:source_id => agents(:jane_weather_agent).id, :receiver_id => agents(:jane_website_agent).id) 
               | 
            
            
            
              | 
                37
               | 
              
                37
               | 
              
                       Link.create!(:source_id => agents(:jane_website_agent).id, :receiver_id => agents(:jane_rain_notifier_agent).id) 
               | 
            
            
            
              | 
                38
               | 
              
                38
               | 
              
                  
               | 
            
            
            
              | 
                39
               | 
              
                
               | 
              
                -      expect(exporter.as_json[:links]).to eq([{ :source => 0, :receiver => 1 }])
               | 
            
            
            
              | 
                
               | 
              
                39
               | 
              
                +      expect(exporter.as_json[:links]).to eq([{ :source => guid_order(agent_list, :jane_weather_agent), :receiver => guid_order(agent_list, :jane_rain_notifier_agent) }])
               | 
            
            
            
              | 
                40
               | 
              
                40
               | 
              
                     end 
               | 
            
            
            
              | 
                41
               | 
              
                41
               | 
              
                  
               | 
            
            
            
              | 
                42
               | 
              
                42
               | 
              
                     it "outputs control links to agents within the incoming set, but not outside it" do 
               | 
            
            
            
              | 
                43
               | 
              
                43
               | 
              
                       agents(:jane_rain_notifier_agent).control_targets = [agents(:jane_weather_agent), agents(:jane_basecamp_agent)] 
               | 
            
            
            
              | 
                44
               | 
              
                44
               | 
              
                       agents(:jane_rain_notifier_agent).save! 
               | 
            
            
            
              | 
                45
               | 
              
                45
               | 
              
                  
               | 
            
            
            
              | 
                46
               | 
              
                
               | 
              
                -      expect(exporter.as_json[:control_links]).to eq([{ :controller => 1, :control_target => 0 }])
               | 
            
            
            
              | 
                
               | 
              
                46
               | 
              
                +      expect(exporter.as_json[:control_links]).to eq([{ :controller => guid_order(agent_list, :jane_rain_notifier_agent), :control_target => guid_order(agent_list, :jane_weather_agent) }])
               | 
            
            
            
              | 
                47
               | 
              
                47
               | 
              
                     end 
               | 
            
            
            
              | 
                48
               | 
              
                48
               | 
              
                   end 
               | 
            
            
            
              | 
                49
               | 
              
                49
               | 
              
                  
               | 
            
            
            
            
            
              | 
                
               | 
              
                
               | 
              
                @@ -71,4 +71,8 @@ describe AgentsExporter do 
               | 
            
            
            
              | 
                71
               | 
              
                71
               | 
              
                       expect(AgentsExporter.new(:name => ",,").filename).to eq("exported-agents.json")
               | 
            
            
            
              | 
                72
               | 
              
                72
               | 
              
                     end 
               | 
            
            
            
              | 
                73
               | 
              
                73
               | 
              
                   end 
               | 
            
            
            
              | 
                
               | 
              
                74
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                75
               | 
              
                +  def guid_order(agent_list, agent_name) 
               | 
            
            
            
              | 
                
               | 
              
                76
               | 
              
                +    agent_list.map{|a|a.guid}.sort.find_index(agents(agent_name).guid)
               | 
            
            
            
              | 
                
               | 
              
                77
               | 
              
                +  end 
               | 
            
            
            
              | 
                74
               | 
              
                78
               | 
              
                 end 
               |