def test_update_issue_metadata_non_existent(self):
        """Test update issue metadata a testcase with no metadata."""
        progression_task._update_issue_metadata(self.testcase)  # pylint: disable=protected-access

        testcase = self.testcase.key.get()
        self.assertDictEqual(
            {
                'issue_labels': 'label1',
                'issue_components': 'component1',
            }, json.loads(testcase.additional_metadata))
    def test_update_issue_metadata_replace(self):
        """Test update issue metadata a testcase with different metadata."""
        self.testcase.additional_metadata = json.dumps({
            'issue_labels':
            'label1',
            'issue_components':
            'component2',
        })
        progression_task._update_issue_metadata(self.testcase)  # pylint: disable=protected-access

        testcase = self.testcase.key.get()
        self.assertDictEqual(
            {
                'issue_labels': 'label1',
                'issue_components': 'component1',
            }, json.loads(testcase.additional_metadata))
    def test_update_issue_metadata_same(self):
        """Test update issue metadata a testcase with the same metadata."""
        self.testcase.additional_metadata = json.dumps({
            'issue_labels':
            'label1',
            'issue_components':
            'component1',
        })
        self.testcase.put()

        self.testcase.crash_type = 'test'  # Should not be written.
        progression_task._update_issue_metadata(self.testcase)  # pylint: disable=protected-access

        testcase = self.testcase.key.get()
        self.assertDictEqual(
            {
                'issue_labels': 'label1',
                'issue_components': 'component1',
            }, json.loads(testcase.additional_metadata))
        self.assertIsNone(testcase.crash_type)