def test_view_list_default_view_current_conf_exists(self):
     '''
     /scheduler/view_list/ should return all events in the current
     conference, assuming a current conference exists
     '''
     other_conf = ConferenceFactory(status='completed')
     show = ShowFactory(e_conference=self.conf)
     generic_event = GenericEventFactory(e_conference=self.conf)
     accepted_class = ClassFactory(accepted=3,
                                   e_conference=self.conf,
                                   b_conference=self.conf)
     previous_class = ClassFactory(accepted=3,
                                   e_conference=other_conf,
                                   b_conference=other_conf)
     rejected_class = ClassFactory(accepted=1,
                                   e_conference=self.conf,
                                   b_conference=self.conf)
     url = reverse("event_list", urlconf="gbe.scheduling.urls")
     login_as(ProfileFactory(), self)
     response = self.client.get(url)
     self.assertContains(response, generic_event.e_title)
     self.assertContains(response, show.e_title)
     self.assertContains(response, accepted_class.e_title)
     self.assertNotContains(response, rejected_class.e_title)
     self.assertNotContains(response, previous_class.e_title)
Exemplo n.º 2
0
    def test_get_tickets_for_class(self):
        '''get one ticket for everything but master, and one for classes
        '''
        event = ClassFactory()
        ws_bpt_event = BrownPaperEventsFactory(
            conference=event.e_conference,
            include_most=True,
            title="The Whole Shebang 2016")
        sch_bpt_event = BrownPaperEventsFactory(
            conference=event.e_conference,
            include_conference=True,
            title="The Scholar 2016")
        whole_shebang = TicketItemFactory(
            bpt_event=ws_bpt_event,
            live=True,
            has_coupon=False)
        scholar = TicketItemFactory(
            bpt_event=sch_bpt_event,
            live=True,
            has_coupon=False)
        tickets = event.get_tickets()

        self.assertEqual(len(tickets), 2)
        self.assertEqual(
            tickets[0],
            ws_bpt_event)
        self.assertEqual(
            tickets[1],
            sch_bpt_event)
Exemplo n.º 3
0
class TestClassChangestate(TestCase):
    '''Tests for act_changestate view'''
    view_name = 'class_changestate'

    def setUp(self):
        self.client = Client()
        self.klass = ClassFactory()
        self.privileged_user = ProfileFactory().user_object
        grant_privilege(self.privileged_user, 'Class Coordinator')
        self.data = {'accepted': '3'}

    def test_class_changestate_authorized_user(self):
        '''The proper coordinator is changing the state, it works'''
        url = reverse(self.view_name, args=[self.klass.pk], urlconf='gbe.urls')
        login_as(self.privileged_user, self)
        response = self.client.post(url, data=self.data)
        nt.assert_equal(response.status_code, 302)

    def test_class_accepted_displays_on_scheduler(self):
        '''check that bid acceptance sets e_title & e_description'''
        self.klass.e_title = ''
        self.klass.e_description = ''
        self.klass.save()
        url = reverse(self.view_name, args=[self.klass.pk], urlconf='gbe.urls')
        grant_privilege(self.privileged_user, 'Scheduling Mavens')
        login_as(self.privileged_user, self)
        response = self.client.post(url, data=self.data)
        sched_url = reverse('create_class_wizard',
                            urlconf='gbe.scheduling.urls',
                            args=[self.klass.b_conference.conference_slug])
        response = self.client.post(sched_url)
        print response
        assert self.klass.b_title in response.content

    def test_class_changestate_unauthorized_user(self):
        '''A regular user is changing the state, it fails'''
        url = reverse(self.view_name, args=[self.klass.pk], urlconf='gbe.urls')
        login_as(ProfileFactory(), self)
        response = self.client.post(url, data=self.data)
        nt.assert_equal(response.status_code, 403)

    def test_class_changestate_clear_schedule(self):
        '''The proper coordinator is changing the state, it works'''
        context = ClassContext()
        url = reverse(self.view_name,
                      args=[context.bid.pk],
                      urlconf='gbe.urls')
        login_as(self.privileged_user, self)
        response = self.client.post(url, data={'accepted': '1'})
        assert not context.bid.scheduler_events.exists()

    def test_class_changestate_bad_data(self):
        '''The proper coordinator is changing the state, it works'''
        url = reverse(self.view_name, args=[self.klass.pk], urlconf='gbe.urls')
        login_as(self.privileged_user, self)
        response = self.client.post(url, data={'accepted': '-1'})
        assert response.status_code == 200
        assert 'Bid Information' in response.content
Exemplo n.º 4
0
 def setUp(self):
     self.client = Client()
     self.performer = PersonaFactory()
     self.privileged_profile = ProfileFactory()
     self.privileged_user = self.privileged_profile.user_object
     grant_privilege(self.privileged_user, 'Class Reviewers')
     self.conference = current_conference()
     ClassFactory.create_batch(4,
                               b_conference=self.conference,
                               e_conference=self.conference,
                               submitted=True)
 def test_auth_user_load_panel(self):
     panel = ClassFactory(b_conference=self.current_conference,
                          e_conference=self.current_conference,
                          type="Panel",
                          accepted=3,
                          teacher=self.teacher,
                          submitted=True)
     login_as(self.privileged_user, self)
     data = self.get_data()
     data['accepted_class'] = panel.pk
     response = self.client.post(
         self.url,
         data=data,
         follow=True)
     self.assertContains(
         response,
         'value="%s"' %
         panel.b_title)
     self.assertContains(response, "Panelist")
     self.assertContains(response, "Moderator")
     self.assertContains(
         response,
         '<option value="%d" selected>%s</option>' % (
             panel.teacher.pk,
             str(panel.teacher)),
         html=True)
    def test_view_list_only_classes(self):
        '''
        /scheduler/view_list/ should return all events in the current
        conference, assuming a current conference exists
        '''
        show = ShowFactory(e_conference=self.conf)
        generic_event = GenericEventFactory(e_conference=self.conf)
        accepted_class = ClassFactory(accepted=3,
                                      e_conference=self.conf,
                                      b_conference=self.conf)
        url = reverse("event_list",
                      urlconf="gbe.scheduling.urls",
                      args=['Class'])
        login_as(ProfileFactory(), self)
        response = self.client.get(url)
        self.assertNotContains(response, show.e_title)
        self.assertNotContains(response, generic_event.e_title)
        self.assertContains(response, accepted_class.e_title)

        url = reverse("event_list",
                      urlconf="gbe.scheduling.urls",
                      args=['class'])
        response = self.client.get(url)
        self.assertNotContains(response, show.e_title)
        self.assertNotContains(response, generic_event.e_title)
        self.assertContains(response, accepted_class.e_title)
Exemplo n.º 7
0
 def post_class_edit_draft(self):
     klass = ClassFactory()
     url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')
     login_as(klass.teacher.performer_profile, self)
     data = self.get_form(submit=False)
     response = self.client.post(url, data=data, follow=True)
     return response, data
Exemplo n.º 8
0
    def clone_class(self):
        bid = ClassFactory(b_conference=self.old_conference,
                           e_conference=self.old_conference)
        bid.b_title = "Factory is broken"
        bid.save()
        count = Class.objects.filter(
            b_title=bid.b_title,
            b_conference=self.current_conference).count()
        url = reverse(self.view_name,
                      urlconf="gbe.urls",
                      kwargs={'bid_type': 'Class',
                              'bid_id': bid.id})
        login_as(bid.teacher.contact, self)

        response = self.client.get(url)
        return response, count, bid
    def __init__(self,
                 bid=None,
                 teacher=None,
                 conference=None,
                 room=None,
                 starttime=None):
        self.teacher = teacher or PersonaFactory()
        self.conference = conference or ConferenceFactory()
        if not self.conference.conferenceday_set.exists():
            day = ConferenceDayFactory(conference=self.conference)
            if starttime:
                day.day = starttime.date()
                day.save()

        self.days = self.conference.conferenceday_set.all()
        self.starttime = starttime or noon(self.days[0])
        self.bid = bid or ClassFactory(b_conference=self.conference,
                                       e_conference=self.conference,
                                       accepted=3,
                                       teacher=self.teacher,
                                       submitted=True)
        self.room = room or RoomFactory()
        self.room.conferences.add(self.conference)
        self.sched_event = None
        self.sched_event = self.schedule_instance(room=self.room,
                                                  starttime=starttime)
 def test_authorized_user_single_conference(self):
     other_class = ClassFactory(accepted=3,
                                submitted=True)
     login_as(self.privileged_user, self)
     response = self.client.get(self.url)
     self.assertNotContains(response, str(other_class.b_title))
     self.assertNotContains(response, str(other_class.teacher))
 def test_view_list_given_slug(self):
     other_conf = ConferenceFactory()
     this_class = ClassFactory.create(accepted=3,
                                      e_conference=self.conf,
                                      b_conference=self.conf)
     that_class = ClassFactory.create(accepted=3,
                                      e_conference=other_conf,
                                      b_conference=other_conf)
     login_as(ProfileFactory(), self)
     url = reverse("event_list",
                   urlconf="gbe.scheduling.urls",
                   args=["Class"])
     response = self.client.get(
         url, data={"conference": self.conf.conference_slug})
     self.assertContains(response, this_class.e_title)
     self.assertNotContains(response, that_class.e_title)
Exemplo n.º 12
0
 def test_edit_bid_not_post(self):
     '''edit_bid, not post, should take us to edit process'''
     klass = ClassFactory()
     url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')
     login_as(klass.teacher.performer_profile, self)
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
     self.assertTrue('Submit a Class' in response.content)
Exemplo n.º 13
0
 def test_edit_bid_verify_avoided_constraints(self):
     klass = ClassFactory()
     url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')
     login_as(klass.teacher.performer_profile, self)
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
     self.assertTrue('I Would Prefer to Avoid' in response.content)
     self.assertTrue('Submit a Class' in response.content)
Exemplo n.º 14
0
 def test_edit_bid_verify_info_popup_text(self):
     klass = ClassFactory()
     url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')
     login_as(klass.teacher.performer_profile, self)
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
     self.assertTrue(
         'We will do our best to accommodate' in response.content)
Exemplo n.º 15
0
    def test_review_class_post_form_invalid(self):
        klass = ClassFactory()
        url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')

        login_as(self.privileged_user, self)
        response = self.client.post(url, data={'accepted': 1})
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, 'Bid Information')
Exemplo n.º 16
0
 def test_unsched_class(self):
     bid_class = ClassFactory()
     response = self.client.get(
         reverse(self.view_name,
                 urlconf="gbe.scheduling.urls",
                 args=[bid_class.eventitem_id]))
     self.assertEqual(200, response.status_code)
     self.assertEqual(1, response.content.count(bid_class.teacher.name))
Exemplo n.º 17
0
 def setUp(self):
     self.room = RoomFactory()
     self.teacher = PersonaFactory()
     self.current_conference = ConferenceFactory(accepting_bids=True)
     self.day = ConferenceDayFactory(conference=self.current_conference)
     self.test_class = ClassFactory(b_conference=self.current_conference,
                                    e_conference=self.current_conference,
                                    accepted=3,
                                    teacher=self.teacher,
                                    submitted=True)
     self.url = reverse(self.view_name,
                        args=[self.current_conference.conference_slug],
                        urlconf='gbe.scheduling.urls')
     self.factory = RequestFactory()
     self.client = Client()
     self.privileged_user = ProfileFactory().user_object
     grant_privilege(self.privileged_user, 'Scheduling Mavens')
Exemplo n.º 18
0
    def test_review_class_w_scheduling(self):
        grant_privilege(self.privileged_user, 'Scheduling Mavens')
        klass = ClassFactory()
        url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')

        login_as(self.privileged_user, self)
        response = self.client.get(url)
        self.assertContains(response, 'name="extra_button"')
 def test_view_panels(self):
     this_class = ClassFactory.create(accepted=3,
                                      e_conference=self.conf,
                                      b_conference=self.conf,
                                      type="Panel")
     that_class = ClassFactory.create(accepted=3,
                                      e_conference=self.conf,
                                      b_conference=self.conf)
     login_as(ProfileFactory(), self)
     url = reverse("event_list",
                   urlconf="gbe.scheduling.urls",
                   args=["Panel"])
     response = self.client.get(
         url, data={"conference": self.conf.conference_slug})
     self.assertContains(response, this_class.e_title)
     self.assertNotContains(response, that_class.e_title)
     self.assertContains(response, this_class.teacher.name)
Exemplo n.º 20
0
    def test_view_class(self):
        '''view_class view, success
        '''
        klass = ClassFactory()
        url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')

        login_as(klass.teacher.performer_profile, self)
        response = self.client.get(url)
        assert response.status_code == 200
Exemplo n.º 21
0
 def test_bad_user(self):
     klass = ClassFactory()
     reviewer = ProfileFactory()
     grant_privilege(reviewer, 'Class Reviewers')
     login_as(reviewer, self)
     url = reverse(self.view_name, args=[klass.pk], urlconf="gbe.urls")
     response = self.client.get(url)
     assert "Review Bids" in response.content
     assert response.status_code == 200
Exemplo n.º 22
0
 def test_class_edit_post_form_not_valid(self):
     '''class_edit, if form not valid, should return to ActEditForm'''
     klass = ClassFactory()
     url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')
     login_as(klass.teacher.performer_profile, self)
     data = self.get_form(invalid=True)
     response = self.client.post(url, data=data)
     self.assertEqual(response.status_code, 200)
     self.assertTrue('Submit a Class' in response.content)
Exemplo n.º 23
0
    def test_review_class_how_heard_is_present(self):
        klass = ClassFactory()
        klass.teacher.contact.how_heard = "[u'Facebook']"
        klass.teacher.contact.save()
        url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')

        login_as(self.privileged_user, self)
        response = self.client.get(url)
        self.assertContains(response, 'Facebook')
Exemplo n.º 24
0
 def test_classes_to_review(self):
     staff_profile = ProfileFactory(user_object__is_staff=True)
     grant_privilege(staff_profile, "Class Reviewers")
     login_as(staff_profile, self)
     klass = ClassFactory(submitted=True,
                          b_conference=self.current_conf,
                          e_conference=self.current_conf)
     url = reverse('home', urlconf='gbe.urls')
     response = self.client.get(url)
     nt.assert_true(klass.b_title in response.content)
Exemplo n.º 25
0
 def test_pick_no_post_action(self):
     second_class = ClassFactory(accepted=2)
     login_as(self.privileged_profile, self)
     data = {
         'email-select-conference': [self.context.conference.pk],
         'email-select-bid_type': self.priv_list,
         'email-select-state': [0, 1, 2, 3, 4, 5],
     }
     response = self.client.post(self.url, data=data, follow=True)
     assert_alert_exists(response, 'danger', 'Error', unknown_request)
Exemplo n.º 26
0
    def test_get_tickets_for_class_three_ways(self):
        '''the ticket is linked to the class event three ways - 'most',
        'conference', and a direct link.  It only should appear once.
        '''
        event = ClassFactory()
        ticketing_event = TicketingEventsFactory(
            conference=event.e_conference,
            include_most=True,
            include_conference=True,
            title="The Whole Shebang 2016")
        ticketing_event.linked_events.add(event)
        ticketing_event.save()
        TicketItemFactory(ticketing_event=ticketing_event,
                          live=True,
                          has_coupon=False)

        tickets = event.get_tickets()
        self.assertEqual(len(tickets), 1)
        self.assertEqual(tickets[0].title, "The Whole Shebang 2016")
Exemplo n.º 27
0
    def test_review_class_no_how_heard(self):
        klass = ClassFactory()
        klass.teacher.contact.how_heard = '[]'
        klass.teacher.contact.save()
        url = reverse(self.view_name, args=[klass.pk], urlconf='gbe.urls')

        login_as(self.privileged_user, self)
        response = self.client.get(url)
        self.assertNotContains(response, '[]')
        self.assertContains(response, "The Presenter")
Exemplo n.º 28
0
    def test_review_class_all_well(self):
        klass = ClassFactory()
        url = reverse(self.view_name,
                      args=[klass.pk],
                      urlconf='gbe.urls')

        login_as(self.privileged_user, self)
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        self.assertTrue('Bid Information' in response.content)
Exemplo n.º 29
0
 def test_review_class_inactive_user(self):
     ClassFactory(teacher__contact__user_object__is_active=False,
                  b_conference=self.conference,
                  e_conference=self.conference,
                  submitted=True)
     url = reverse(self.view_name, urlconf="gbe.urls")
     login_as(self.privileged_user, self)
     response = self.client.get(
         url, data={'conf_slug': self.conference.conference_slug})
     self.assertContains(response, 'gbe-table-row gbe-table-danger')
Exemplo n.º 30
0
    def test_get_tickets_nothing_active(self):
        '''the ticket is linked to the class and there are two active prices
        only the most expensive is shown
        '''
        event = ClassFactory()
        ticketing_event = TicketingEventsFactory(conference=event.e_conference,
                                                 include_conference=True)
        TicketItemFactory(ticketing_event=ticketing_event,
                          live=False,
                          has_coupon=False,
                          title="The Whole Shebang 2016")
        TicketItemFactory(ticketing_event=ticketing_event,
                          live=True,
                          has_coupon=True,
                          cost=299.99,
                          title="The Whole Shebang 2016 - expensive")

        tickets = event.get_tickets()

        self.assertEqual(len(tickets), 0)
Exemplo n.º 31
0
    def test_get_tickets_for_class_three_ways(self):
        '''the ticket is linked to the class event three ways - 'most',
        'conference', and a direct link.  It only should appear once.
        '''
        event = ClassFactory()
        bpt_event = BrownPaperEventsFactory(
            conference=event.e_conference,
            include_most=True,
            include_conference=True,
            title="The Whole Shebang 2016")
        bpt_event.linked_events.add(event)
        bpt_event.save()
        TicketItemFactory(bpt_event=bpt_event,
                          live=True,
                          has_coupon=False)

        tickets = event.get_tickets()
        self.assertEqual(len(tickets), 1)
        self.assertEqual(
            tickets[0].title,
            "The Whole Shebang 2016")
Exemplo n.º 32
0
    def test_get_tickets_nothing_active(self):
        '''the ticket is linked to the class and there are two active prices
        only the most expensive is shown
        '''
        event = ClassFactory()
        bpt_event = BrownPaperEventsFactory(
            conference=event.e_conference,
            include_conference=True)
        TicketItemFactory(bpt_event=bpt_event,
                          live=False,
                          has_coupon=False,
                          title="The Whole Shebang 2016")
        TicketItemFactory(bpt_event=bpt_event,
                          live=True,
                          has_coupon=True,
                          cost=299.99,
                          title="The Whole Shebang 2016 - expensive")

        tickets = event.get_tickets()

        self.assertEqual(len(tickets), 0)
Exemplo n.º 33
0
 def setUp(self):
     self.room = RoomFactory()
     self.teacher = PersonaFactory()
     self.current_conference = ConferenceFactory(accepting_bids=True)
     self.day = ConferenceDayFactory(conference=self.current_conference)
     self.test_class = ClassFactory(b_conference=self.current_conference,
                                    e_conference=self.current_conference,
                                    accepted=3,
                                    teacher=self.teacher,
                                    submitted=True)
     self.url = reverse(
         self.view_name,
         args=[self.current_conference.conference_slug],
         urlconf='gbe.scheduling.urls')
     self.factory = RequestFactory()
     self.client = Client()
     self.privileged_user = ProfileFactory().user_object
     grant_privilege(self.privileged_user, 'Scheduling Mavens')
Exemplo n.º 34
0
class TestClassWizard(TestCase):
    '''Tests for the 2nd and 3rd stage in the class wizard view'''
    view_name = 'create_class_wizard'

    def setUp(self):
        self.room = RoomFactory()
        self.teacher = PersonaFactory()
        self.current_conference = ConferenceFactory(accepting_bids=True)
        self.day = ConferenceDayFactory(conference=self.current_conference)
        self.test_class = ClassFactory(b_conference=self.current_conference,
                                       e_conference=self.current_conference,
                                       accepted=3,
                                       teacher=self.teacher,
                                       submitted=True)
        self.url = reverse(
            self.view_name,
            args=[self.current_conference.conference_slug],
            urlconf='gbe.scheduling.urls')
        self.factory = RequestFactory()
        self.client = Client()
        self.privileged_user = ProfileFactory().user_object
        grant_privilege(self.privileged_user, 'Scheduling Mavens')

    def get_data(self):
        data = {
            'accepted_class': self.test_class.pk,
            'pick_class': 'Next'
        }
        return data

    def edit_class(self):
        data = {
            'accepted': 3,
            'submitted': True,
            'eventitem_id': self.test_class.eventitem_id,
            'type': 'Panel',
            'e_title': "Test Class Wizard #%d" % self.test_class.eventitem_id,
            'e_description': 'Description',
            'maximum_enrollment': 10,
            'fee': 0,
            'max_volunteer': 0,
            'day': self.day.pk,
            'time': '11:00:00',
            'duration': 2.5,
            'location': self.room.pk,
            'alloc_0-role': 'Teacher',
            'alloc_0-worker': self.teacher.pk,
            'alloc_1-role': 'Volunteer',
            'alloc_1-worker': "",
            'set_class': 'Finish',
        }
        return data

    def test_create_event_unauthorized_user(self):
        login_as(ProfileFactory(), self)
        response = self.client.get(self.url)
        self.assertEqual(403, response.status_code)

    def test_authorized_user_can_access(self):
        login_as(self.privileged_user, self)
        response = self.client.get(self.url)
        self.assertEqual(response.status_code, 200)
        assert_event_was_picked_in_wizard(response, "conference")
        self.assertContains(response, str(self.test_class.b_title))
        self.assertContains(response, str(self.test_class.teacher))

    def test_authorized_user_single_conference(self):
        other_class = ClassFactory(accepted=3,
                                   submitted=True)
        login_as(self.privileged_user, self)
        response = self.client.get(self.url)
        self.assertNotContains(response, str(other_class.b_title))
        self.assertNotContains(response, str(other_class.teacher))

    def test_auth_user_can_pick_class(self):
        login_as(self.privileged_user, self)
        data = self.get_data()
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        self.assertContains(
            response,
            '<input checked="checked" id="id_accepted_class_1" ' +
            'name="accepted_class" type="radio" value="%d" />' %
            self.test_class.pk)

    def test_invalid_form(self):
        login_as(self.privileged_user, self)
        data = self.get_data()
        data['accepted_class'] = "boo"
        response = self.client.post(
            self.url,
            data=data)
        self.assertContains(
            response,
            'That choice is not one of the available choices.')

    def test_auth_user_pick_new_class(self):
        login_as(self.privileged_user, self)
        data = self.get_data()
        data['accepted_class'] = ""
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        self.assertContains(
            response,
            '<input checked="checked" id="id_accepted_class_0" ' +
            'name="accepted_class" type="radio" value="" />')
        self.assertContains(
            response,
            'Make New Class')
        self.assertContains(
            response,
            'type="number" value="1"')
        self.assertContains(
            response,
            '<option value="%d">%s</option>' % (
                self.day.pk,
                self.day.day.strftime(DATE_FORMAT)
            ))
        self.assertContains(
            response,
            '<option value="%s" selected="selected">%s</option>' % (
                'Teacher',
                'Teacher'))

    def test_auth_user_load_class(self):
        login_as(self.privileged_user, self)
        data = self.get_data()
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        self.assertContains(
            response,
            'value="%s"' %
            self.test_class.b_title)
        self.assertContains(
            response,
            'type="number" value="1.0"')
        self.assertContains(
            response,
            '<option value="%d">%s</option>' % (
                self.day.pk,
                self.day.day.strftime(DATE_FORMAT)
            ))
        self.assertContains(
            response,
            '<option value="%d" selected="selected">%s</option>' % (
                self.test_class.teacher.pk,
                str(self.test_class.teacher)))

    def test_auth_user_load_panel(self):
        panel = ClassFactory(b_conference=self.current_conference,
                             e_conference=self.current_conference,
                             type="Panel",
                             accepted=3,
                             teacher=self.teacher,
                             submitted=True)
        login_as(self.privileged_user, self)
        data = self.get_data()
        data['accepted_class'] = panel.pk
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        self.assertContains(
            response,
            'value="%s"' %
            panel.b_title)
        self.assertContains(response, "Panelist")
        self.assertContains(response, "Moderator")
        self.assertContains(
            response,
            '<option value="%d" selected="selected">%s</option>' % (
                panel.teacher.pk,
                str(panel.teacher)))

    def test_auth_user_edit_class(self):
        login_as(self.privileged_user, self)
        data = self.edit_class()
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        occurrence = Event.objects.filter(eventitem=self.test_class)
        self.assertRedirects(
            response,
            "%s?%s-day=%d&filter=Filter&new=[%dL]" % (
                reverse('manage_event_list',
                        urlconf='gbe.scheduling.urls',
                        args=[self.current_conference.conference_slug]),
                self.current_conference.conference_slug,
                self.day.pk,
                occurrence[0].pk))
        assert_alert_exists(
            response,
            'success',
            'Success',
            'Occurrence has been updated.<br>%s, Start Time: %s 11:00 AM' % (
                data['e_title'],
                self.day.day.strftime(DATE_FORMAT))
            )
        self.assertContains(
            response,
            '<tr class="bid-table success">\n       ' +
            '<td class="bid-table">%s</td>' % data['e_title'])

    def test_auth_user_create_class(self):
        login_as(self.privileged_user, self)
        data = self.edit_class()
        data['eventitem_id'] = ""
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        new_class = Class.objects.get(e_title=data['e_title'])
        self.assertEqual(new_class.teacher, self.teacher)
        occurrence = Event.objects.get(
            eventitem__eventitem_id=new_class.eventitem_id)
        self.assertRedirects(
            response,
            "%s?%s-day=%d&filter=Filter&new=[%dL]" % (
                reverse('manage_event_list',
                        urlconf='gbe.scheduling.urls',
                        args=[self.current_conference.conference_slug]),
                self.current_conference.conference_slug,
                self.day.pk,
                occurrence.pk))
        assert_alert_exists(
            response,
            'success',
            'Success',
            'Occurrence has been updated.<br>%s, Start Time: %s 11:00 AM' % (
                data['e_title'],
                self.day.day.strftime(DATE_FORMAT))
            )
        self.assertContains(
            response,
            '<tr class="bid-table success">\n       ' +
            '<td class="bid-table">%s</td>' % data['e_title'])

    def test_auth_user_create_class_no_teacher(self):
        login_as(self.privileged_user, self)
        data = self.edit_class()
        data['eventitem_id'] = ""
        data['alloc_0-worker'] = ""
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        assert_alert_exists(
            response,
            'danger',
            'Error',
            "You must select at least one person to run this class."
            )

    def test_auth_user_bad_user_assign(self):
        login_as(self.privileged_user, self)
        data = self.edit_class()
        data['alloc_0-role'] = "bad role"
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        self.assertContains(
            response,
            "bad role is not one of the available choices.")

    def test_auth_user_bad_schedule_assign(self):
        login_as(self.privileged_user, self)
        data = self.edit_class()
        data['location'] = ""
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        self.assertContains(response, "This field is required.")

    def test_auth_user_bad_class_booking_assign(self):
        login_as(self.privileged_user, self)
        data = self.edit_class()
        data['type'] = "bad type"
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        self.assertContains(
            response,
            "bad type is not one of the available choices.")

    def test_get_class_recommendations(self):
        self.test_class.schedule_constraints = "[u'1']"
        self.test_class.avoided_constraints = "[u'2']"
        self.test_class.space_needs = "2"
        self.test_class.type = "Panel"
        self.test_class.save()
        login_as(self.privileged_user, self)
        data = self.get_data()
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        assert_good_sched_event_form_wizard(response, self.test_class)

    def test_get_empty_schedule_info(self):
        self.test_class.schedule_constraints = ""
        self.test_class.avoided_constraints = ""
        self.test_class.space_needs = ""
        self.test_class.type = ""
        self.test_class.save()
        login_as(self.privileged_user, self)
        data = self.get_data()
        response = self.client.post(
            self.url,
            data=data,
            follow=True)
        assert_good_sched_event_form_wizard(response, self.test_class)
Exemplo n.º 35
0
 def setUp(self):
     self.client = Client()
     self.klass = ClassFactory()
     self.privileged_user = ProfileFactory().user_object
     grant_privilege(self.privileged_user, 'Class Coordinator')
     self.data = {'accepted': '3'}
Exemplo n.º 36
0
class TestClassChangestate(TestCase):
    '''Tests for act_changestate view'''
    view_name = 'class_changestate'

    def setUp(self):
        self.client = Client()
        self.klass = ClassFactory()
        self.privileged_user = ProfileFactory().user_object
        grant_privilege(self.privileged_user, 'Class Coordinator')
        self.data = {'accepted': '3'}

    def test_class_changestate_authorized_user(self):
        '''The proper coordinator is changing the state, it works'''
        url = reverse(self.view_name,
                      args=[self.klass.pk],
                      urlconf='gbe.urls')
        login_as(self.privileged_user, self)
        response = self.client.post(url, data=self.data)
        nt.assert_equal(response.status_code, 302)

    def test_class_accepted_displays_on_scheduler(self):
        '''check that bid acceptance sets e_title & e_description'''
        self.klass.e_title = ''
        self.klass.e_description = ''
        self.klass.save()
        url = reverse(self.view_name,
                      args=[self.klass.pk],
                      urlconf='gbe.urls')
        grant_privilege(self.privileged_user, 'Scheduling Mavens')
        login_as(self.privileged_user, self)
        response = self.client.post(url, data=self.data)
        sched_url = reverse('create_class_wizard',
                            urlconf='gbe.scheduling.urls',
                            args=[self.klass.b_conference.conference_slug])
        response = self.client.post(sched_url)
        print response
        assert self.klass.b_title in response.content

    def test_class_changestate_unauthorized_user(self):
        '''A regular user is changing the state, it fails'''
        url = reverse(self.view_name,
                      args=[self.klass.pk],
                      urlconf='gbe.urls')
        login_as(ProfileFactory(), self)
        response = self.client.post(url, data=self.data)
        nt.assert_equal(response.status_code, 403)

    def test_class_changestate_clear_schedule(self):
        '''The proper coordinator is changing the state, it works'''
        context = ClassContext()
        url = reverse(self.view_name,
                      args=[context.bid.pk],
                      urlconf='gbe.urls')
        login_as(self.privileged_user, self)
        response = self.client.post(url, data={'accepted': '1'})
        assert not context.bid.scheduler_events.exists()

    def test_class_changestate_bad_data(self):
        '''The proper coordinator is changing the state, it works'''
        url = reverse(self.view_name,
                      args=[self.klass.pk],
                      urlconf='gbe.urls')
        login_as(self.privileged_user, self)
        response = self.client.post(url, data={'accepted': '-1'})
        assert response.status_code == 200
        assert 'Bid Information' in response.content