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_stage_subscription_list(fx_repo, fx_session): stage = Stage(fx_session, fx_repo) with stage: stage.subscriptions = SubscriptionList() subs = stage.subscriptions subs.add(Category(label='Test')) stage.subscriptions = subs with stage: assert (frozenset(stage.subscriptions) == frozenset( [Category(label='Test')]))
def add_category(category_id): cursor = Cursor(category_id) title = request.form['title'] outline = Category(label=title, _title=title) cursor.add(outline) with get_stage() as stage: stage.subscriptions = cursor.subscriptionlist return feeds(category_id)
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 test_subscription_list_contains_category(fx_categorized_subscription_list): subs = fx_categorized_subscription_list expected = { Category(label='Game'): frozenset([ Subscription(label='valve', feed_uri='http://valve.com/'), Subscription(label='nintendo', feed_uri='http://nintendo.com/') ]), Category(label='Music'): frozenset([ Subscription(label='capsule', feed_uri='http://www.capsule-web.com/') ]) } assert frozenset(subs) == frozenset(expected) for outline in subs: print(outline.label) assert outline.type == 'category' print(list(outline)) assert frozenset(outline) == expected[outline]
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_contains(fx_recursive_subscription_list, fx_subscription): tree = fx_recursive_subscription_list game_c = next(c for c in tree if c.label == 'Game') riot_c = next(c for c in game_c if c.label == 'Riot') lol_s = next(s for s in riot_c if s.label == 'LOL') none_c = Category(label='None') assert none_c not in tree assert not tree.contains(none_c) assert not tree.contains(none_c, recursively=True) assert fx_subscription not in tree assert not tree.contains(fx_subscription) assert not tree.contains(fx_subscription, recursively=True) assert lol_s not in tree assert not tree.contains(lol_s) assert tree.contains(lol_s, recursively=True) assert riot_c not in tree assert not tree.contains(riot_c) assert tree.contains(riot_c, recursively=True) assert game_c in tree assert tree.contains(game_c) assert tree.contains(game_c, recursively=True)
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/') ])
def test_no_head_set_owner(fx_headless_subscription_list): owner = Person(name='Earth Reader Team', email='earthreader' '@' 'librelist.com', uri='http://earthreader.org/') fx_headless_subscription_list.owner = owner assert fx_headless_subscription_list.owner == owner assert fx_headless_subscription_list.head.owner_name == owner.name assert fx_headless_subscription_list.head.owner_email == owner.email assert fx_headless_subscription_list.head.owner_uri == owner.uri @mark.parametrize('subs', [SubscriptionList(), Category()]) def test_subscription_set_subscribe(subs): feed = Feed(id='urn:earthreader:test:test_subscription_set_subscribe', title=Text(value='Feed title')) feed.links.extend([ Link(uri='http://example.com/index.xml', relation='self', mimetype='application/atom+xml'), Link(uri='http://example.com/', relation='alternate', mimetype='text/html') ]) rv = subs.subscribe(feed, icon_uri='http://example.com/favicon.ico') sub = next(iter(subs)) assert rv is sub assert sub.feed_id == '0691e2f0c3ea1d7fa9da48e14a46ac8077815ad3'
def test_no_head_set_owner(fx_headless_subscription_list): owner = Person( name='Earth Reader Team', email='earthreader' '@' 'librelist.com', uri='http://earthreader.org/' ) fx_headless_subscription_list.owner = owner assert fx_headless_subscription_list.owner == owner assert fx_headless_subscription_list.head.owner_name == owner.name assert fx_headless_subscription_list.head.owner_email == owner.email assert fx_headless_subscription_list.head.owner_uri == owner.uri @mark.parametrize('subs', [ SubscriptionList(), Category() ]) def test_subscription_set_subscribe(subs): feed = Feed( id='urn:earthreader:test:test_subscription_set_subscribe', title=Text(value='Feed title') ) feed.links.extend([ Link(uri='http://example.com/index.xml', relation='self', mimetype='application/atom+xml'), Link(uri='http://example.com/', relation='alternate', mimetype='text/html') ]) rv = subs.subscribe(feed, icon_uri='http://example.com/favicon.ico')