def test_remove_subscription(fx_stages, fx_subscription): a, b = fx_stages with a: s = SubscriptionList() s.add(fx_subscription) a.subscriptions = s with a: assert fx_subscription in a.subscriptions with b: assert fx_subscription in b.subscriptions added = Subscription( label='Added', feed_uri='http://example.com/atom.xml', alternate_uri='http://example.com/' ) with a: a_s = a.subscriptions a_s.remove(fx_subscription) a.subscriptions = a_s with b: b_s = b.subscriptions b_s.add(added) b.subscriptions = b_s with a: assert added in a.subscriptions assert fx_subscription not in a.subscriptions with b: assert added in b.subscriptions assert fx_subscription not in b.subscriptions
def test_remove_category(fx_stages, fx_subscription): a, b = fx_stages with a: s = SubscriptionList() c = Category(label='To be deleted') c.add(fx_subscription) s.add(c) a.subscriptions = s with a: assert c in a.subscriptions assert fx_subscription in a.subscriptions.recursive_subscriptions with b: assert c in b.subscriptions assert fx_subscription in b.subscriptions.recursive_subscriptions added = Category(label='Added') with a: a_s = a.subscriptions a_s.remove(c) a.subscriptions = a_s with b: b_s = b.subscriptions b_s.add(added) b.subscriptions = b_s with a: assert added in a.subscriptions assert c not in a.subscriptions assert fx_subscription not in a.subscriptions.recursive_subscriptions with b: assert added in b.subscriptions assert c not in b.subscriptions assert fx_subscription not in b.subscriptions.recursive_subscriptions
def test_count_duplicated_url(fx_subscription): subs = SubscriptionList() subs.add(fx_subscription) assert len(subs) == 1 assert list(subs) == [fx_subscription] subs.add(fx_subscription) assert len(subs) == 1 assert list(subs) == [fx_subscription]
def test_count_after_remove(fx_subscription): subs = SubscriptionList() subs.add(fx_subscription) assert len(subs) == 1 assert list(subs) == [fx_subscription] subs.discard(fx_subscription) assert not subs assert len(subs) == 0 assert list(subs) == []
def test_detect_subcategory_changes(fx_stages): stage, _ = fx_stages subs = SubscriptionList() category = Category(label='first-order') subcategory = Category(label='second-order') category.add(subcategory) subs.add(category) assert not subs.categories['first-order'].categories['second-order'] with stage: stage.subscriptions = subs assert not (stage.subscriptions.categories['first-order'] .categories['second-order']) subcategory.add(Category(label='added')) assert subs.categories['first-order'].categories['second-order'] with stage: stage.subscriptions = subs assert (stage.subscriptions.categories['first-order'] .categories['second-order'])
def xmls(request, fx_test_stage): stage = fx_test_stage subscriptions = SubscriptionList() categoryone = Category(label='categoryone', _title='categoryone') categorytwo = Category(label='categorytwo', _title='categorytwo') categorythree = Category(label='categorythree', _title='categorythree') subscriptions.add(categoryone) subscriptions.add(categorythree) categoryone.add(categorytwo) pair = { 'http://feedone.com/feed/atom/': categoryone, 'http://feedtwo.com/feed/atom/': categorytwo, 'http://feedthree.com/feed/atom/': subscriptions, 'http://feedfour.com/feed/atom/': categorythree } generator = crawl(pair.keys(), 4) with stage: for feed_url, feed, hints in generator: sub = pair[feed_url].subscribe(feed) stage.feeds[sub.feed_id] = feed stage.subscriptions = subscriptions
def test_subscription_set_categories_subscriptions(): subs = SubscriptionList() subs.add(Category(label='Category A')) subs.add(Subscription(label='Subscription A', feed_uri='http://feeda.com/')) subs.add(Category(label='Category B')) subs.add(Subscription(label='Subscription B', feed_uri='http://feedb.com/')) subs.add(Category(label='Category C')) subs.add(Subscription(label='Subscription C', feed_uri='http://feedc.com/')) assert subs.categories == { 'Category A': Category(label='Category A'), 'Category B': Category(label='Category B'), 'Category C': Category(label='Category C') } assert subs.subscriptions == frozenset([ Subscription(label='Subscription A', feed_uri='http://feeda.com/'), Subscription(label='Subscription B', feed_uri='http://feedb.com/'), Subscription(label='Subscription C', feed_uri='http://feedc.com/') ])