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]))
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]))
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)
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)
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)
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
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
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
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]))
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()])
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)
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')
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()])
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,))
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)
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)
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)
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')
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')