2016-03-30 6 views
0

Ich versuche, Daten von einer Gurkentabelle mit einer Reihe von Hashwerten zu vergleichen.Vergleichen einer Gurkeldatentabelle mit einem Ruby-Array von Hashwerten

Cucumber step: 

Then I expect tasks created with: 
     | issuetype | summary  | status | 
     | Task  | Please review | To do | 
     | Task  | Please review | To do | 

gedreht I der Tabelle in eine Hash-Verwendung:

Then (/^I expect tasks created with:/) do |table| 
    table = table.hashes 
end 


[{"issuetype"=>"Task", 
    "summary"=>"Please review", 
    "status"=>"To do", 
    "assignee"=>"unassigned", 
    "assigned group"=>"rm-group1"}, 
    {"issuetype"=>"Task", 
    "summary"=>"Please review", 
    "status"=>"To do", 
    "assignee"=>"unassigned", 
    "assigned group"=>"rm-group2"}] 

Wie kann ich die Werte auswählen (issuetype, summary, status) von der Unterseite Daten, die eine JSON parse ist, und formatieren wie die table.hashes oben und vergleichen Sie sie?

tasks [ { 
     id: 1 
     fields:{ 
      summary: "Summary" 
     } 
      status:{ 
       description: "description" 
       currentstatus: "To do" 
      } 
      issuetype{ 
        id: "5" 
        name: "sub-task" 
      } 
      }] 
+0

Bitte zeigen Sie, wie 'table.hashes' aussieht. – mudasobwa

+0

@mudasobwa Ich habe es gerade in den Codeblock – Woots

Antwort

0

Ich erwarte, dass die table.hashes sein:

[ 
    { issuetype: 'Task', summary: 'Please review', status: 'To do' }, 
    { issuetype: 'Task 2', summary: 'Please review', status: 'To do' }, 
] 

Um das Array von Hashes aus Ihrem tasks vergleichen (was anscheinend ein ungültiges Objekt ist, daher war ich gezwungen, eine Annahme zu machen auf es ist real Struktur.

mapped = tasks.map do |hash| 
    { 
    issuetype: hash[:issuetype][:name], 
    summary: hash[:fields][:summary], 
    status: hash[:status][:currentstatus] 
    } 
end 

Jetzt ist es in Ordnung table.hashes und mapped vergleichen NB Die obige Lösung geht davon aus, dass die Hash-Schlüssel Symbole sind. Ob es sich um Streicher handelt, ist die jeweilige Besetzung zu erledigen.

+0

aufgenommen Auf diese Weise wähle ich nicht die Werte richtig? Wenn die Tabelle mit mehr Spalten erweitert wird, müsste ich tasks.map neu schreiben. – Woots

+0

Ich bin mir nicht sicher, ob ich diese Frage verstanden habe. Werte werden insgesamt mit Schlüsseln verglichen. Wenn man mehr Spalten hat, sollte man diese Spalten auf "map" setzen. – mudasobwa

Verwandte Themen