Repository: Qiskit/qiskit

Issue:
Using the rzz gate yields an error on circuit drawing
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues -->

### Informations

- **Qiskit Terra version**:
qiskit version 0.7.0
- **Python version**:
python 3.6.6
- **Operating system**:
Red Hat Entreprise Server 7.4
### Current behavior
At circuit draw  I get the following error
```bash
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/qiskit/circuit/quantumcircuit.py", line 83, in __str__
    return str(self.draw(output='text'))
  File "/usr/local/lib/python3.6/site-packages/qiskit/tools/visualization/_text.py", line 413, in __str__
    return self.single_string()
  File "/usr/local/lib/python3.6/site-packages/qiskit/tools/visualization/_text.py", line 438, in single_string
    return "\n".join(self.lines())
  File "/usr/local/lib/python3.6/site-packages/qiskit/tools/visualization/_text.py", line 472, in lines
    layers = self.build_layers()
  File "/usr/local/lib/python3.6/site-packages/qiskit/tools/visualization/_text.py", line 758, in build_layers
    elif len(instruction['qubits']) >= 2 and not instruction['cargs']:
KeyError: 'qubits'
```




### Steps to reproduce the problem

```python
from qiskit import * 
q = QuantumRegister(2)
qc = QuantumCircuit(q);
qc.rzz(0, q[0], q[1])
print(qc)
```

### What is the expected behavior?

It should draw the circuit with no problem, but here it gives a KeyError on "qubits"

### Suggested solutions

Maybe it is expecting "qargs" instead of "qubits"?



Discussion:

Resolving patch:
diff --git a/qiskit/tools/visualization/_text.py b/qiskit/tools/visualization/_text.py
--- a/qiskit/tools/visualization/_text.py
+++ b/qiskit/tools/visualization/_text.py
@@ -215,11 +215,13 @@ def __init__(self, label, input_length, order):
 class BoxOnQuWireBot(MultiBox, BoxOnQuWire):
     """ Draws the bottom part of a box that affects more than one quantum wire"""
 
-    def __init__(self, label, input_length):
+    def __init__(self, label, input_length, bot_connect='─'):
         super().__init__(label)
         self.top_format = "│ %s │"
+        self.top_pad = " "
+        self.bot_connect = bot_connect
 
-        self.mid_content = self.bot_connect = self.top_connect = ""
+        self.mid_content = self.top_connect = ""
         if input_length <= 2:
             self.top_connect = label
 
@@ -755,9 +757,9 @@ def build_layers(self):
                 layer.set_qubit(instruction['qargs'][0],
                                 BoxOnQuWire(TextDrawing.label_for_box(instruction)))
 
-            elif len(instruction['qubits']) >= 2 and not instruction['cargs']:
+            elif len(instruction['qargs']) >= 2 and not instruction['cargs']:
                 # multiple qubit gate
-                layer.set_qu_multibox(instruction['qubits'], TextDrawing.label_for_box(instruction))
+                layer.set_qu_multibox(instruction['qargs'], TextDrawing.label_for_box(instruction))
 
             else:
                 raise VisualizationError(
@@ -876,7 +878,8 @@ def connect_with(self, wire_char, label=None):
         affected_bits[0].connect(wire_char, ['bot'])
         for affected_bit in affected_bits[1:-1]:
             affected_bit.connect(wire_char, ['bot', 'top'])
-        affected_bits[-1].connect(wire_char, ['top'], label)
+        if not isinstance(affected_bits[-1], MultiBox):
+            affected_bits[-1].connect(wire_char, ['top'], label)
 
         if label:
             for affected_bit in affected_bits:


Test patch:
diff --git a/test/python/tools/visualization/test_circuit_text_drawer.py b/test/python/tools/visualization/test_circuit_text_drawer.py
--- a/test/python/tools/visualization/test_circuit_text_drawer.py
+++ b/test/python/tools/visualization/test_circuit_text_drawer.py
@@ -379,6 +379,21 @@ def test_text_ch(self):
         circuit.ch(qr[2], qr[0])
         self.assertEqual(str(_text_circuit_drawer(circuit)), expected)
 
+    def test_text_rzz(self):
+        """ rzz drawing. """
+        expected = '\n'.join(["        ┌────────┐               ",
+                              "q_0: |0>┤        ├───────────────",
+                              "        │ Rzz(0) │┌─────────────┐",
+                              "q_1: |0>┤        ├┤             ├",
+                              "        └────────┘│ Rzz(1.5708) │",
+                              "q_2: |0>──────────┤             ├",
+                              "                  └─────────────┘"])
+        qr = QuantumRegister(3, 'q')
+        circuit = QuantumCircuit(qr)
+        circuit.rzz(0, qr[0], qr[1])
+        circuit.rzz(pi / 2, qr[2], qr[1])
+        self.assertEqual(str(_text_circuit_drawer(circuit)), expected)
+
     def test_text_cu1(self):
         """ cu1 drawing. """
         expected = '\n'.join(["                          ",