def test_credittransfer_model(app): monty = models.User(email='*****@*****.**', first_name='Monty', last_name='Python', balance=10000) brian = models.User(email='*****@*****.**', first_name='Brian', last_name='Smith', balance=0) models.db.session.add(monty) models.db.session.add(brian) models.db.session.commit() transfer = models.CreditTransfer.create( payer=monty, payee=brian, created_by=monty, value=1000, message="Always look on the bright side of life!") assert monty.balance == 9000 assert brian.balance == 1000 assert transfer.payer_transaction.user == monty assert transfer.payee_transaction.user == brian transfer.void() assert monty.balance == 10000 assert brian.balance == 0 assert transfer.payer_transaction.voided assert transfer.payee_transaction.voided
def test_user_model(app): user = models.User( email='*****@*****.**', first_name='Monty', last_name='Python', phone='074-345 32 10', ) models.db.session.add(user) models.db.session.commit() assert user.id > 0 # Valid phone numbers are automatically normalized. assert user.phone == '+46743453210' # Invalid phone numbers are allowed as well (but not normalized). invalid_example_number = '+4674-876 543 226 189 416 854 65' user.phone = invalid_example_number models.db.session.commit() assert user.phone == invalid_example_number # Phone number is not required. user.phone = '' models.db.session.commit() assert user.phone == ''
def test_transaction_model(app): user = models.User(email='*****@*****.**', first_name='Monty', last_name='Python', balance=0) models.db.session.add(user) models.db.session.commit() transaction = models.Transaction(text='1 alcohol', value=-1000, user_id=user.id, created_by_id=user.id) models.db.session.add(transaction) models.db.session.commit() assert transaction.id > 0 assert transaction.user == user assert transaction.created_by == user transaction.void_and_refund() assert transaction.voided assert user.balance == 1000
def test_index_page(app, client): import json monty = models.User( email='*****@*****.**', first_name='Monty', last_name='Python', phone='0700011223', balance=10000, ) rick = models.User( email='*****@*****.**', first_name='Rick', nickname='Roll', last_name='Astley', phone='0703322110', ) streque = models.Streque(value=400) models.db.session.add_all([monty, rick, streque]) models.db.session.commit() rv = client.get('/') assert b'Monty' in rv.data assert b'Roll' in rv.data rv = client.post('/strequa', data=json.dumps(dict(user_id=monty.id, amount=4)), content_type='application/json') data = json.loads(rv.data) assert data['user_id'] == monty.id assert data['amount'] == 4 assert data['balance'] == 8400 assert monty.balance == 8400 rv = client.post('/strequa', data=json.dumps(dict(user_id=rick.id, amount=1)), content_type='application/json') data = json.loads(rv.data) assert data['user_id'] == rick.id assert data['amount'] == 1 assert data['balance'] == -400 assert rick.balance == -400
def test_user_model(app): user = models.User( email='*****@*****.**', first_name='Monty', last_name='Python', phone='0700011223', ) models.db.session.add(user) models.db.session.commit() assert user.id > 0
def test_void(app): streque = models.Streque(value=400) user = models.User(email='*****@*****.**', balance=10000) models.db.session.add_all([streque, user]) models.db.session.commit() transaction = user.strequa(4) assert user.balance == 8400 transaction.void_and_refund() assert user.balance == 10000 assert len(models.Transaction.query.all()) == 0
def test_profilepicture_model(app): brian = models.User(email='*****@*****.**', first_name='Brian', last_name='Smith', balance=0) models.db.session.add(brian) models.db.session.commit() pic = models.ProfilePicture(filename='brian.gif', user_id=brian.id) models.db.session.add(pic) models.db.session.commit() assert pic.id > 0 assert pic.user == brian
def createadmin_command(): from flasquelistan import models print("Creating a new admin user...") first_name = click.prompt("First name") last_name = click.prompt("Last name") email = click.prompt("Email address") password = click.prompt("Password", hide_input=True) user = models.User( first_name=first_name, last_name=last_name, email=email, password=password, is_admin=True, active=True, ) models.db.session.add(user) models.db.session.commit()
def logged_in(client): """Fixture for a signed in user""" user = models.User( email='*****@*****.**', first_name='Monty', last_name='Python', ) models.db.session.add(user) models.db.session.commit() user.password = '******' models.db.session.commit() with client: rv = login(client, '*****@*****.**', 'solidsnake') assert rv.status_code == 302 yield user
def test_strequa(app): import datetime streque = models.Streque(value=400) user = models.User(email='*****@*****.**', balance=10000) models.db.session.add(streque) models.db.session.add(user) models.db.session.commit() time_before = datetime.datetime.utcnow() transaction = user.strequa(3) time_after = datetime.datetime.utcnow() assert transaction.amount == 3 assert transaction.value == 400 assert transaction.user == user assert time_after > transaction.timestamp > time_before assert user.balance == 8800 assert user.transactions[0] == transaction
def add_user(request_id=None): request = (models.RegistrationRequest.query.get_or_404(request_id) if request_id else None) form = forms.AddUserForm(obj=request, group_id=-1) form.group_id.choices = [(g.id, g.name) for g in models.Group.query] form.group_id.choices.insert(0, (-1, 'Ingen')) if form.validate_on_submit(): user = models.User( first_name=form.first_name.data, last_name=form.last_name.data, nickname=form.nickname.data, email=form.email.data, phone=form.phone.data, active=form.active.data, group_id=form.group_id.data if form.group_id.data != -1 else None, ) models.db.session.add(user) models.db.session.commit() if request: models.db.session.delete(request) models.db.session.commit() flask.flash("{} skapad och förfrågan borttagen!".format(user), 'success') return flask.redirect(flask.url_for('strequeadmin.requests')) else: flask.flash("{} skapad!".format(user), 'success') # Redirect to clear form return flask.redirect(flask.url_for('strequeadmin.add_user')) elif form.is_submitted(): forms.flash_errors(form) return flask.render_template('admin/add_user.html', form=form, is_request=bool(request_id))
def populate_testdb(): from flasquelistan import models monty = models.User( email='*****@*****.**', first_name='Monty', last_name='Python', phone='+468-46500400', balance=10000, active=True, ) rick = models.User( email='*****@*****.**', first_name='Rick', nickname='The Roll', last_name='Astley', phone='0710001122', # Invalid phone number balance=20050, active=True, ) barack = models.User( email='*****@*****.**', first_name='Barack', last_name='Obama', nickname='Barry', phone='+1 (808) 555-2643', balance=100000, active=True, ) kor = models.User( email='*****@*****.**', first_name='Kor', last_name='Ist', nickname="Party-'pranen", phone='074 876 54 32', balance=-1000, active=True, ) malvina = models.User( email='*****@*****.**', first_name='Malvina', last_name='Teknolog', nickname='Osqulda', phone='', balance=-10000, active=True, ) soprano = models.Group(name='Sopran', weight='40') alto = models.Group(name='Alt', weight='30') tenor = models.Group(name='Tenor', weight='20') bass = models.Group(name='Bas', weight='10') beer = models.Article(name='Öl', value=1600, weight=50, standardglas=1) cider = models.Article(name='Cider', value=1500, weight=40, standardglas=1) wine = models.Article(name='Vin', value=1400, weight=30, standardglas=1) shot = models.Article(name='4 cl', value=1300, weight=20, standardglas=1) soft = models.Article(name='Alkfritt', value=1200, weight=10, standardglas=0) quote1 = models.Quote( text="Kom igen, testa citaten, det blir kul!", who="Någon, om Strequelistan", ) quote2 = models.Quote(text="Ett citat utan upphovsman, spännade!") quote3 = models.Quote( text=("Explicabo possimus dolorem voluptate. " "Aut perferendis mollitia dolor nulla. " "Perferendis at consequuntur ea aliquam " "aut inventore quis neque."), who="Godtycklig medietekniker", ) quote4 = models.Quote(text="much quote, such fun", who="shibe") models.db.session.add_all([ monty, rick, barack, kor, malvina, soprano, alto, tenor, bass, beer, cider, wine, shot, soft, quote1, quote2, quote3, quote4 ]) models.db.session.commit() kor.group = soprano malvina.group = alto monty.group = tenor rick.group = bass barack.group = bass models.db.session.commit()