def test_create_response_for_single_listen(self):
        """ Tests create_response_for_single_listen method in api_compat
            to check if responses are generated correctly.
        """

        from listenbrainz.webserver.views.api_compat import create_response_for_single_listen

        timestamp = int(time.time())

        original_listen = {
            'artist': 'Kishore Kumar',
            'track': 'Saamne Ye Kaun Aya',
            'album': 'Jawani Diwani',
            'duration': 300,
            'timestamp': timestamp,
        }

        augmented_listen = {
            'listened_at': timestamp,
            'track_metadata': {
                'artist_name': 'Kishore Kumar',
                'track_name': 'Saamne Ye Kaun Aya',
                'release_name': 'Jawani Diwani',
                'additional_info': {
                    'track_length': 300
                }
            }
        }

        # If original listen and augmented listen are same
        xml_response = create_response_for_single_listen(original_listen,
                                                         augmented_listen,
                                                         listen_type="listens")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['scrobble']['track']['#text'],
                         'Saamne Ye Kaun Aya')
        self.assertEqual(response['scrobble']['track']['@corrected'], '0')
        self.assertEqual(response['scrobble']['artist']['#text'],
                         'Kishore Kumar')
        self.assertEqual(response['scrobble']['artist']['@corrected'], '0')
        self.assertEqual(response['scrobble']['album']['#text'],
                         'Jawani Diwani')
        self.assertEqual(response['scrobble']['timestamp'], str(timestamp))

        # If listen type is 'playing_now'
        xml_response = create_response_for_single_listen(
            original_listen, augmented_listen, listen_type="playing_now")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['nowplaying']['track']['#text'],
                         'Saamne Ye Kaun Aya')
        self.assertEqual(response['nowplaying']['track']['@corrected'], '0')
        self.assertEqual(response['nowplaying']['artist']['#text'],
                         'Kishore Kumar')
        self.assertEqual(response['nowplaying']['artist']['@corrected'], '0')
        self.assertEqual(response['nowplaying']['album']['#text'],
                         'Jawani Diwani')
        self.assertEqual(response['nowplaying']['album']['@corrected'], '0')
        self.assertEqual(response['nowplaying']['timestamp'], str(timestamp))

        # If artist was corrected
        original_listen['artist'] = 'Pink'

        xml_response = create_response_for_single_listen(original_listen,
                                                         augmented_listen,
                                                         listen_type="listens")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['scrobble']['track']['#text'],
                         'Saamne Ye Kaun Aya')
        self.assertEqual(response['scrobble']['track']['@corrected'], '0')
        self.assertEqual(response['scrobble']['artist']['#text'],
                         'Kishore Kumar')
        self.assertEqual(response['scrobble']['artist']['@corrected'], '1')
        self.assertEqual(response['scrobble']['album']['#text'],
                         'Jawani Diwani')
        self.assertEqual(response['scrobble']['album']['@corrected'], '0')
        self.assertEqual(response['scrobble']['timestamp'], str(timestamp))

        # If track was corrected
        original_listen['artist'] = 'Kishore Kumar'
        original_listen['track'] = 'Deliver'

        xml_response = create_response_for_single_listen(original_listen,
                                                         augmented_listen,
                                                         listen_type="listens")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['scrobble']['track']['#text'],
                         'Saamne Ye Kaun Aya')
        self.assertEqual(response['scrobble']['track']['@corrected'], '1')
        self.assertEqual(response['scrobble']['artist']['#text'],
                         'Kishore Kumar')
        self.assertEqual(response['scrobble']['artist']['@corrected'], '0')
        self.assertEqual(response['scrobble']['album']['#text'],
                         'Jawani Diwani')
        self.assertEqual(response['scrobble']['album']['@corrected'], '0')
        self.assertEqual(response['scrobble']['timestamp'], str(timestamp))

        # If album was corrected
        original_listen['track'] = 'Saamne Ye Kaun Aya'
        original_listen['album'] = 'Good Life'

        xml_response = create_response_for_single_listen(original_listen,
                                                         augmented_listen,
                                                         listen_type="listens")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['scrobble']['track']['#text'],
                         'Saamne Ye Kaun Aya')
        self.assertEqual(response['scrobble']['track']['@corrected'], '0')
        self.assertEqual(response['scrobble']['artist']['#text'],
                         'Kishore Kumar')
        self.assertEqual(response['scrobble']['artist']['@corrected'], '0')
        self.assertEqual(response['scrobble']['album']['#text'],
                         'Jawani Diwani')
        self.assertEqual(response['scrobble']['album']['@corrected'], '1')
        self.assertEqual(response['scrobble']['timestamp'], str(timestamp))
    def test_create_response_for_single_listen(self):
        """ Tests create_response_for_single_listen method in api_compat
            to check if responses are generated correctly.
        """

        from listenbrainz.webserver.views.api_compat import create_response_for_single_listen

        timestamp = int(time.time())

        original_listen = {
            'artist': 'Kishore Kumar',
            'track': 'Saamne Ye Kaun Aya',
            'album': 'Jawani Diwani',
            'duration': 300,
            'timestamp': timestamp,
        }

        augmented_listen = {
            'listened_at': timestamp,
            'track_metadata': {
                'artist_name': 'Kishore Kumar',
                'track_name':  'Saamne Ye Kaun Aya',
                'release_name': 'Jawani Diwani',
                'additional_info': {
                    'track_length': 300
                }
            }
        }

        # If original listen and augmented listen are same
        xml_response = create_response_for_single_listen(original_listen, augmented_listen, listen_type="listens")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['scrobble']['track']['#text'], 'Saamne Ye Kaun Aya')
        self.assertEqual(response['scrobble']['track']['@corrected'], '0')
        self.assertEqual(response['scrobble']['artist']['#text'], 'Kishore Kumar')
        self.assertEqual(response['scrobble']['artist']['@corrected'], '0')
        self.assertEqual(response['scrobble']['album']['#text'], 'Jawani Diwani')
        self.assertEqual(response['scrobble']['timestamp'], str(timestamp))

        # If listen type is 'playing_now'
        xml_response = create_response_for_single_listen(original_listen, augmented_listen, listen_type="playing_now")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['nowplaying']['track']['#text'], 'Saamne Ye Kaun Aya')
        self.assertEqual(response['nowplaying']['track']['@corrected'], '0')
        self.assertEqual(response['nowplaying']['artist']['#text'], 'Kishore Kumar')
        self.assertEqual(response['nowplaying']['artist']['@corrected'], '0')
        self.assertEqual(response['nowplaying']['album']['#text'], 'Jawani Diwani')
        self.assertEqual(response['nowplaying']['album']['@corrected'], '0')
        self.assertEqual(response['nowplaying']['timestamp'], str(timestamp))

        # If artist was corrected
        original_listen['artist'] = 'Pink'

        xml_response = create_response_for_single_listen(original_listen, augmented_listen, listen_type="listens")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['scrobble']['track']['#text'], 'Saamne Ye Kaun Aya')
        self.assertEqual(response['scrobble']['track']['@corrected'], '0')
        self.assertEqual(response['scrobble']['artist']['#text'], 'Kishore Kumar')
        self.assertEqual(response['scrobble']['artist']['@corrected'], '1')
        self.assertEqual(response['scrobble']['album']['#text'], 'Jawani Diwani')
        self.assertEqual(response['scrobble']['album']['@corrected'], '0')
        self.assertEqual(response['scrobble']['timestamp'], str(timestamp))

        # If track was corrected
        original_listen['artist'] = 'Kishore Kumar'
        original_listen['track'] = 'Deliver'

        xml_response = create_response_for_single_listen(original_listen, augmented_listen, listen_type="listens")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['scrobble']['track']['#text'], 'Saamne Ye Kaun Aya')
        self.assertEqual(response['scrobble']['track']['@corrected'], '1')
        self.assertEqual(response['scrobble']['artist']['#text'], 'Kishore Kumar')
        self.assertEqual(response['scrobble']['artist']['@corrected'], '0')
        self.assertEqual(response['scrobble']['album']['#text'], 'Jawani Diwani')
        self.assertEqual(response['scrobble']['album']['@corrected'], '0')
        self.assertEqual(response['scrobble']['timestamp'], str(timestamp))

        # If album was corrected
        original_listen['track'] = 'Saamne Ye Kaun Aya'
        original_listen['album'] = 'Good Life'

        xml_response = create_response_for_single_listen(original_listen, augmented_listen, listen_type="listens")
        response = xmltodict.parse(xml_response)

        self.assertEqual(response['scrobble']['track']['#text'], 'Saamne Ye Kaun Aya')
        self.assertEqual(response['scrobble']['track']['@corrected'], '0')
        self.assertEqual(response['scrobble']['artist']['#text'], 'Kishore Kumar')
        self.assertEqual(response['scrobble']['artist']['@corrected'], '0')
        self.assertEqual(response['scrobble']['album']['#text'], 'Jawani Diwani')
        self.assertEqual(response['scrobble']['album']['@corrected'], '1')
        self.assertEqual(response['scrobble']['timestamp'], str(timestamp))