Ejemplo n.º 1
0
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
Ejemplo n.º 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
Ejemplo n.º 3
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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]
Ejemplo n.º 6
0
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) == []
Ejemplo n.º 7
0
def test_write_subscription_with_ascii_title():
    rss = rss_template_with_title.format('english')
    feed, _ = parse_rss2(rss)
    feed.id = 'id'

    sublist = SubscriptionList()
    sublist.subscribe(feed)

    g = write(sublist)
    assert ''.join(g)
Ejemplo n.º 8
0
def test_write_subscription_with_ascii_title():
    rss = rss_template_with_title.format('english')
    feed, _ = parse_rss(rss)
    feed.id = 'id'

    sublist = SubscriptionList()
    sublist.subscribe(feed)

    g = write(sublist)
    assert ''.join(g)
Ejemplo n.º 9
0
def test_write_subscription_with_nonascii_title():
    '''SubscriptionList convert the feed title to :class:`str`, and
    :class:`write` try to encode the title in utf8.
    When non-ascii characters are in the title, UnicodeDecodeError is raised.
    '''
    rss = rss_template_with_title.format('한글')
    feed, _ = parse_rss2(rss)
    feed.id = 'id'

    sublist = SubscriptionList()
    sublist.subscribe(feed)

    g = write(sublist)
    assert ''.join(g)
Ejemplo n.º 10
0
def test_write_subscription_with_nonascii_title():
    '''SubscriptionList convert the feed title to :class:`str`, and
    :class:`write` try to encode the title in utf8.
    When non-ascii characters are in the title, UnicodeDecodeError is raised.
    '''
    rss = rss_template_with_title.format('한글')
    feed, _ = parse_rss(rss)
    feed.id = 'id'

    sublist = SubscriptionList()
    sublist.subscribe(feed)

    g = write(sublist)
    assert ''.join(g)
Ejemplo n.º 11
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'])
Ejemplo n.º 12
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'])
Ejemplo n.º 13
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')]))
Ejemplo n.º 14
0
Archivo: web_test.py Proyecto: 0hoo/web
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
Ejemplo n.º 15
0
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]
Ejemplo n.º 16
0
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) == []
Ejemplo n.º 17
0
    def __init__(self, category_id, return_parent=False):
        with get_stage() as stage:
            self.subscriptionlist = (stage.subscriptions if stage.subscriptions
                                     else SubscriptionList())
        self.value = self.subscriptionlist
        self.path = ['/']
        self.category_id = None

        target_name = None
        self.target_child = None

        try:
            if category_id:
                self.category_id = category_id
                self.path = [key[1:] for key in category_id.split('/')]
                if return_parent:
                    target_name = self.path.pop(-1)
                for key in self.path:
                    self.value = self.value.categories[key]
                if target_name:
                    self.target_child = self.value.categories[target_name]
        except Exception:
            raise InvalidCategoryID('The given category ID is not valid')
Ejemplo n.º 18
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
Ejemplo n.º 19
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'
Ejemplo n.º 20
0
def test_count_empty_list():
    subs = SubscriptionList()
    assert len(subs) == 0
    subs = SubscriptionList(body=Body())
    assert len(subs) == 0
Ejemplo n.º 21
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/')
    ])
Ejemplo n.º 22
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')
    ])
Ejemplo n.º 23
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/')
    ])