def test_get_products_after_badge_was_already_awarded(self):
        """
        Testing dashboard after badge has been awarded
        """
        #setup
        user_one = self._create_user('username_one')
        badge = self._create_badge(user_one['username'], 'Test Badge')
        badges = get_badges_by_user(username2uri(user_one['username']))

        user_two = self._create_user('username_two')
        submitted_project = self._create_project(badge['uri'], user_two['username'])

        award_badge(badge_uri=badge['uri'],
                    user_uri=username2uri(user_one['username']),
                    expert_uri=username2uri(user_one['username']),
                    evidence_url='http://evidence.test')

        submit_feedback(
            '/uri/project/%s' % submitted_project.id,
            user_one['uri'],
            'Good',
            'Bad',
            'Ugly',
            award_badge=True,
        )
        #run
        projects = list_projects_ready_for_feedback(badges)

        #verify
        self.assertEquals(len(projects), 0)
    def test_user_has_no_badges(self):
        """
        Testing when user has no Badges
        """

        #setup
        user_one = self._create_user('username_one')
        badges = get_badges_by_user(username2uri(user_one['username']))

        #run
        projects = list_projects_ready_for_feedback(badges)

        #verify
        self.assertEquals(projects, [])
        self.assertEquals(len(badges), 0)
    def test_user_has_badges_but_no_projects_that_need_feedback(self):
        """
        Testing when user has Badges, but has not had Project submitted for their Badge
        """

        #setup
        user_one = self._create_user('username_one')
        badge = self._create_badge(user_one['username'], 'Test badge')
        badges = get_badges_by_user(username2uri(user_one['username']))

        #run
        projects = list_projects_ready_for_feedback(badges)

        #verify
        self.assertEquals(len(badges), 1)
        self.assertEquals(badges[0]['title'], badge['title'])
        self.assertEquals(projects, [])
    def test_user_has_multiple_badges_none_project(self):
        """
        Testing when user gets submitted Project for their Badge
        """

        #setup
        user_one = self._create_user('username_one')
        self._create_badge(user_one['username'], 'Test Badge 1')
        self._create_badge(user_one['username'], 'Test Badge 2')
        badges = get_badges_by_user(username2uri(user_one['username']))

        #run
        projects = list_projects_ready_for_feedback(badges)

        #verify
        self.assertEquals(len(projects), 0)
        self.assertEquals(len(badges), 2)
    def test_get_products_that_need_feedback_from_user(self):
        """
        Testing when user gets submitted Project for their Badge
        """

        #setup
        user_one = self._create_user('username_one')
        badge = self._create_badge(user_one['username'], 'Test Badge')
        badges = get_badges_by_user(username2uri(user_one['username']))

        user_two = self._create_user('username_two')
        submitted_project = self._create_project(badge['uri'], user_two['username'])

        #run
        #with patch('media.processors.get_image', new=lambda x: {}):
        projects = list_projects_ready_for_feedback(badges)

        #verify
        self.assertEquals(len(projects), 1)
        #self.assertEquals(projects[0]['badge']['title'], badge['title'])
        self.assertEquals(projects[0]['title'], submitted_project.title)