Project stage test

This commit is contained in:
datalets 2022-10-05 00:37:29 +02:00
parent c4f7d95ba3
commit 4c9567f314
4 changed files with 38 additions and 30 deletions

View File

@ -4,7 +4,7 @@ from factory import PostGenerationMethodCall, Sequence
from factory.alchemy import SQLAlchemyModelFactory
from dribdat.database import db
from dribdat.user.models import User, Project
from dribdat.user.models import User, Project, Event, Activity
class BaseFactory(SQLAlchemyModelFactory):
@ -25,9 +25,10 @@ class UserFactory(BaseFactory):
password = PostGenerationMethodCall('set_password', 'example')
active = True
class Meta:
class Meta: # noqa: D106
model = User
class ProjectFactory(BaseFactory):
"""Project factory."""
@ -37,23 +38,25 @@ class ProjectFactory(BaseFactory):
webpage_url = "http://webpage.localhost"
logo_color = "red"
class Meta:
class Meta: # noqa: D106
model = Project
class EventFactory(BaseFactory):
"""Event factory."""
name = Sequence(lambda n: 'Event {0}'.format(n))
summary = "Just a sample event"
class Meta:
model = Project
class Meta: # noqa: D106
model = Event
class ActivityFactory(BaseFactory):
"""Activity factory."""
name = Sequence(lambda n: 'Event {0}'.format(n))
summary = "Just a sample event"
name = "review"
content = Sequence(lambda n: 'Activity {0}'.format(n))
class Meta:
model = Project
class Meta: # noqa: D106
model = Activity

View File

@ -4,22 +4,17 @@
See: http://webtest.readthedocs.org/
"""
from flask import url_for
import pytest
from dribdat.user.models import Project
from dribdat.user import projectProgressList
from .factories import ProjectFactory
import pytest # noqa: F401
from .factories import ProjectFactory, EventFactory
from dribdat.onebox import make_onebox
from dribdat.aggregation import *
from dribdat.public.projhelper import resources_by_stage, project_action
class TestProjects:
"""Project features."""
def test_onebox(self, project, testapp):
"""Generate one box."""
srv = url_for('public.home', _external=True)
url = "%sproject/%d" % (srv, project.id)
test_markdown = """Some project content
@ -31,16 +26,31 @@ EOF""" % (url, url)
def test_project_api(self, project, testapp):
"""Make sure Project APIs respond correctly."""
project = ProjectFactory()
project.name = 'example'
project.autotext = 'some test readme content'
project.save()
# print(project.data)
assert 'example' in project.data['name']
assert project.data['excerpt'] is ''
assert project.data['excerpt'] == ''
project.autotext_url = 'https:/...'
assert 'test' in project.autotext
assert 'test' in project.data['excerpt']
def test_project_stage(self, project, testapp):
"""Check stage progression."""
event = EventFactory()
event.lock_resources = True
event.hidden = False
event.save()
project = ProjectFactory()
project.name = 'example resource'
project.save()
assert resources_by_stage(0) == []
project.event_id = event.id
project.progress = 0
project.is_hidden = False
assert project.is_challenge
project.save()
assert len(resources_by_stage(0)) == 1
assert project_action(project.id)

View File

@ -3,8 +3,8 @@
from dribdat.public.forms import LoginForm
from dribdat.user.forms import RegisterForm
import pytest # noqa: F401
import pytest
class TestRegisterForm:
"""Register form."""
@ -17,7 +17,6 @@ class TestRegisterForm:
assert form.validate() is False
assert 'A user with this name already exists' in form.username.errors
def test_validate_email_already_registered(self, user):
"""Enter email that is already registered."""
form = RegisterForm(username='unique', email=user.email,
@ -26,7 +25,6 @@ class TestRegisterForm:
assert form.validate() is False
assert 'Email already registered' in form.email.errors
def test_validate_success(self, db):
"""Register with success."""
form = RegisterForm(username='newusername', email='new@dribdat.cc',
@ -37,7 +35,6 @@ class TestRegisterForm:
class TestLoginForm:
"""Login form."""
def test_validate_success(self, user):
"""Login successful."""
user.set_password('example')
@ -46,7 +43,6 @@ class TestLoginForm:
assert form.validate() is True
assert form.user == user
def test_validate_unknown_username(self, db):
"""Unknown username."""
form = LoginForm(username='unknown', password='example')
@ -54,7 +50,6 @@ class TestLoginForm:
assert 'Unknown username' in form.username.errors
assert form.user is None
def test_validate_invalid_password(self, user):
"""Invalid password."""
user.set_password('example')
@ -63,7 +58,6 @@ class TestLoginForm:
assert form.validate() is False
assert 'Invalid password' in form.password.errors
def test_validate_inactive_user(self, user, testapp):
"""Inactive user."""
user.active = False

View File

@ -5,6 +5,7 @@ max-complexity = 10
# Q000: Double quotes are fine, really
# I001: isort's import rules are too troublesome
# I003: isort unexpected lines don't make sense to me
# I005: isort's mysterious import is too mysterious
# H101: Use TODO(NAME)
# H202: assertRaises Exception too broad
# H233: Python 3.x incompatible use of print operator
@ -15,4 +16,4 @@ max-complexity = 10
# H404: multi line docstring should start without a leading new line
# H405: multi line docstring summary not separated with an empty line
# H501: Do not use self.__dict__ for string formatting
extend-ignore = Q000,I001,I003,H101,H202,H233,H301,H306,H401,H403,H404,H405,H501
extend-ignore = Q000,I001,I003,I005,H101,H202,H233,H301,H306,H401,H403,H404,H405,H501