def test_sanitize_tags_collision_avoidance(self):
        test_listing = {'tags': TEST_TAGS_MULTIPLE_TAGS}
        self.mox.StubOutWithMock(listing_service, 'make_tag_safe')

        ls = listing_service
        ls.make_tag_safe(TEST_TAG1).InAnyOrder().AndReturn(TEST_TAG1)
        ls.make_tag_safe(TEST_TAG2).InAnyOrder().AndReturn(TEST_TAG1)
        ls.make_tag_safe(TEST_SUBTAG1).InAnyOrder().AndReturn(TEST_SUBTAG1)
        ls.make_tag_safe(TEST_SUBTAG2).InAnyOrder().AndReturn(TEST_SUBTAG2)
        ls.make_tag_safe(TEST_SUBTAG3).InAnyOrder().AndReturn(TEST_SUBTAG3)

        self.mox.ReplayAll()

        listing_service.sanitize_tags(test_listing)
        tags = test_listing['tags']
        self.assertEqual(1, len(tags))
        self.assertEqual(3, len(tags[TEST_TAG1]))
    def test_update_saved(self):
        test_id = 'someid'
        test_listing_copy = copy.deepcopy(TEST_LISTING)
        test_listing_copy['_id'] = test_id
        test_listing_new = copy.deepcopy(TEST_LISTING)
        test_listing_new['_id'] = test_id

        self.mox.StubOutWithMock(listing_service, 'sanitize_tags')
        listing_service.sanitize_tags(test_listing_new)

        self.mox.StubOutWithMock(listing_service, 'calculate_slugs')
        listing_service.calculate_slugs(test_listing_new)

        test_db_adapter = mox.Mox().CreateMock(db_service.DBAdapter)
        test_db_adapter.upsert_listing(test_listing_new)
        tiny_classified.db_adapter = test_db_adapter

        self.mox.ReplayAll()

        listing_service.update(test_listing_new)
        self.assertEqual(test_id, test_listing_new['_id'])
        self.assertEqual(test_listing_new, test_listing_copy)