예제 #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_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)
예제 #3
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')
예제 #4
0
    def raises_a_BadRequest_error_when_instance_refers_to_a_nonexistant_project(
            self):
        from framework.orm_holder import OrmHolder
        orm = OrmHolder().orm
        user = Mock()
        instance = Mock()
        instance.project = None
        instance.project_id = 55

        access_rules = NonProjectAdminReadOnly()

        try:
            access_rules.can_create(user, instance, orm)
            ok_(False)
        except BadRequest:
            pass
예제 #5
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()])
예제 #6
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)
예제 #7
0
 def orm(self):
     """An active orm session for the controller."""
     return OrmHolder().orm
예제 #8
0
 def __enter__(self):
     log.debug("*** Loading the ORM")
     self.orm = OrmHolder().orm
     log.debug('***** loaded as %r' % self.orm)
     return self.orm
예제 #9
0
    responded_user_id = Column(Integer)  # Should be foreign key
    is_active = Column(SmallInteger, nullable=False, default=1)
    created_datetime = Column(DateTime, nullable=False, default=datetime(1, 1, 1, 0, 0, 0))
    updated_datetime = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now)


class Location (Base):
    __tablename__ = 'location'

    id = Column('location_id', Integer, primary_key=True)
    name =  Column(String(50), nullable=False)
    lat =  Column(Float)
    lon =  Column(Float)
    borough =  Column(String(50))
    address =  Column(String(100))
    city =  Column(String(50))
    state =  Column(String(2))


if __name__ == '__main__':
    import sys
    import os
    sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

    from framework.orm_holder import OrmHolder

    oh = OrmHolder()
    config = oh.get_db_config()
    engine = oh.get_db_engine(config)
    Base.metadata.create_all(engine)