예제 #1
0
파일: tests.py 프로젝트: tonytamsf/mygpo
    def test_merge_podcasts(self):
        podcast1 = Podcast.objects.get(pk=self.podcast1.pk)
        podcast2 = Podcast.objects.get(pk=self.podcast2.pk)
        podcast3 = Podcast.objects.get(pk=self.podcast3.pk)

        # assert that the podcasts are actually grouped
        self.assertEqual(podcast2.group, podcast3.group)

        action1 = EpisodeHistoryEntry.create_entry(self.user, self.episode1,
                                                   EpisodeHistoryEntry.PLAY)

        action2 = EpisodeHistoryEntry.create_entry(
            self.user, self.episode2, EpisodeHistoryEntry.DOWNLOAD)

        # decide which episodes to merge
        groups = [(0, [self.episode1.id, self.episode2.id])]
        counter = Counter()

        episode2_id = self.episode2.id

        pm = PodcastMerger([podcast2, podcast1], counter, groups)
        pm.merge()

        history = EpisodeHistoryEntry.objects.filter(episode=self.episode1,
                                                     user=self.user)

        self.assertIn(action1, history)
        self.assertIn(action2, history)

        episode1 = Episode.objects.get(pk=self.episode1.pk)

        # episode2 has been merged into episode1, so it must contain its
        # merged _id
        self.assertEqual([x.uuid for x in episode1.merged_uuids.all()],
                         [episode2_id])
예제 #2
0
파일: tests.py 프로젝트: sandebert/mygpo
    def test_merge_podcasts(self):

        action1 = EpisodeHistoryEntry.create_entry(
            self.user,
            self.episode1,
            EpisodeHistoryEntry.PLAY,
        )

        action2 = EpisodeHistoryEntry.create_entry(
            self.user,
            self.episode2,
            EpisodeHistoryEntry.DOWNLOAD,
        )

        # decide which episodes to merge
        groups = [(0, [self.episode1, self.episode2])]
        counter = Counter()

        pm = PodcastMerger([self.podcast1, self.podcast2], counter, groups)
        pm.merge()

        history = EpisodeHistoryEntry.objects.filter(
            episode=self.episode1,
            user=self.user,
        )

        # both actions must be present for the merged episode
        self.assertIn(action1, history)
        self.assertIn(action2, history)
예제 #3
0
파일: tests.py 프로젝트: sandebert/mygpo
    def test_merge_podcasts(self):
        subscribe(self.podcast2, self.user, self.device)

        # merge podcast2 into podcast1
        pm = PodcastMerger([self.podcast1, self.podcast2], Counter(), [])
        pm.merge()

        # get podcast for URL of podcast2 and unsubscribe from it
        p = Podcast.objects.get(urls__url=self.P2_URL)
        unsubscribe(p, self.user, self.device)

        subscriptions = Podcast.objects.filter(subscription__user=self.user)
        self.assertEqual(0, len(subscriptions))
예제 #4
0
파일: tasks.py 프로젝트: deepak02/xyz_gpod
def merge_podcasts(podcast_ids, num_groups):
    """ Task to merge some podcasts"""

    logger.info('merging podcast ids %s', podcast_ids)

    podcasts = list(Podcast.objects.filter(id__in=podcast_ids))

    logger.info('merging podcasts %s', podcasts)

    actions = Counter()

    pm = PodcastMerger(podcasts, actions, num_groups)
    podcast = pm.merge()

    logger.info('merging result: %s', actions)

    return actions, podcast
예제 #5
0
파일: tests.py 프로젝트: zoenglinghou/mygpo
    def test_merge(self):

        p1 = Podcast.objects.get_or_create_for_url(
            "http://example.com/podcast1.rss"
        ).object
        p2 = Podcast.objects.get_or_create_for_url(
            "http://example.com/podcast2.rss"
        ).object

        e1 = Episode.objects.get_or_create_for_url(
            p1, "http://example.com/podcast1/e1.mp3"
        ).object
        e1.title = "Episode 1"
        e1.save()

        e2 = Episode.objects.get_or_create_for_url(
            p2, "http://example.com/podcast1/e2.mp3"
        ).object
        e2.title = "Episode 2"
        e2.save()

        e3 = Episode.objects.get_or_create_for_url(
            p2, "http://example.com/podcast2/e2.mp3"
        ).object
        e3.title = "Episode 3"
        e3.save()

        e4 = Episode.objects.get_or_create_for_url(
            p2, "http://example.com/podcast2/e3.mp3"
        ).object
        e4.title = "Episode 4"
        e4.save()

        User = get_user_model()
        user = User()
        user.username = "******"
        user.email = "*****@*****.**"
        user.set_password("secret")
        user.save()

        device1 = Client.objects.create(user=user, uid="dev1", id=uuid.uuid1())
        device2 = Client.objects.create(user=user, uid="dev2", id=uuid.uuid1())

        subscribe(p1.pk, user.pk, device1.uid)
        unsubscribe(p1.pk, user.pk, device1.uid)
        subscribe(p1.pk, user.pk, device1.uid)
        subscribe(p2.pk, user.pk, device2.uid)

        action1 = EpisodeHistoryEntry.create_entry(user, e1, EpisodeHistoryEntry.PLAY)
        action3 = EpisodeHistoryEntry.create_entry(user, e3, EpisodeHistoryEntry.PLAY)

        # we need that for later
        e3_id = e3.pk

        actions = Counter()

        # decide which episodes to merge
        groups = [(0, [e1.id]), (1, [e2.id, e3.id]), (2, [e4.id])]

        # carry out the merge
        pm = PodcastMerger([p1, p2], actions, groups)
        pm.merge()

        e1 = Episode.objects.get(pk=e1.pk)
        history1 = EpisodeHistoryEntry.objects.filter(episode=e1, user=user)
        self.assertEqual(len(history1), 1)

        # check if merged episode's id can still be accessed
        e3 = Episode.objects.filter(podcast=p1).get_by_any_id(e3_id)
        history3 = EpisodeHistoryEntry.objects.filter(episode=e3, user=user)
        self.assertEqual(len(history3), 1)

        p1 = Podcast.objects.get(pk=p1.get_id())
        subscribed_clients = Client.objects.filter(subscription__podcast=p1)
        self.assertEqual(len(subscribed_clients), 2)

        episodes = p1.episode_set.all()
        self.assertEqual(len(episodes), 3)
예제 #6
0
파일: tests.py 프로젝트: tonytamsf/mygpo
 def test_merge_podcasts(self):
     # decide which episodes to merge
     groups = [(0, [self.episode1.id, self.episode2.id])]
     counter = Counter()
     pm = PodcastMerger([self.podcast1, self.podcast2], counter, groups)
     pm.merge()