)]}'
{"ironicclient/tests/functional/osc/v1/base.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"7d29a92a970c4899d7317cce6117bcea5eb4309d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def construct_cmd(*parts):"},{"line_number":40,"context_line":"        return \u0027 \u0027.join(str(x) for x in parts)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _assertExpected(self, expected, actual):"},{"line_number":43,"context_line":"        \"\"\"Check if expected keys/values exist in actual response body."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        Check if the expected keys and values are in the actual response body."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_39115c5e","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":23},"updated":"2017-07-05 15:28:00.000000000","message":"I\u0027d rename to something like _assertResponseDictAsExpected","commit_id":"beb6719b661c67984fc9d8c062665a294cdda673"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1563aff09233d915c4b7cb8df997b73422f11277","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        Note: this method has an underscore even though it is used outside of"},{"line_number":51,"context_line":"        this class, in order to distinguish this method from the more standard"},{"line_number":52,"context_line":"        assertXYZ methods."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        :param expected: dict of key-value pairs that are expected to be in"},{"line_number":55,"context_line":"                         \u0027actual\u0027 dict."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_9697e83a","line":52,"updated":"2017-07-06 17:48:16.000000000","message":"I\u0027m not sure I like the underscore. That\u0027s as \u0027bad\u0027 or \u0027good\u0027 as adding some prefix. eg, \u0027checkAssertEqual()\u0027 :D","commit_id":"beb6719b661c67984fc9d8c062665a294cdda673"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"7d29a92a970c4899d7317cce6117bcea5eb4309d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        :param actual: dict of key-value pairs."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        for key, value in expected.items():"},{"line_number":59,"context_line":"            if key not in (\u0027created_at\u0027, \u0027updated_at\u0027):"},{"line_number":60,"context_line":"                self.assertIn(key, actual)"},{"line_number":61,"context_line":"                self.assertEqual(value, actual[key])"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_79323412","line":59,"range":{"start_line":59,"start_character":27,"end_line":59,"end_character":53},"updated":"2017-07-05 15:28:00.000000000","message":"there also are things like provision_updated_at etc., so might be good to make this an argument to this function, None by default, and if None, only created and updated at are taken into account.","commit_id":"beb6719b661c67984fc9d8c062665a294cdda673"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"96637cb4d24ee9ba2cc15e2ac3e91c0f9df3b971","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        :param actual: dict of key-value pairs."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        for key, value in expected.items():"},{"line_number":59,"context_line":"            if key not in (\u0027created_at\u0027, \u0027updated_at\u0027):"},{"line_number":60,"context_line":"                self.assertIn(key, actual)"},{"line_number":61,"context_line":"                self.assertEqual(value, actual[key])"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_f8017706","line":59,"range":{"start_line":59,"start_character":27,"end_line":59,"end_character":53},"in_reply_to":"3f1d235d_79323412","updated":"2017-07-06 12:51:09.000000000","message":"What if we just add fields (inspection_finished_at, inspection_started_at, provision_updated_at) to exclusion list?\nIs it OK to update this method also in original location: ironic/ironic_tempest_plugin/tests/api/admin/base.py ?","commit_id":"beb6719b661c67984fc9d8c062665a294cdda673"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1563aff09233d915c4b7cb8df997b73422f11277","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        :param actual: dict of key-value pairs."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        for key, value in expected.items():"},{"line_number":59,"context_line":"            if key not in (\u0027created_at\u0027, \u0027updated_at\u0027):"},{"line_number":60,"context_line":"                self.assertIn(key, actual)"},{"line_number":61,"context_line":"                self.assertEqual(value, actual[key])"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_76b7acf6","line":59,"range":{"start_line":59,"start_character":27,"end_line":59,"end_character":53},"in_reply_to":"3f1d235d_f8017706","updated":"2017-07-06 17:48:16.000000000","message":"I guess I don\u0027t understand why \u0027created_at\u0027 or \u0027updated_at\u0027 would be in \u0027expected\u0027. Is there a subsequent test where this is apparent? Because in the case here, you are looking to see if expected is a subset of actual.\n\nWhat about \u0027actual\u0027 having keys/values that are not in \u0027expected\u0027? Would that be OK or not?","commit_id":"beb6719b661c67984fc9d8c062665a294cdda673"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e6aee2b34110117e3a1bb4a4c3d9d758f51042ef","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def construct_cmd(*parts):"},{"line_number":40,"context_line":"        return \u0027 \u0027.join(str(x) for x in parts)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def check_dicts_equal(self, expected, actual):"},{"line_number":43,"context_line":"        \"\"\"Check if expected keys/values exist in actual response body."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        Check if the expected keys and values are in the actual response body."}],"source_content_type":"text/x-python","patch_set":3,"id":"df3967d1_03b08cdc","line":42,"updated":"2017-08-03 07:44:22.000000000","message":"I\u0027d call it assert_dict_is_subset or something. you only check that all values from expected are in actual, but not the other way around","commit_id":"885522fe68c78735811102bdd761b2a91cbeed98"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"780d020a479ca3419ce83c33a8dd3844982bac38","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def construct_cmd(*parts):"},{"line_number":40,"context_line":"        return \u0027 \u0027.join(str(x) for x in parts)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def check_dicts_equal(self, expected, actual):"},{"line_number":43,"context_line":"        \"\"\"Check if expected keys/values exist in actual response body."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        Check if the expected keys and values are in the actual response body."}],"source_content_type":"text/x-python","patch_set":3,"id":"df3967d1_8ceb84da","line":42,"in_reply_to":"df3967d1_03b08cdc","updated":"2017-08-03 11:55:45.000000000","message":"Thanks, done.","commit_id":"885522fe68c78735811102bdd761b2a91cbeed98"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e6aee2b34110117e3a1bb4a4c3d9d758f51042ef","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        :param actual: dict of key-value pairs."},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        for key, value in expected.items():"},{"line_number":52,"context_line":"            self.assertIn(key, actual)"},{"line_number":53,"context_line":"            self.assertEqual(value, actual[key])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def node_create(self, driver\u003d\u0027fake\u0027, name\u003dNone, params\u003d\u0027\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df3967d1_e3b468d3","line":52,"updated":"2017-08-03 07:44:22.000000000","message":"this is not needed because of the next line","commit_id":"885522fe68c78735811102bdd761b2a91cbeed98"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"593c061d7d97f3c4a24983824424c189e4aabc58","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        :param actual: dict of key-value pairs."},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        for key, value in expected.items():"},{"line_number":52,"context_line":"            self.assertIn(key, actual)"},{"line_number":53,"context_line":"            self.assertEqual(value, actual[key])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def node_create(self, driver\u003d\u0027fake\u0027, name\u003dNone, params\u003d\u0027\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_1ff3baa0","line":52,"in_reply_to":"df3967d1_1db0e0dc","updated":"2017-08-07 08:45:59.000000000","message":"Thank you for explanation, Ruby.","commit_id":"885522fe68c78735811102bdd761b2a91cbeed98"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0c8627973cb109b90294100705f31214b2c6dff0","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        :param actual: dict of key-value pairs."},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        for key, value in expected.items():"},{"line_number":52,"context_line":"            self.assertIn(key, actual)"},{"line_number":53,"context_line":"            self.assertEqual(value, actual[key])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def node_create(self, driver\u003d\u0027fake\u0027, name\u003dNone, params\u003d\u0027\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df3967d1_1db0e0dc","line":52,"in_reply_to":"df3967d1_4cc35c5e","updated":"2017-08-03 13:35:24.000000000","message":"Just a note that without that, the next line will blow up, but the traceback you get for the failure will be different. With this, it\u0027ll be easier to see by the msg, that the problem is key is not in .... Without it, you\u0027ll see a KeyError. Not as clear, but a developer should be able to figure it out.","commit_id":"885522fe68c78735811102bdd761b2a91cbeed98"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"780d020a479ca3419ce83c33a8dd3844982bac38","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        :param actual: dict of key-value pairs."},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        for key, value in expected.items():"},{"line_number":52,"context_line":"            self.assertIn(key, actual)"},{"line_number":53,"context_line":"            self.assertEqual(value, actual[key])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def node_create(self, driver\u003d\u0027fake\u0027, name\u003dNone, params\u003d\u0027\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df3967d1_4cc35c5e","line":52,"in_reply_to":"df3967d1_e3b468d3","updated":"2017-08-03 11:55:45.000000000","message":"Done","commit_id":"885522fe68c78735811102bdd761b2a91cbeed98"}]}
