def test_calculate_slugs_multiple_tags(self):
        test_listing = copy.deepcopy(TEST_LISTING)
        test_listing['slugs'] = []
        test_listing['tags'] = TEST_TAGS_MULTIPLE_TAGS

        self.mox.StubOutWithMock(listing_service, 'make_slug')
        listing_service.make_slug(TEST_TAG1, TEST_SUBTAG1, TEST_NAME).AndReturn(
            'cat1/subcat1/TestName'
        )
        listing_service.make_slug(TEST_TAG1, TEST_SUBTAG2, TEST_NAME).AndReturn(
            'cat1/submeow2/TestName'
        )
        listing_service.make_slug(TEST_TAG2, TEST_SUBTAG3, TEST_NAME).AndReturn(
            'other2/subother3/TestName'
        )

        self.mox.ReplayAll()

        listing_service.calculate_slugs(test_listing)
        expected_slugs = [
            'cat1/subcat1/TestName',
            'cat1/submeow2/TestName',
            'other2/subother3/TestName'
        ]
        self.assertEqual(expected_slugs, test_listing['slugs'])
    def test_calculate_slugs_simple(self):
        test_listing = copy.deepcopy(TEST_LISTING)
        test_listing['slugs'] = []

        self.mox.StubOutWithMock(listing_service, 'make_slug')
        listing_service.make_slug(TEST_TAG1, TEST_SUBTAG1, TEST_NAME).AndReturn(
            'cat1/subcat1/TestName'
        )

        self.mox.ReplayAll()

        listing_service.calculate_slugs(test_listing)
        self.assertEqual(['cat1/subcat1/TestName'], test_listing['slugs'])
    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)