Exemple #1
0
    def test_subscribers(self):
        bob = User()
        bob.email = "Bob"
        bob.save()
        steve = User()
        steve.email = "Steve"
        steve.save()

        feed = Feed()
        feed.title = "Some Political Bullshit"
        feed.link = "http://bs.com/rss"
        feed.site = "http://bs.com"
        feed.save()
        feed.add_subscriber(bob)
        feed.add_subscriber(steve)

        other_feed = Feed()
        other_feed.title = "Mom's recipe blog"
        other_feed.site = "http://yourmom.com"
        other_feed.link = "http://yourmom.com/rss"
        other_feed.save()
        other_feed.add_subscriber(steve)

        self.assertEqual(feed.subscribers.count(), 2)
        self.assertEqual(other_feed.subscribers.count(), 1)
Exemple #2
0
    def test_duplicates(self):
        user = User()
        user.email = 'Bob'
        user.save()

        tmp = Feed()
        tmp.title = 'Marginal Revolution'
        tmp.link = 'http://feeds.feedburner.com/marginalrevolution/feed'
        tmp.site = 'http://marginalrevolution.com/'
        last_fetched = datetime.now() - timedelta(minutes=31)
        tmp.last_fetched = last_fetched
        # Fetch #1
        feed = Feed.create_and_subscribe(tmp.title, tmp.link, tmp.site, user)

        # Fetch #2
        task1 = tasks.UpdateFeedTask()
        result1 = task1.delay()

        # Force fetch #3
        last_fetched = datetime.now() - timedelta(minutes=31)
        feed.last_fetched = last_fetched
        feed.save()

        task2 = tasks.UpdateFeedTask()
        result2 = task2.delay()

        self.assertEqual(feed.feeditems.count(), 15)
    def test_single_resource(self):
        feed = Feed()
        feed.link = 'http://www.paulhummer.org/rss'
        feed.site = 'http://www.paulhummer.org/'
        feed.save()
        feed.update()
        self.user.subscribe(feed)

        #Create another feed that the user isn't subscribed to.
        unused_feed = Feed()
        unused_feed.link = 'http://www.chizang.net/alex/blog/feed/'
        unused_feed.site = 'http://www.chizang.net/alex/blog/'
        unused_feed.save()
        unused_feed.update()

        response = self.client.get('/api/0.9/item/')
        self.assertEqual(response.status_code, 200)

        content = json.loads(response.content)
        objects = content['objects']
        resource = objects[0]

        response = self.client.get(resource['resource_uri'])
        self.assertEqual(response.status_code, 200)

        content = json.loads(response.content)

        resource_id = resource['resource_uri'].split('/')[-2]
        item = FeedItem.objects.get(pk=resource_id)
        useritem = UserFeedItem.objects.get(user=self.user, item=item)

        self.assertEqual(resource['description'], item.description)
        self.assertEqual(resource['link'], item.link)
        self.assertEqual(resource['read'], useritem.read)
        self.assertEqual(resource['title'], item.title)

        feed_id = int(resource['feed']['id'])
        self.assertEqual(feed_id, item.feed.pk)

        self.assertEqual(
            sorted(resource.keys()),
            [u'description', u'feed', u'id', u'link', u'published', u'read',
             u'resource_uri', u'title'])
Exemple #4
0
    def test_duplicates(self):
        """Ensure that we can't create duplicate feeds using create_and_subscribe()"""
        user = User()
        user.email = "Bob"
        user.save()

        feed = Feed()
        feed.title = "BoingBoing"
        feed.link = "http://boingboing.net/atom.xml"
        feed.site = "http://boingboing.net"
        f = Feed.create_and_subscribe(feed.title, feed.link, feed.site, user)

        feed2 = Feed()
        feed2.title = "BoingBoing"
        feed2.link = "http://boingboing.net/atom.xml"
        feed2.site = "http://boingboing.net"
        # XXX: TODO: we need to add/test duplicate checks save() too :(
        f2 = Feed.create_and_subscribe(feed2.title, feed2.link, feed2.site, user)

        self.assertEqual(f.pk, f2.pk)
Exemple #5
0
    def test_tagging(self):
        bob = User()
        bob.email = "Bob"
        bob.save()

        feed = Feed()
        feed.title = "Some Political Bullshit"
        feed.link = "http://bs.com/rss"
        feed.site = "http://bs.com"
        feed.save()
        feed.add_subscriber(bob)

        other_feed = Feed()
        other_feed.title = "Mom's recipe blog"
        other_feed.link = "http://yourmom.com/rss"
        other_feed.site = "http://yourmom.com"
        other_feed.save()
        other_feed.add_subscriber(bob)

        userfeed = UserFeed.objects.get(user=bob, feed=feed)
        userfeed.tags.add("politics", "mom")

        userfeed2 = UserFeed.objects.get(user=bob, feed=other_feed)
        userfeed2.tags.add("mom", "food")

        self.assertIn("mom", [tag.name for tag in userfeed.tags.all()])
        self.assertIn("politics", [tag.name for tag in userfeed.tags.all()])
        self.assertNotIn("food", [tag.name for tag in userfeed.tags.all()])

        tagged = UserFeed.objects.filter(tags__name__in=["mom"])
        self.assertEquals(len(tagged), 2)

        userfeed.tags.set("test")
        self.assertEquals(len(userfeed.tags.all()), 1)
        self.assertNotIn("mom", [tag.name for tag in userfeed.tags.all()])

        # API claims we can do this safely without raising an exception
        userfeed.tags.remove("mom")

        userfeed.tags.clear()
        self.assertEquals(len(userfeed.tags.all()), 0)
Exemple #6
0
    def test_basics(self):
        bob = User()
        bob.email = "Bob"
        bob.save()
        steve = User()
        steve.email = "Steve"
        steve.save()

        feed = Feed()
        feed.title = "Some Political Bullshit"
        feed.link = "http://bs.com/rss"
        feed.site = "http://bs.com"
        feed.save()

        other_feed = Feed()
        other_feed.title = "Mom's recipe blog"
        other_feed.link = "http://yourmom.com/rss"
        other_feed.site = "http://yourmom.com"
        other_feed.save()

        user_feed = UserFeed()
        user_feed.user = bob
        user_feed.feed = feed
        user_feed.save()

        user_feed2 = UserFeed()
        user_feed2.user = steve
        user_feed2.feed = feed
        user_feed2.save()

        user_feed3 = UserFeed()
        user_feed3.user = steve
        user_feed3.feed = other_feed
        user_feed3.save()

        self.assertEqual(feed.subscribers.count(), 2)
        self.assertEqual(other_feed.subscribers.count(), 1)

        feeds_for_steve = UserFeed.objects.filter(user=steve)
        self.assertEqual(len(feeds_for_steve), 2)
Exemple #7
0
    def test_for_user(self):
        """Test FeedItemManager.for_user."""
        user = User()
        user.email = "*****@*****.**"
        user.save()

        feed = Feed()
        feed.link = "http://paulhummer.org/rss"
        feed.site = "http://paulhummer.org/"
        feed.save()
        user.subscribe(feed)

        other_feed = Feed()
        other_feed.link = "http://www.chizang.net/alex/blog/feed/"
        other_feed.site = "http://www.chizang.net/alex/blog/"
        other_feed.save()

        userfeeditems = FeedItem.objects.for_user(user)
        self.assertEqual(userfeeditems.count(), feed.items.count())

        other_feed.add_subscriber(user)

        userfeeditems = FeedItem.objects.for_user(user)
        self.assertEqual(userfeeditems.count(), feed.items.count() + other_feed.items.count())
    def test_unauthorized(self):
        feed = Feed()
        feed.link = 'http://www.paulhummer.org/rss'
        feed.save()
        self.user.subscribe(feed)

        #Create another feed that the user isn't subscribed to.
        unused_feed = Feed()
        unused_feed.link = 'http://xkcd.com/atom.xml'
        unused_feed.site = 'http://xkcd.com/'
        unused_feed.save()
        unused_feed.update()
        feeditem_id = unused_feed.items.all()[0].pk

        response = self.client.get(
            '/api/0.9/item/{0}'.format(feeditem_id),
            follow=True)
        self.assertEqual(response.status_code, 404)
    def test_single_resource_list(self):
        feed = Feed()
        feed.link = 'http://www.paulhummer.org/rss'
        feed.site = 'http://www.paulhummer.org/'
        feed.save()
        feed.update()
        self.user.subscribe(feed)

        response = self.client.get('/api/0.9/item/')
        self.assertEqual(response.status_code, 200)

        content = json.loads(response.content)
        objects = content['objects']

        self.assertEqual(len(objects), 20)

        resource = objects[0]
        resource_id = resource['resource_uri'].split('/')[-2]
        item = FeedItem.objects.get(pk=resource_id)

        self.assertEqual(resource['description'], item.description)
        self.assertEqual(resource['title'], item.title)
        self.assertEqual(resource['link'], item.link)