Exemplo n.º 1
0
class ArticleDuplicateTest(TestCase):

    def setUp(self):

        # NOTE: we need real web pages, else the absolutization won't work or
        # will find duplicates and tests will fail for a real-life reason.
        self.article1 = Article(title='test1',
                                url='http://blog.1flow.io/post/'
                                '59410536612/1flow-blog-has-moved').save()
        self.article2 = Article(title='test2',
                                url='http://obi.1flow.io/fr/').save()
        self.article3 = Article(title='test3',
                                url='http://obi.1flow.io/en/').save()

        # User & Reads creation
        for index in xrange(1, 6):
            username = '******' % index
            du = DjangoUser.objects.create(username=username,
                                           email='*****@*****.**' % username)
            # NOTE: the mongoDB user is created automatically. If you
            # try to create one it will fail with duplicate index error.
            u = du.mongo
            Read(user=u, article=self.article1).save()

        for index in xrange(6, 11):
            username = '******' % index
            du = DjangoUser.objects.create(username=username,
                                           email='*****@*****.**' % username)
            u = du.mongo
            Read(user=u, article=self.article2).save()

        # Feeds creation
        for index in xrange(1, 6):
            f = Feed(name='test feed #%s' % index,
                     url='http://test-feed%s.com' % index).save()
            self.article1.update(add_to_set__feeds=f)

            self.article1.reload()

        for index in xrange(6, 11):
            f = Feed(name='test feed #%s' % index,
                     url='http://test-feed%s.com' % index).save()
            self.article2.update(add_to_set__feeds=f)

            self.article2.reload()

    def tearDown(self):
        Article.drop_collection()
        User.drop_collection()
        Read.drop_collection()
        Feed.drop_collection()

    def test_register_duplicate_bare(self):

        self.assertEquals(Article.objects(
                          duplicate_of__exists=False).count(), 3)

        self.article1.register_duplicate(self.article2)

        # needed because feeds are modified in another instance of the
        # same dabase record, via the celery task.
        self.article1.safe_reload()

        self.assertEquals(self.article1.reads.count(), 10)

        self.assertEquals(self.article2.reads.count(), 0)

        self.assertEquals(len(self.article1.feeds), 10)

        self.assertEquals(len(self.article2.feeds), 5)

        self.assertEquals(self.article2.duplicate_of, self.article1)

        self.assertEquals(Article.objects(
                          duplicate_of__exists=True).count(), 1)
        self.assertEquals(Article.objects(
                          duplicate_of__exists=False).count(), 2)

    def test_register_duplicate_not_again(self):

        self.article1.register_duplicate(self.article2)
        self.article1.safe_reload()

        self.assertEquals(self.article2.duplicate_of, self.article1)
Exemplo n.º 2
0
class ArticleDuplicateTest(TestCase):
    def setUp(self):

        # NOTE: we need real web pages, else the absolutization won't work or
        # will find duplicates and tests will fail for a real-life reason.
        self.article1 = Article(title='test1',
                                url='http://blog.1flow.io/post/'
                                '59410536612/1flow-blog-has-moved').save()
        self.article2 = Article(title='test2',
                                url='http://obi.1flow.io/fr/').save()
        self.article3 = Article(title='test3',
                                url='http://obi.1flow.io/en/').save()

        # User & Reads creation
        for index in xrange(1, 6):
            username = '******' % index
            du = DjangoUser.objects.create(username=username,
                                           email='*****@*****.**' % username)
            # NOTE: the mongoDB user is created automatically. If you
            # try to create one it will fail with duplicate index error.
            u = du.mongo
            Read(user=u, article=self.article1).save()

        for index in xrange(6, 11):
            username = '******' % index
            du = DjangoUser.objects.create(username=username,
                                           email='*****@*****.**' % username)
            u = du.mongo
            Read(user=u, article=self.article2).save()

        # Feeds creation
        for index in xrange(1, 6):
            f = Feed(name='test feed #%s' % index,
                     url='http://test-feed%s.com' % index).save()
            self.article1.update(add_to_set__feeds=f)

            self.article1.reload()

        for index in xrange(6, 11):
            f = Feed(name='test feed #%s' % index,
                     url='http://test-feed%s.com' % index).save()
            self.article2.update(add_to_set__feeds=f)

            self.article2.reload()

    def tearDown(self):
        Article.drop_collection()
        User.drop_collection()
        Read.drop_collection()
        Feed.drop_collection()

    def test_register_duplicate_bare(self):

        self.assertEquals(
            Article.objects(duplicate_of__exists=False).count(), 3)

        self.article1.register_duplicate(self.article2)

        # needed because feeds are modified in another instance of the
        # same dabase record, via the celery task.
        self.article1.safe_reload()

        self.assertEquals(self.article1.reads.count(), 10)

        self.assertEquals(self.article2.reads.count(), 0)

        self.assertEquals(len(self.article1.feeds), 10)

        self.assertEquals(len(self.article2.feeds), 5)

        self.assertEquals(self.article2.duplicate_of, self.article1)

        self.assertEquals(
            Article.objects(duplicate_of__exists=True).count(), 1)
        self.assertEquals(
            Article.objects(duplicate_of__exists=False).count(), 2)

    def test_register_duplicate_not_again(self):

        self.article1.register_duplicate(self.article2)
        self.article1.safe_reload()

        self.assertEquals(self.article2.duplicate_of, self.article1)