Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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')]))
Beispiel #4
0
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)
Beispiel #5
0
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]
Beispiel #6
0
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
Beispiel #7
0
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'])
Beispiel #8
0
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)
Beispiel #9
0
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'])
Beispiel #10
0
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/')
    ])
Beispiel #11
0
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
Beispiel #12
0

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'
Beispiel #13
0
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')