Example #1
0
    def test_empty_guid(self, get, head):
        head.side_efect = resolve_url
        get.return_value = responses(304)

        parsed = feedparser.parse(data_file('no-guid.xml'))
        data = list(
            filter(None, [
                UniqueFeed.objects.entry_data(entry, parsed)
                for entry in parsed.entries
            ]))
        feed = FeedFactory.create(user__ttl=99999)
        with self.assertNumQueries(2):
            store_entries(feed.url, data)

        [entry] = es.manager.user(feed.user).fetch(annotate=feed.user)['hits']
        self.assertTrue(entry.guid)

        entry.delete()

        parsed = feedparser.parse(data_file('no-link-guid.xml'))
        data = list(
            filter(
                None,
                [
                    UniqueFeed.objects.entry_data(entry, parsed)
                    for entry in parsed.entries
                ]  # noqa
            ))
        feed = FeedFactory.create(user__ttl=99999)
        with self.assertNumQueries(2):
            store_entries(feed.url, data)
        [entry] = es.manager.user(feed.user).fetch()['hits']
        self.assertTrue(entry.guid)
    def test_empty_guid(self, get):
        get.return_value = responses(304)

        parsed = feedparser.parse(data_file('no-guid.xml'))
        data = list(filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        ))
        feed = FeedFactory.create(user__ttl=99999)
        with self.assertNumQueries(2):
            store_entries(feed.url, data)

        [entry] = es.manager.user(feed.user).fetch(annotate=feed.user)['hits']
        self.assertTrue(entry.guid)

        entry.delete()

        parsed = feedparser.parse(data_file('no-link-guid.xml'))
        data = list(filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]  # noqa
        ))
        feed = FeedFactory.create(user__ttl=99999)
        with self.assertNumQueries(2):
            store_entries(feed.url, data)
        [entry] = es.manager.user(feed.user).fetch()['hits']
        self.assertTrue(entry.guid)
Example #3
0
    def test_empty_guid(self, get):
        get.return_value = responses(304)

        parsed = feedparser.parse(test_file('no-guid.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )
        feed = FeedFactory.create()
        with self.assertNumQueries(5):
            store_entries(feed.url, data)
        self.assertTrue(feed.entries.get().guid)

        feed.entries.all().delete()

        parsed = feedparser.parse(test_file('no-link-guid.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )
        feed = FeedFactory.create()
        with self.assertNumQueries(5):
            store_entries(feed.url, data)
        self.assertTrue(feed.entries.get().guid)
Example #4
0
    def test_suspending_user(self, get):
        get.return_value = responses(304)
        feed = FeedFactory.create(user__is_suspended=True)
        call_command('delete_unsubscribed')
        self.assertEqual(UniqueFeed.objects.count(), 0)

        parsed = feedparser.parse(test_file('sw-all.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )

        with self.assertNumQueries(2):  # no insert
            store_entries(feed.url, data)

        feed2 = FeedFactory.create(url=feed.url)
        self.assertEqual(UniqueFeed.objects.count(), 1)
        call_command('delete_unsubscribed')
        self.assertEqual(UniqueFeed.objects.count(), 1)

        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )
        with self.assertNumQueries(5):  # insert
            store_entries(feed.url, data)

        self.assertEqual(feed.entries.count(), 0)
        self.assertEqual(feed2.entries.count(), 30)
Example #5
0
    def test_empty_guid(self, get):
        get.return_value = responses(304)

        parsed = feedparser.parse(data_file('no-guid.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )
        feed = FeedFactory.create()
        with self.assertNumQueries(5):
            store_entries(feed.url, data)
        self.assertTrue(feed.entries.get().guid)

        feed.entries.all().delete()

        parsed = feedparser.parse(data_file('no-link-guid.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )
        feed = FeedFactory.create()
        with self.assertNumQueries(5):
            store_entries(feed.url, data)
        self.assertTrue(feed.entries.get().guid)
Example #6
0
    def test_suspending_user(self, get):
        get.return_value = responses(304)
        feed = FeedFactory.create(user__is_suspended=True)
        call_command('delete_unsubscribed')
        self.assertEqual(UniqueFeed.objects.count(), 0)

        parsed = feedparser.parse(data_file('sw-all.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )

        with self.assertNumQueries(2):  # no insert
            store_entries(feed.url, data)

        feed2 = FeedFactory.create(url=feed.url)
        self.assertEqual(UniqueFeed.objects.count(), 1)
        call_command('delete_unsubscribed')
        self.assertEqual(UniqueFeed.objects.count(), 1)

        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )
        with self.assertNumQueries(5):  # insert
            store_entries(feed.url, data)

        self.assertEqual(feed.entries.count(), 0)
        self.assertEqual(feed2.entries.count(), 30)
Example #7
0
    def test_suspending_user(self, get):
        get.return_value = responses(304)
        feed = FeedFactory.create(user__is_suspended=True)
        call_command("delete_unsubscribed")
        self.assertEqual(UniqueFeed.objects.count(), 0)

        parsed = feedparser.parse(data_file("sw-all.xml"))
        data = list(filter(None, [UniqueFeed.objects.entry_data(entry, parsed) for entry in parsed.entries]))

        with self.assertNumQueries(1):  # no insert
            store_entries(feed.url, data)

        last_updates = feed.user.last_updates()
        self.assertEqual(last_updates, {})

        feed2 = FeedFactory.create(url=feed.url, user__ttl=99999)
        self.assertEqual(UniqueFeed.objects.count(), 1)
        call_command("delete_unsubscribed")
        self.assertEqual(UniqueFeed.objects.count(), 1)

        data = list(filter(None, [UniqueFeed.objects.entry_data(entry, parsed) for entry in parsed.entries]))
        with self.assertNumQueries(30 + 1):  # insert
            store_entries(feed.url, data)

        count = es.counts(feed.user, [feed.pk])[str(feed.pk)][str(feed.pk)]["doc_count"]
        count2 = es.counts(feed2.user, [feed2.pk])[str(feed2.pk)][str(feed2.pk)]["doc_count"]
        self.assertEqual(count, 0)
        self.assertEqual(count2, 30)
        last_updates = feed2.user.last_updates()
        self.assertEqual(list(last_updates.keys()), [feed2.url])
Example #8
0
    def test_ttl(self, get):
        get.return_value = responses(304)
        user = UserFactory.create(ttl=3)
        feed = FeedFactory.create(user=user, category__user=user)

        parsed = feedparser.parse(data_file("bruno.im.atom"))
        data = filter(None, [UniqueFeed.objects.entry_data(entry, parsed) for entry in parsed.entries])
        with self.assertNumQueries(2):
            store_entries(feed.url, data)
        self.assertEqual(feed.entries.count(), 0)
Example #9
0
    def test_ttl(self, get):
        get.return_value = responses(304)
        user = UserFactory.create(ttl=3)
        feed = FeedFactory.create(user=user, category__user=user)

        parsed = feedparser.parse(data_file('bruno.im.atom'))
        data = list(
            filter(None, [
                UniqueFeed.objects.entry_data(entry, parsed)
                for entry in parsed.entries
            ]))
        with self.assertNumQueries(1):
            store_entries(feed.url, data)
        self.assertEqual(feed.entries.count(), 0)
Example #10
0
    def test_ttl(self, get, head):
        head.side_efect = resolve_url
        get.return_value = responses(304)
        user = UserFactory.create(ttl=3)
        feed = FeedFactory.create(user=user, category__user=user)

        parsed = feedparser.parse(data_file('bruno.im.atom'))
        data = list(filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        ))
        with self.assertNumQueries(1):
            store_entries(feed.url, data)
        self.assertEqual(feed.entries.count(), 0)
Example #11
0
    def test_suspending_user(self, get, head):
        head.side_efect = resolve_url
        get.return_value = responses(304)
        feed = FeedFactory.create(user__is_suspended=True)
        call_command('delete_unsubscribed')
        self.assertEqual(UniqueFeed.objects.count(), 0)

        parsed = feedparser.parse(data_file('sw-all.xml'))
        data = list(
            filter(None, [
                UniqueFeed.objects.entry_data(entry, parsed)
                for entry in parsed.entries
            ]))

        with self.assertNumQueries(1):  # no insert
            store_entries(feed.url, data)

        last_updates = feed.user.last_updates()
        self.assertEqual(last_updates, {})

        feed2 = FeedFactory.create(url=feed.url, user__ttl=99999)
        self.assertEqual(UniqueFeed.objects.count(), 1)
        call_command('delete_unsubscribed')
        self.assertEqual(UniqueFeed.objects.count(), 1)

        data = list(
            filter(None, [
                UniqueFeed.objects.entry_data(entry, parsed)
                for entry in parsed.entries
            ]))
        with self.assertNumQueries(30 + 1):  # insert
            store_entries(feed.url, data)

        count = es.counts(feed.user,
                          [feed.pk])[str(feed.pk)][str(feed.pk)]['doc_count']
        count2 = es.counts(feed2.user, [feed2.pk])[str(feed2.pk)][str(
            feed2.pk)]['doc_count']
        self.assertEqual(count, 0)
        self.assertEqual(count2, 30)
        last_updates = feed2.user.last_updates()
        self.assertEqual(list(last_updates.keys()), [feed2.url])
Example #12
0
    def test_same_guids(self, get):
        get.return_value = responses(304)
        feed = FeedFactory.create()

        parsed = feedparser.parse(test_file('aldaily-06-27.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )

        with self.assertNumQueries(5):
            store_entries(feed.url, data)
        self.assertEqual(feed.entries.count(), 4)

        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )
        with self.assertNumQueries(2):
            store_entries(feed.url, data)
        self.assertEqual(feed.entries.count(), 4)

        parsed = feedparser.parse(test_file('aldaily-06-30.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )

        with self.assertNumQueries(5):
            store_entries(feed.url, data)
        self.assertEqual(feed.entries.count(), 10)
Example #13
0
    def test_same_guids(self, get):
        get.return_value = responses(304)
        feed = FeedFactory.create()

        parsed = feedparser.parse(data_file('aldaily-06-27.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )

        with self.assertNumQueries(5):
            store_entries(feed.url, data)
        self.assertEqual(feed.entries.count(), 4)

        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )
        with self.assertNumQueries(2):
            store_entries(feed.url, data)
        self.assertEqual(feed.entries.count(), 4)

        parsed = feedparser.parse(data_file('aldaily-06-30.xml'))
        data = filter(
            None,
            [UniqueFeed.objects.entry_data(
                entry, parsed) for entry in parsed.entries]
        )

        with self.assertNumQueries(5):
            store_entries(feed.url, data)
        self.assertEqual(feed.entries.count(), 10)
Example #14
0
    def test_same_guids(self, get):
        get.return_value = responses(304)
        feed = FeedFactory.create(user__ttl=99999)

        parsed = feedparser.parse(data_file("aldaily-06-27.xml"))
        data = list(filter(None, [UniqueFeed.objects.entry_data(entry, parsed) for entry in parsed.entries]))

        with self.assertNumQueries(1 + len(data)):
            store_entries(feed.url, data)

        count = es.counts(feed.user, [feed.pk], unread=False)[str(feed.pk)][str(feed.pk)]["doc_count"]
        self.assertEqual(count, 4)

        data = list(filter(None, [UniqueFeed.objects.entry_data(entry, parsed) for entry in parsed.entries]))
        with self.assertNumQueries(1):
            store_entries(feed.url, data)
        count = es.counts(feed.user, [feed.pk], unread=False)[str(feed.pk)][str(feed.pk)]["doc_count"]
        self.assertEqual(count, 4)

        parsed = feedparser.parse(data_file("aldaily-06-30.xml"))
        data = list(filter(None, [UniqueFeed.objects.entry_data(entry, parsed) for entry in parsed.entries]))

        with self.assertNumQueries(7):
            store_entries(feed.url, data)

        count = es.counts(feed.user, [feed.pk], unread=False)[str(feed.pk)][str(feed.pk)]["doc_count"]
        self.assertEqual(count, 10)
Example #15
0
    def test_same_guids(self, get, head):
        head.side_efect = resolve_url
        get.return_value = responses(304)
        feed = FeedFactory.create(user__ttl=99999)

        parsed = feedparser.parse(data_file('aldaily-06-27.xml'))
        data = list(
            filter(None, [
                UniqueFeed.objects.entry_data(entry, parsed)
                for entry in parsed.entries
            ]))

        with self.assertNumQueries(1 + len(data)):
            store_entries(feed.url, data)

        count = es.counts(feed.user, [feed.pk], unread=False)[str(
            feed.pk)][str(feed.pk)]['doc_count']
        self.assertEqual(count, 4)

        data = list(
            filter(None, [
                UniqueFeed.objects.entry_data(entry, parsed)
                for entry in parsed.entries
            ]))
        with self.assertNumQueries(1):
            store_entries(feed.url, data)
        count = es.counts(feed.user, [feed.pk], unread=False)[str(
            feed.pk)][str(feed.pk)]['doc_count']
        self.assertEqual(count, 4)

        parsed = feedparser.parse(data_file('aldaily-06-30.xml'))
        data = list(
            filter(None, [
                UniqueFeed.objects.entry_data(entry, parsed)
                for entry in parsed.entries
            ]))

        with self.assertNumQueries(7):
            store_entries(feed.url, data)

        count = es.counts(feed.user, [feed.pk], unread=False)[str(
            feed.pk)][str(feed.pk)]['doc_count']
        self.assertEqual(count, 10)