def test_update_should_keep_pinned_tags(self): content = create_testcontent() self.set_tags(content, """ <tag uuid="uid-karenduve">Karen Duve</tag>""") tagger = Tagger(content) tagger.set_pinned([u'☃Karen Duve']) tagger.update() self.assertEqual([u'☃Karen Duve'], list(tagger))
def test_set_pinned_should_update_tab_separated_property(self): content = create_testcontent() self.set_tags(content, """ <tag uuid="uid-karenduve">Karen Duve</tag> <tag uuid="uid-berlin">Berlin</tag> """) tagger = Tagger(content) tagger.set_pinned([u'☃Berlin', u'☃Karen Duve']) self.assertEqual((u'☃Berlin', u'☃Karen Duve'), tagger.pinned) dav = zeit.connector.interfaces.IWebDAVProperties(content) dav_key = ('pinned', 'http://namespaces.zeit.de/CMS/tagging') self.assertEqual(u'☃Berlin\t☃Karen Duve', dav[dav_key]) self.assertTrue(tagger[u'☃Berlin'].pinned)
def test_set_pinned_should_update_tab_separated_property(self): content = create_testcontent() self.set_tags( content, """ <tag uuid="uid-karenduve">Karen Duve</tag> <tag uuid="uid-berlin">Berlin</tag> """) tagger = Tagger(content) tagger.set_pinned([u'☃Berlin', u'☃Karen Duve']) self.assertEqual((u'☃Berlin', u'☃Karen Duve'), tagger.pinned) dav = zeit.connector.interfaces.IWebDAVProperties(content) dav_key = ('pinned', 'http://namespaces.zeit.de/CMS/tagging') self.assertEqual(u'☃Berlin\t☃Karen Duve', dav[dav_key]) self.assertTrue(tagger[u'☃Berlin'].pinned)
def test_update_should_not_duplicate_pinned_tags(self): # this is a rather tricky edge case: # when we pin a manual tag first, and then also pin a tag that # comes in via update() again, we used to screw it up, # since we compared against a generator multiple times extract_keywords = 'zeit.retresco.connection.TMS.extract_keywords' with mock.patch(extract_keywords) as extract_keywords: extract_keywords.return_value = [Tag('Foo', ''), Tag('Bar', '')] content = create_testcontent() tagger = Tagger(content) tagger.update() self.assertEqual(2, len(tagger)) tagger[u'☃Qux'] = Tag('Qux', '') tagger.set_pinned([u'☃Qux', u'☃Foo']) tagger.update() self.assertEqual([u'Foo', u'Bar', u'Qux'], [tagger[x].label.strip() for x in tagger])
def test_update_should_not_duplicate_pinned_tags(self): # this is a rather tricky edge case: # when we pin a manual tag first, and then also pin a tag that # comes in via update() again, we used to screw it up, # since we compared against a generator multiple times extract_keywords = 'zeit.retresco.connection.TMS.extract_keywords' with mock.patch(extract_keywords) as extract_keywords: extract_keywords.return_value = [ Tag('Foo', ''), Tag('Bar', '')] content = create_testcontent() tagger = Tagger(content) tagger.update() self.assertEqual(2, len(tagger)) tagger[u'☃Qux'] = Tag('Qux', '') tagger.set_pinned([u'☃Qux', u'☃Foo']) tagger.update() self.assertEqual( [u'Foo', u'Bar', u'Qux'], [tagger[x].label.strip() for x in tagger])
def test_tags_retrieved_via_values_remain_pinned(self): content = create_testcontent() self.set_tags(content, """<tag uuid="uid-berlin">Berlin</tag>""") tagger = Tagger(content) tagger.set_pinned([u'☃Berlin']) self.assertEqual(True, next(tagger.values()).pinned)