)]}'
{"openstack_dashboard/dashboards/project/snapshots/tests.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"255fab38c354750751f4138865da3d9824e92d06","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            test.IsHttpRequest(), snapshot.id)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    @test.create_mocks({api.cinder: (\u0027volume_snapshot_get\u0027,"},{"line_number":288,"context_line":"                                    \u0027message_list\u0027)})"},{"line_number":289,"context_line":"    def test_volume_snapshot_detail_view_with_messages_tab(self):"},{"line_number":290,"context_line":"        snapshot \u003d self.cinder_volume_snapshots.first()"},{"line_number":291,"context_line":"        message \u003d self.cinder_messages.first()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_3bea1a73","line":288,"updated":"2020-09-10 08:20:28.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"c271d3bbae0e074b02c147ad8c4fd8d8ba2de825"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a889ad2f2abc5870e35739048fc05c0514c522fc","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        search_opts \u003d {\u0027resource_type\u0027: \u0027volume_snapshot\u0027,"},{"line_number":315,"context_line":"                       \u0027resource_uuid\u0027: snapshot.id}"},{"line_number":316,"context_line":"        self.mock_message_list.assert_called_once_with("},{"line_number":317,"context_line":"            test.IsHttpRequest(), search_opts\u003dsearch_opts)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @test.create_mocks({api.cinder: (\u0027volume_get\u0027,"},{"line_number":320,"context_line":"                                     \u0027volume_snapshot_get\u0027)})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_543fcb23","line":317,"updated":"2020-09-11 01:22:12.000000000","message":"self.mock_volume_get should be tested too.\nAll mocked methods should be asserted without special reasons.","commit_id":"596b31f96a6cb43cdb3fcc78f13bb07d033e7911"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"3733da8affa4d43b1924391d7355a6980912e042","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        search_opts \u003d {\u0027resource_type\u0027: \u0027volume_snapshot\u0027,"},{"line_number":315,"context_line":"                       \u0027resource_uuid\u0027: snapshot.id}"},{"line_number":316,"context_line":"        self.mock_message_list.assert_called_once_with("},{"line_number":317,"context_line":"            test.IsHttpRequest(), search_opts\u003dsearch_opts)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @test.create_mocks({api.cinder: (\u0027volume_get\u0027,"},{"line_number":320,"context_line":"                                     \u0027volume_snapshot_get\u0027)})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_6bbf8dcf","line":317,"in_reply_to":"9f560f44_543fcb23","updated":"2020-09-11 09:36:07.000000000","message":"Done.","commit_id":"596b31f96a6cb43cdb3fcc78f13bb07d033e7911"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4487c6bf6a8fc5c2421c0027855cffa79314e21f","unresolved":false,"context_lines":[{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.mock_volume_get.return_value \u003d volume"},{"line_number":296,"context_line":"        self.mock_volume_snapshot_get.return_value \u003d snapshot"},{"line_number":297,"context_line":"        self.mock_message_list.return_value \u003d message"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        url \u003d reverse(\u0027horizon:project:snapshots:detail\u0027,"},{"line_number":300,"context_line":"                      args\u003d[snapshot.id])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_2baefa2e","line":297,"range":{"start_line":297,"start_character":46,"end_line":297,"end_character":53},"updated":"2020-09-15 10:35:19.000000000","message":"Search_opts specifies \"volume_snapshot\", but the resource_type of this \"message\" is \"volume\". It is much better to return a message with \"volume_snapshot\".\n\nIn addition, it sounds odd to return a single message as a return value of message_list. It should return a list.","commit_id":"4d18b6f01a55df707e355b766e5229a8bbbf6d4c"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"e7b3b2ead6e7900b930b1fd96f96e3b9ede5505f","unresolved":false,"context_lines":[{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.mock_volume_get.return_value \u003d volume"},{"line_number":296,"context_line":"        self.mock_volume_snapshot_get.return_value \u003d snapshot"},{"line_number":297,"context_line":"        self.mock_message_list.return_value \u003d message"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        url \u003d reverse(\u0027horizon:project:snapshots:detail\u0027,"},{"line_number":300,"context_line":"                      args\u003d[snapshot.id])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_eb0fd085","line":297,"range":{"start_line":297,"start_character":46,"end_line":297,"end_character":53},"in_reply_to":"9f560f44_2baefa2e","updated":"2020-09-16 07:29:02.000000000","message":"done.","commit_id":"4d18b6f01a55df707e355b766e5229a8bbbf6d4c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4487c6bf6a8fc5c2421c0027855cffa79314e21f","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        res \u003d self.client.get(url)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        self.assertTemplateUsed(res, \u0027horizon/common/_detail.html\u0027)"},{"line_number":309,"context_line":"        self.assertContains(res, \u0027User Message\u0027)"},{"line_number":310,"context_line":"        self.assertNoMessages()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.mock_volume_get.assert_has_calls(["}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_eb69a2f8","line":309,"range":{"start_line":309,"start_character":34,"end_line":309,"end_character":46},"updated":"2020-09-15 10:35:19.000000000","message":"I thought this would be something like event_id or an actual user message of a returned value from the response.","commit_id":"4d18b6f01a55df707e355b766e5229a8bbbf6d4c"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"e7b3b2ead6e7900b930b1fd96f96e3b9ede5505f","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        res \u003d self.client.get(url)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        self.assertTemplateUsed(res, \u0027horizon/common/_detail.html\u0027)"},{"line_number":309,"context_line":"        self.assertContains(res, \u0027User Message\u0027)"},{"line_number":310,"context_line":"        self.assertNoMessages()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.mock_volume_get.assert_has_calls(["}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_6616574c","line":309,"range":{"start_line":309,"start_character":34,"end_line":309,"end_character":46},"in_reply_to":"9f560f44_eb69a2f8","updated":"2020-09-16 07:29:02.000000000","message":"done.","commit_id":"4d18b6f01a55df707e355b766e5229a8bbbf6d4c"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"2bf93f882dee75f358e78b5b86dbea0ce0158ded","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        res \u003d self.client.get(url)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        self.assertTemplateUsed(res, \u0027horizon/common/_detail.html\u0027)"},{"line_number":309,"context_line":"        self.assertContains(res, \u0027create snapshot:Snapshot is busy.\u0027)"},{"line_number":310,"context_line":"        self.assertNoMessages()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.mock_volume_get.assert_has_calls(["}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_428db633","line":309,"range":{"start_line":309,"start_character":34,"end_line":309,"end_character":67},"updated":"2020-09-21 05:52:19.000000000","message":"looks like this user message is not present in the response. Any suggestion?","commit_id":"2a19526bd7371ab6b46d5ba69d13a2c81e53b557"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"cb96354b63293538c88bcdad6e5c1ec2c858a264","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        res \u003d self.client.get(url)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        self.assertTemplateUsed(res, \u0027horizon/common/_detail.html\u0027)"},{"line_number":309,"context_line":"        self.assertContains(res, \u0027create snapshot:Snapshot is busy.\u0027)"},{"line_number":310,"context_line":"        self.assertNoMessages()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.mock_volume_get.assert_has_calls(["}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_a2ac5fee","line":309,"range":{"start_line":309,"start_character":34,"end_line":309,"end_character":67},"in_reply_to":"9f560f44_428db633","updated":"2020-09-23 10:33:42.000000000","message":"Looking at res.content, the headers of the message table like \"User Message\" is rendered as expected, but the table content is \"No items to display.\". I am afraid the content is not populated as expected.....","commit_id":"2a19526bd7371ab6b46d5ba69d13a2c81e53b557"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"231e5db30957c75d00e7a0dd8e2a3c451cdfb432","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        res \u003d self.client.get(url)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        self.assertTemplateUsed(res, \u0027horizon/common/_detail.html\u0027)"},{"line_number":309,"context_line":"        self.assertContains(res, \u0027create snapshot:Snapshot is busy.\u0027)"},{"line_number":310,"context_line":"        self.assertNoMessages()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.mock_volume_get.assert_has_calls(["}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_76a77c51","line":309,"range":{"start_line":309,"start_character":34,"end_line":309,"end_character":67},"in_reply_to":"9f560f44_a2ac5fee","updated":"2020-09-25 02:03:47.000000000","message":"It turns out that my comment [1] is the root cause of the test failure.\n\n[1] https://review.opendev.org/#/c/750882/7/openstack_dashboard/dashboards/project/volumes/tests.py@1569","commit_id":"2a19526bd7371ab6b46d5ba69d13a2c81e53b557"}],"openstack_dashboard/dashboards/project/volumes/tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d183b87978c295d17b9807bce8e2e1f23c68046d","unresolved":false,"context_lines":[{"line_number":1557,"context_line":"        self.mock_tenant_absolute_limits.assert_called_once()"},{"line_number":1558,"context_line":""},{"line_number":1559,"context_line":"    @test.create_mocks({"},{"line_number":1560,"context_line":"        api.cinder: ((\u0027_cinderclient_with_features\u0027, \u0027cinderclient\u0027),"},{"line_number":1561,"context_line":"                     \u0027volume_get\u0027, \u0027message_list\u0027)})"},{"line_number":1562,"context_line":"    def test_detail_view_with_messages_tab(self):"},{"line_number":1563,"context_line":"        volume \u003d self.cinder_volumes.first()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_b81910d2","line":1560,"range":{"start_line":1560,"start_character":21,"end_line":1560,"end_character":68},"updated":"2020-09-10 07:19:01.000000000","message":"It is not a good idea to use a private function in openstack_dashboard/api/cinder.py from files under openstack_dashboard/dashboards. You should use only public methods/functions.","commit_id":"9efac32de8becff6b72a8839129ecf3de3922f43"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d183b87978c295d17b9807bce8e2e1f23c68046d","unresolved":false,"context_lines":[{"line_number":1562,"context_line":"    def test_detail_view_with_messages_tab(self):"},{"line_number":1563,"context_line":"        volume \u003d self.cinder_volumes.first()"},{"line_number":1564,"context_line":"        message \u003d self.cinder_messages.first()"},{"line_number":1565,"context_line":"        cinderclient \u003d self.mock_cinderclient.return_value"},{"line_number":1566,"context_line":""},{"line_number":1567,"context_line":"        self.mock_volume_get.return_value \u003d volume"},{"line_number":1568,"context_line":"        messages_mock \u003d cinderclient.messages.list"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_b86e3029","line":1565,"range":{"start_line":1565,"start_character":8,"end_line":1565,"end_character":21},"updated":"2020-09-10 07:19:01.000000000","message":"If you continue to mock _cinderclient_with_features, assrt_called_xxxx should be called below. The convention is to assert ALL mocks.","commit_id":"9efac32de8becff6b72a8839129ecf3de3922f43"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d183b87978c295d17b9807bce8e2e1f23c68046d","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"        cinderclient \u003d self.mock_cinderclient.return_value"},{"line_number":1566,"context_line":""},{"line_number":1567,"context_line":"        self.mock_volume_get.return_value \u003d volume"},{"line_number":1568,"context_line":"        messages_mock \u003d cinderclient.messages.list"},{"line_number":1569,"context_line":"        messages_mock.return_value \u003d message"},{"line_number":1570,"context_line":""},{"line_number":1571,"context_line":"        url \u003d reverse(DETAIL_URL, args\u003d[volume.id])"},{"line_number":1572,"context_line":"        detail_view \u003d tabs.VolumeDetailTabs(self.request)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_78513862","line":1569,"range":{"start_line":1568,"start_character":8,"end_line":1569,"end_character":44},"updated":"2020-09-10 07:19:01.000000000","message":"I don\u0027t understand why it is required. You already mock api.cinder.message_list.","commit_id":"9efac32de8becff6b72a8839129ecf3de3922f43"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a889ad2f2abc5870e35739048fc05c0514c522fc","unresolved":false,"context_lines":[{"line_number":1580,"context_line":"        res \u003d self.client.get(url)"},{"line_number":1581,"context_line":""},{"line_number":1582,"context_line":"        self.assertTemplateUsed(res, \u0027horizon/common/_detail.html\u0027)"},{"line_number":1583,"context_line":"        self.assertEqual(res.context[\u0027volume\u0027].id, volume.id)"},{"line_number":1584,"context_line":"        self.assertNoMessages()"},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"        self.mock_volume_get.assert_called_once_with(test.IsHttpRequest(),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_94f04393","line":1583,"updated":"2020-09-11 01:22:12.000000000","message":"Can\u0027t we check some message-specific field in addition to volume ID?","commit_id":"596b31f96a6cb43cdb3fcc78f13bb07d033e7911"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"3733da8affa4d43b1924391d7355a6980912e042","unresolved":false,"context_lines":[{"line_number":1580,"context_line":"        res \u003d self.client.get(url)"},{"line_number":1581,"context_line":""},{"line_number":1582,"context_line":"        self.assertTemplateUsed(res, \u0027horizon/common/_detail.html\u0027)"},{"line_number":1583,"context_line":"        self.assertEqual(res.context[\u0027volume\u0027].id, volume.id)"},{"line_number":1584,"context_line":"        self.assertNoMessages()"},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"        self.mock_volume_get.assert_called_once_with(test.IsHttpRequest(),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_d4959633","line":1583,"in_reply_to":"9f560f44_94f04393","updated":"2020-09-11 09:36:07.000000000","message":"looking into it how can we check that res.context[\u0027table\u0027].base_columns[\u0027user_message\u0027] has\n\u003cColumn: user_message\u003e but I don\u0027t know it is right to use it.","commit_id":"596b31f96a6cb43cdb3fcc78f13bb07d033e7911"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"89f4afe843059ca509908cdaef5cf518a0dfbe0a","unresolved":false,"context_lines":[{"line_number":1580,"context_line":"        res \u003d self.client.get(url)"},{"line_number":1581,"context_line":""},{"line_number":1582,"context_line":"        self.assertTemplateUsed(res, \u0027horizon/common/_detail.html\u0027)"},{"line_number":1583,"context_line":"        self.assertEqual(res.context[\u0027volume\u0027].id, volume.id)"},{"line_number":1584,"context_line":"        self.assertNoMessages()"},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"        self.mock_volume_get.assert_called_once_with(test.IsHttpRequest(),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_df6478b5","line":1583,"in_reply_to":"9f560f44_d4959633","updated":"2020-09-13 01:38:18.000000000","message":"I don\u0027t think it is a good idea to check the content of \"context\" dict. Instead, can\u0027t you check if a string is included in the rendered text? I think  it is more straight-forward as the rendered text is the actual output.","commit_id":"596b31f96a6cb43cdb3fcc78f13bb07d033e7911"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"31d834242c4749f71276f801bd32558d83790b90","unresolved":false,"context_lines":[{"line_number":1580,"context_line":"        res \u003d self.client.get(url)"},{"line_number":1581,"context_line":""},{"line_number":1582,"context_line":"        self.assertTemplateUsed(res, \u0027horizon/common/_detail.html\u0027)"},{"line_number":1583,"context_line":"        self.assertEqual(res.context[\u0027volume\u0027].id, volume.id)"},{"line_number":1584,"context_line":"        self.assertNoMessages()"},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"        self.mock_volume_get.assert_called_once_with(test.IsHttpRequest(),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_4be6eae8","line":1583,"in_reply_to":"9f560f44_df6478b5","updated":"2020-09-14 04:54:05.000000000","message":"Done.","commit_id":"596b31f96a6cb43cdb3fcc78f13bb07d033e7911"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a889ad2f2abc5870e35739048fc05c0514c522fc","unresolved":false,"context_lines":[{"line_number":1588,"context_line":"        search_opts \u003d {\u0027resource_type\u0027: \u0027volume\u0027,"},{"line_number":1589,"context_line":"                       \u0027resource_uuid\u0027: volume.id}"},{"line_number":1590,"context_line":"        self.mock_message_list.assert_called_once_with("},{"line_number":1591,"context_line":"            test.IsHttpRequest(), search_opts\u003dsearch_opts)"},{"line_number":1592,"context_line":""},{"line_number":1593,"context_line":"    @mock.patch.object(cinder, \u0027volume_get\u0027)"},{"line_number":1594,"context_line":"    def test_detail_view_with_exception(self, mock_get):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_94d7a3ee","line":1591,"updated":"2020-09-11 01:22:12.000000000","message":"self.mock_volume_snapshot_list and self.mock_tenant_absolute_limit need to be tested too.","commit_id":"596b31f96a6cb43cdb3fcc78f13bb07d033e7911"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"3733da8affa4d43b1924391d7355a6980912e042","unresolved":false,"context_lines":[{"line_number":1588,"context_line":"        search_opts \u003d {\u0027resource_type\u0027: \u0027volume\u0027,"},{"line_number":1589,"context_line":"                       \u0027resource_uuid\u0027: volume.id}"},{"line_number":1590,"context_line":"        self.mock_message_list.assert_called_once_with("},{"line_number":1591,"context_line":"            test.IsHttpRequest(), search_opts\u003dsearch_opts)"},{"line_number":1592,"context_line":""},{"line_number":1593,"context_line":"    @mock.patch.object(cinder, \u0027volume_get\u0027)"},{"line_number":1594,"context_line":"    def test_detail_view_with_exception(self, mock_get):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_b498e268","line":1591,"in_reply_to":"9f560f44_94d7a3ee","updated":"2020-09-11 09:36:07.000000000","message":"Done.","commit_id":"596b31f96a6cb43cdb3fcc78f13bb07d033e7911"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4487c6bf6a8fc5c2421c0027855cffa79314e21f","unresolved":false,"context_lines":[{"line_number":1566,"context_line":"        snapshots \u003d self.cinder_volume_snapshots.list()"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"        self.mock_volume_get.return_value \u003d volume"},{"line_number":1569,"context_line":"        self.mock_message_list.return_value \u003d message"},{"line_number":1570,"context_line":"        self.mock_volume_snapshot_list.return_value \u003d snapshots"},{"line_number":1571,"context_line":"        self.mock_tenant_absolute_limits.return_value \u003d \\"},{"line_number":1572,"context_line":"            self.cinder_limits[\u0027absolute\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_6b7d92b1","line":1569,"range":{"start_line":1569,"start_character":46,"end_line":1569,"end_character":53},"updated":"2020-09-15 10:35:19.000000000","message":"It looks odd to return a single message as a return value of message list. Shouldn\u0027t it be a list?\n\nWhy does it work well?","commit_id":"4d18b6f01a55df707e355b766e5229a8bbbf6d4c"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"e7b3b2ead6e7900b930b1fd96f96e3b9ede5505f","unresolved":false,"context_lines":[{"line_number":1566,"context_line":"        snapshots \u003d self.cinder_volume_snapshots.list()"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"        self.mock_volume_get.return_value \u003d volume"},{"line_number":1569,"context_line":"        self.mock_message_list.return_value \u003d message"},{"line_number":1570,"context_line":"        self.mock_volume_snapshot_list.return_value \u003d snapshots"},{"line_number":1571,"context_line":"        self.mock_tenant_absolute_limits.return_value \u003d \\"},{"line_number":1572,"context_line":"            self.cinder_limits[\u0027absolute\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_264f3fbf","line":1569,"range":{"start_line":1569,"start_character":46,"end_line":1569,"end_character":53},"in_reply_to":"9f560f44_6b7d92b1","updated":"2020-09-16 07:29:02.000000000","message":"done.","commit_id":"4d18b6f01a55df707e355b766e5229a8bbbf6d4c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4487c6bf6a8fc5c2421c0027855cffa79314e21f","unresolved":false,"context_lines":[{"line_number":1587,"context_line":"                                                     volume.id)"},{"line_number":1588,"context_line":"        self.mock_volume_snapshot_list.assert_called_once_with("},{"line_number":1589,"context_line":"            test.IsHttpRequest(), search_opts\u003d{\u0027volume_id\u0027: volume.id})"},{"line_number":1590,"context_line":"        self.mock_tenant_absolute_limits.assert_called_once()"},{"line_number":1591,"context_line":"        search_opts \u003d {\u0027resource_type\u0027: \u0027volume\u0027,"},{"line_number":1592,"context_line":"                       \u0027resource_uuid\u0027: volume.id}"},{"line_number":1593,"context_line":"        self.mock_message_list.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_2bd71ac3","line":1590,"range":{"start_line":1590,"start_character":41,"end_line":1590,"end_character":59},"updated":"2020-09-15 10:35:19.000000000","message":"should be assert_called_once_with :(","commit_id":"4d18b6f01a55df707e355b766e5229a8bbbf6d4c"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"e7b3b2ead6e7900b930b1fd96f96e3b9ede5505f","unresolved":false,"context_lines":[{"line_number":1587,"context_line":"                                                     volume.id)"},{"line_number":1588,"context_line":"        self.mock_volume_snapshot_list.assert_called_once_with("},{"line_number":1589,"context_line":"            test.IsHttpRequest(), search_opts\u003d{\u0027volume_id\u0027: volume.id})"},{"line_number":1590,"context_line":"        self.mock_tenant_absolute_limits.assert_called_once()"},{"line_number":1591,"context_line":"        search_opts \u003d {\u0027resource_type\u0027: \u0027volume\u0027,"},{"line_number":1592,"context_line":"                       \u0027resource_uuid\u0027: volume.id}"},{"line_number":1593,"context_line":"        self.mock_message_list.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_061f9b5b","line":1590,"range":{"start_line":1590,"start_character":41,"end_line":1590,"end_character":59},"in_reply_to":"9f560f44_2bd71ac3","updated":"2020-09-16 07:29:02.000000000","message":"done.","commit_id":"4d18b6f01a55df707e355b766e5229a8bbbf6d4c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"cb96354b63293538c88bcdad6e5c1ec2c858a264","unresolved":false,"context_lines":[{"line_number":1566,"context_line":"        snapshots \u003d self.cinder_volume_snapshots.list()"},{"line_number":1567,"context_line":""},{"line_number":1568,"context_line":"        self.mock_volume_get.return_value \u003d volume"},{"line_number":1569,"context_line":"        self.mock_message_list.return_value \u003d message"},{"line_number":1570,"context_line":"        self.mock_volume_snapshot_list.return_value \u003d snapshots"},{"line_number":1571,"context_line":"        self.mock_tenant_absolute_limits.return_value \u003d \\"},{"line_number":1572,"context_line":"            self.cinder_limits[\u0027absolute\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_02ec2b27","line":1569,"range":{"start_line":1569,"start_character":46,"end_line":1569,"end_character":53},"updated":"2020-09-23 10:33:42.000000000","message":"You replied \"Done\" in patch set 6, but my comment in patch set 6 is not fixed yet.","commit_id":"2a19526bd7371ab6b46d5ba69d13a2c81e53b557"}]}
