예제 #1
0
    def should_allow_admin_to_update_an_event_when_given_valid_input(self):
        from framework.orm_holder import OrmHolder
        from giveaminute.models import Event
        orm = OrmHolder().orm
        num_events = len(orm.query(Event).all())

        # Login as an admin user
        self.login(1)

        response = self.app.post('/rest/v1/events/1/',
                                 params={
                                     '_method': 'PUT',
                                     'start_datetime': '2011-08-12 12:00:00',
                                     'address':
                                     '85 2nd St., San Francisco CA 94105',
                                     'project_id': 1,
                                     'start_datetime': '2011-6-07 12:30',
                                     'need_ids': '1,3'
                                 },
                                 status=200)

        response_dict = json.loads(response.body)
        print response

        assert_equal(num_events, len(orm.query(Event).all()))
        assert_equal(response_dict['name'], 'Gallery Opening')
        assert_equal(response_dict['start_datetime'], '2011-06-07 12:30:00')
        assert_equal(
            set([int(need_dict['id'])
                 for need_dict in response_dict['needs']]), set([1, 3]))
예제 #2
0
    def should_allow_admin_to_update_an_event_when_given_valid_input(self):
        from framework.orm_holder import OrmHolder
        from giveaminute.models import Event
        orm = OrmHolder().orm
        num_events = len(orm.query(Event).all())

        # Login as an admin user
        self.login(1)

        response = self.app.post('/rest/v1/events/1/',
            params={
                '_method': 'PUT',
                'start_datetime': '2011-08-12 12:00:00',
                'address': '85 2nd St., San Francisco CA 94105',
                'project_id': 1,
                'start_datetime': '2011-6-07 12:30',
                'need_ids':'1,3'
            }, status=200)

        response_dict = json.loads(response.body)
        print response

        assert_equal(num_events, len(orm.query(Event).all()))
        assert_equal(response_dict['name'], 'Gallery Opening')
        assert_equal(response_dict['start_datetime'], '2011-06-07 12:30:00')
        assert_equal(set([int(need_dict['id']) for need_dict in response_dict['needs']]), set([1,3]))
예제 #3
0
    def test_does_not_contain_non_admin_users(self):
        orm = OrmHolder().orm
        project = orm.query(Project).get(1)
        user = orm.query(User).get(3)

        admins = project.admins

        assert_not_in(user, admins)
예제 #4
0
    def should_return_true_if_user_is_member(self):
        from framework.orm_holder import OrmHolder
        from giveaminute.models import Project, User

        orm = OrmHolder().orm
        user = orm.query(User).get(1)
        project = orm.query(Project).get(1)
        rules = NonProjectMemberReadOnly()

        assert rules.is_member(user, project)
예제 #5
0
    def should_return_true_if_user_is_member(self):
        from framework.orm_holder import OrmHolder
        from giveaminute.models import Project, User

        orm = OrmHolder().orm
        user = orm.query(User).get(1)
        project = orm.query(Project).get(1)
        rules = NonProjectMemberReadOnly()

        assert rules.is_member(user, project)
예제 #6
0
    def test_join_returns_false_when_user_is_already_a_member(self):
        orm = OrmHolder().orm
        user = orm.query(User).get(2)
        project = orm.query(Project).get(1)

        assert user in project.members

        joined = user.join(project)
        orm.commit()

        assert not joined
예제 #7
0
    def test_leave_removes_a_member_from_the_project_and_returns_true(self):
        orm = OrmHolder().orm
        user = orm.query(User).get(2)
        project = orm.query(Project).get(1)

        assert user in project.members

        left = user.leave(project)
        orm.commit()

        assert user not in project.members
        assert left
예제 #8
0
    def test_join_creates_a_member_in_the_project_and_returns_true(self):
        orm = OrmHolder().orm
        user = orm.query(User).get(3)
        project = orm.query(Project).get(1)

        assert user not in project.members

        joined = user.join(project)
        orm.commit()

        assert user in project.members
        assert joined
예제 #9
0
    def test_removes_user_from_all_needs_on_a_project(self):
        orm = OrmHolder().orm
        user = orm.query(User).get(2)
        project = orm.query(Project).get(1)

        # Note: the following chain method is simply flattening the lists of
        #       volunteers
        assert user in set(chain(*[need.volunteers for need in project.needs]))

        joined = user.unvolunteer_from_all_for(project)
        orm.commit()

        assert user not in set(chain(*[need.volunteers for need in project.needs]))
예제 #10
0
    def should_not_delete_the_event_if_not_logged_in(self):
        from framework.orm_holder import OrmHolder
        from giveaminute.models import Event
        orm = OrmHolder().orm
        num_events = len(orm.query(Event).all())

        response = self.app.post('/rest/v1/events/1/',
            params={
                '_method': 'DELETE',
            }, status=403)

        print response

        assert_equal(num_events, len(orm.query(Event).all()))
        assert_in(1, [event.id for event in orm.query(Event).all()])
예제 #11
0
    def test_returns_None_if_user_has_no_avatar_set(self):
        orm = OrmHolder().orm
        user = orm.query(User).get(2)

        path = user.avatar_path

        assert_is_none(path)
예제 #12
0
    def test_returns_the_supposed_path_to_the_users_avatar_image_on_the_media_root(self):
        orm = OrmHolder().orm
        user = orm.query(User).get(3)

        path = user.avatar_path

        assert_equal(path, 'images/1/1.png')
예제 #13
0
    def should_not_delete_the_event_if_not_logged_in(self):
        from framework.orm_holder import OrmHolder
        from giveaminute.models import Event
        orm = OrmHolder().orm
        num_events = len(orm.query(Event).all())

        response = self.app.post('/rest/v1/events/1/',
                                 params={
                                     '_method': 'DELETE',
                                 },
                                 status=403)

        print response

        assert_equal(num_events, len(orm.query(Event).all()))
        assert_in(1, [event.id for event in orm.query(Event).all()])
예제 #14
0
    def should_be_able_to_delete_need_with_volunteers (self):
        orm = OrmHolder().orm
        need = orm.query(Need).get(1)
        assert len(need.volunteers) > 0

        try:
            orm.delete(need)

        except AssertionError, e:
            # If the orm has a problem deleting the need, it will raise an
            # AssertionError
            ok_(False, 'AssertionError raised: %r' % (e,))
예제 #15
0
    def should_not_allow_anonymous_user_to_create_needs(self):
        # Check out http://webpy.org/cookbook/testing_with_paste_and_nose for
        # more about testing with Paste.
        from giveaminute.models import Need
        from framework.orm_holder import OrmHolder

        orm = OrmHolder().orm
        orig_needs = len(orm.query(Need).all())

        response = self.app.post('/rest/v1/needs/',
            params={
                'type': 'volunteer',
                'request': 'basketball players',
                'quantity': '5',
                'description': 'Play on my basketball team',
                'project_id': 1,
            },
            status=403)

        final_needs = len(orm.query(Need).all())
        assert_equal(orig_needs, final_needs)
예제 #16
0
    def test_will_remove_user_from_volunteering_on_needs_as_well(self):
        import giveaminute.project

        orm = OrmHolder().orm
        user = orm.query(User).get(2)
        need = orm.query(Need).get(1)

        assert user in need.volunteers

        giveaminute.project.removeUserFromProject(self.db, 1, 2)
        orm.commit()

        assert_not_in(user, need.volunteers)
예제 #17
0
    def should_not_allow_anonymous_user_to_create_needs(self):
        # Check out http://webpy.org/cookbook/testing_with_paste_and_nose for
        # more about testing with Paste.
        from giveaminute.models import Need
        from framework.orm_holder import OrmHolder

        orm = OrmHolder().orm
        orig_needs = len(orm.query(Need).all())

        response = self.app.post('/rest/v1/needs/',
                                 params={
                                     'type': 'volunteer',
                                     'request': 'basketball players',
                                     'quantity': '5',
                                     'description':
                                     'Play on my basketball team',
                                     'project_id': 1,
                                 },
                                 status=403)

        final_needs = len(orm.query(Need).all())
        assert_equal(orig_needs, final_needs)
예제 #18
0
    def should_not_change_the_event_if_not_logged_in(self):
        from framework.orm_holder import OrmHolder
        from giveaminute.models import Event
        orm = OrmHolder().orm

        response = self.app.post('/rest/v1/events/1/',
            params={
                '_method': 'PUT',
                'name': 'Changed name'
            }, status=403)

        print response

        assert_equal(orm.query(Event).get(1).name, 'Gallery Opening')
예제 #19
0
    def should_not_change_the_event_if_not_logged_in(self):
        from framework.orm_holder import OrmHolder
        from giveaminute.models import Event
        orm = OrmHolder().orm

        response = self.app.post('/rest/v1/events/1/',
                                 params={
                                     '_method': 'PUT',
                                     'name': 'Changed name'
                                 },
                                 status=403)

        print response

        assert_equal(orm.query(Event).get(1).name, 'Gallery Opening')