Mercurial > party-buddy-server
changeset 22:25cc6207b03e
Add tests for models
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 02 Jun 2013 13:05:50 +0200 |
| parents | 5a036517a96b |
| children | 31e8db90d569 |
| files | alembic/versions/delete.me server/api.py server/helpers.py server/models.py tests/__init__.py tests/fixtures.py tests/test_models.py |
| diffstat | 5 files changed, 78 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/server/api.py Sun Jun 02 12:08:22 2013 +0200 +++ b/server/api.py Sun Jun 02 13:05:50 2013 +0200 @@ -2,6 +2,7 @@ from flask.ext.classy import FlaskView from . import app +from . import models def register(*args, **kwargs): @@ -17,7 +18,9 @@ class UsersView(FlaskView): def index(self): return flask.jsonify({ - 'users': [], + 'users': [{ + 'email': user.email, + } for user in models.User.query.all()], }) def get(self, email):
--- a/server/helpers.py Sun Jun 02 12:08:22 2013 +0200 +++ b/server/helpers.py Sun Jun 02 13:05:50 2013 +0200 @@ -1,9 +1,9 @@ -from random import randint +# -*- coding: utf-8 -*- -chars = 'abcdefghijklmnoprstuwqxyzABCDEFGHIJKLMNOPRSTUWXYZ0123456789' +import random + +CHARS = 'abcdefghijklmnoprstuwqxyzABCDEFGHIJKLMNOPRSTUWXYZ0123456789' def gen_filename(chars=12): - ret = [] - for i in range(chars): - ret.append(chars[randint(0, len(chars)-1)]) - return ''.join(ret) + return ''.join(random.sample(CHARS, chars)) +
--- a/server/models.py Sun Jun 02 12:08:22 2013 +0200 +++ b/server/models.py Sun Jun 02 13:05:50 2013 +0200 @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + from sqlalchemy import ( Boolean, Column, @@ -70,7 +72,7 @@ self.locale = 'pl' def __repr__(self): - return '<User %r, %r>' % (self.email, self.admin) + return '<User %r>' % (self.email) def set_pass(self, password): self.password = sha256( @@ -102,16 +104,25 @@ number = Column(String(20), primary_key=True) owner_id = Column(Integer, ForeignKey('users.id')) owner = relationship("User", - backref=backref('numbers', order_by=id)) + backref=backref('numbers')) + + def __init__(self, number, owner): + super(PhoneNumber, self).__init__() + self.number = number + self.owner = owner class Mac(Boilerplate, db.Model): __tablename__ = 'macs' mac = Column(String(16), primary_key=True) - owner = ForeignKey(User) owner_id = Column(Integer, ForeignKey('users.id')) owner = relationship("User", - backref=backref('mac_numbers', order_by=id)) + backref=backref('mac_numbers')) + + def __init__(self, mac, owner): + super(Mac, self).__init__() + self.mac = mac + self.owner = owner class PanicContact(Boilerplate, db.Model): @@ -122,7 +133,7 @@ comment = Column(String()) owner_id = Column(Integer, ForeignKey('users.id')) owner = relationship("User", - backref=backref('panic_contacts', order_by=id)) + backref=backref('panic_contacts'))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/fixtures.py Sun Jun 02 13:05:50 2013 +0200 @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- + +import os + +import pytest + +os.environ['PARTYBUDDY_SETTINGS'] = 'configs/testing.py' + +from server import models +from server import db + + +@pytest.fixture +def database(): + db.create_all() + return db + +@pytest.fixture +def users(): + return create_users() + + +def create_users(): + users = [ + ('foo1@bar.baz', 'foobar', 'deadbeefcafe', '+48123456789'), + ('foo2@bar.baz', 'barfoo', 'beefcafedead', '+48987654321'), + ('foo3@bar.baz', 'bazfoo', 'cafebeefdead', '+48123454321'), + ] + for email, password, mac, phone in users: + user = models.User(email, password) + db.session.add(user) + db.session.add(models.Mac(mac, user)) + db.session.add(models.PhoneNumber(phone, user)) + db.session.commit() + return users
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_models.py Sun Jun 02 13:05:50 2013 +0200 @@ -0,0 +1,17 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +from .fixtures import database, users + +from server import models + + +class TestModels(object): + def test_users(self, database, users): + for email, password, mac, phone in users: + user = models.User.query.filter_by(email=email).one() + assert user.check_pass(password), user + assert [m.mac for m in user.mac_numbers] == [mac], user + assert [p.number for p in user.numbers] == [phone], user +
