)]}'
{"shade/tests/functional/test_usage.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e0397911a1ef24beb56d5cc902d32d01907e61ce","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \u0027demo\u0027, datetime.datetime.now(), datetime.datetime.now())"},{"line_number":32,"context_line":"        self.assertIsNotNone(usage)"},{"line_number":33,"context_line":"        self.assertTrue(hasattr(usage, \u0027total_hours\u0027))"},{"line_number":34,"context_line":"        self.assertTrue(hasattr(usage, \u0027project_id\u0027))"},{"line_number":35,"context_line":"        self.assertFalse(hasattr(usage, \u0027tenant_id\u0027))"},{"line_number":36,"context_line":"        self.assertEqual(usage[\u0027server_usages\u0027], [])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a57fde8_b5d8361f","line":34,"updated":"2017-01-12 14:52:01.000000000","message":"This assertTrue(hasattr(...)) would be be written:\n  self.assertIn(\u0027project_id\u0027, usage))\n\nIn case of failure, the error message will be clearer than \u0027False is not True\u0027.","commit_id":"b888e719150c0189f2c3cc3db17fe197af3f3e91"}]}
