add argument commit= to create()

This commit is contained in:
Son NK 2020-09-28 17:40:30 +02:00
parent bb6a5bf0b3
commit d6d686c4c3
5 changed files with 80 additions and 31 deletions

View File

@ -67,8 +67,14 @@ class ModelMixin(object):
@classmethod
def create(cls, **kw):
# whether should call db.session.commit
commit = kw.pop("commit", False)
r = cls(**kw)
db.session.add(r)
if commit:
db.session.commit()
return r
def save(self):
@ -882,6 +888,9 @@ class Alias(db.Model, ModelMixin):
@classmethod
def create(cls, **kw):
# whether should call db.session.commit
commit = kw.pop("commit", False)
r = cls(**kw)
email = kw["email"]
@ -896,6 +905,8 @@ class Alias(db.Model, ModelMixin):
raise AliasInTrashError
db.session.add(r)
if commit:
db.session.commit()
return r
@classmethod

View File

@ -7,9 +7,12 @@ from app.models import User, ApiKey, Alias, Contact, EmailLog, Mailbox
def test_get_aliases_error_without_pagination(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
# create api_key
api_key = ApiKey.create(user.id, "for test")
@ -25,9 +28,12 @@ def test_get_aliases_error_without_pagination(flask_client):
def test_get_aliases_with_pagination(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
# create api_key
api_key = ApiKey.create(user.id, "for test")

View File

@ -6,9 +6,12 @@ from app.models import User, ApiKey, AliasUsedOn, Alias
def test_different_scenarios(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
# create api_key
api_key = ApiKey.create(user.id, "for test")

View File

@ -5,13 +5,18 @@ from app.models import User, Alias, DeletedAlias
def test_delete_alias(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
alias = Alias.create(
user_id=user.id, email="first@d1.test", mailbox_id=user.default_mailbox_id
user_id=user.id,
email="first@d1.test",
mailbox_id=user.default_mailbox_id,
commit=True,
)
db.session.commit()
assert Alias.get_by(email="first@d1.test")
delete_alias(alias, user)
@ -22,13 +27,18 @@ def test_delete_alias(flask_client):
def test_delete_alias_already_in_trash(flask_client):
"""delete an alias that's already in alias trash"""
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
alias = Alias.create(
user_id=user.id, email="first@d1.test", mailbox_id=user.default_mailbox_id
user_id=user.id,
email="first@d1.test",
mailbox_id=user.default_mailbox_id,
commit=True,
)
db.session.commit()
# add the alias to global trash
db.session.add(DeletedAlias(email=alias.email))

View File

@ -28,9 +28,12 @@ def test_generate_email(flask_client):
def test_profile_picture_url(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
assert user.profile_picture_url() == "http://sl.test/static/default-avatar.png"
@ -43,10 +46,9 @@ def test_suggested_emails_for_user_who_cannot_create_new_alias(flask_client):
name="Test User",
activated=True,
trial_end=None,
commit=True,
)
db.session.commit()
# make sure user runs out of quota to create new email
for i in range(MAX_NB_EMAIL_FREE_PLAN):
Alias.create_new(user=user, prefix="test")
@ -64,9 +66,12 @@ def test_suggested_emails_for_user_who_cannot_create_new_alias(flask_client):
def test_alias_create_random(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
alias = Alias.create_new_random(user)
assert alias.email.endswith(EMAIL_DOMAIN)
@ -74,9 +79,12 @@ def test_alias_create_random(flask_client):
def test_website_send_to(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
alias = Alias.create_new_random(user)
db.session.commit()
@ -104,9 +112,12 @@ def test_website_send_to(flask_client):
def test_new_addr(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
alias = Alias.create_new_random(user)
db.session.commit()
@ -118,8 +129,8 @@ def test_new_addr(flask_client):
website_email="abcd@example.com",
reply_email="rep@SL",
name="First Last",
commit=True,
)
db.session.commit()
assert c1.new_addr() == '"abcd@example.com via SimpleLogin" <rep@SL>'
# set sender_format = AT
@ -144,14 +155,22 @@ def test_new_addr(flask_client):
def test_mailbox_delete(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
email="a@b.c",
password="password",
name="Test User",
activated=True,
commit=True,
)
db.session.commit()
m1 = Mailbox.create(user_id=user.id, email="m1@example.com", verified=True)
m2 = Mailbox.create(user_id=user.id, email="m2@example.com", verified=True)
m3 = Mailbox.create(user_id=user.id, email="m3@example.com", verified=True)
db.session.commit()
m1 = Mailbox.create(
user_id=user.id, email="m1@example.com", verified=True, commit=True
)
m2 = Mailbox.create(
user_id=user.id, email="m2@example.com", verified=True, commit=True
)
m3 = Mailbox.create(
user_id=user.id, email="m3@example.com", verified=True, commit=True
)
# alias has 2 mailboxes
alias = Alias.create_new(user, "prefix", mailbox_id=m1.id)