added lots of test cases post model
This commit is contained in:
@@ -1,16 +1,29 @@
|
|||||||
|
# pylint: skip-file
|
||||||
import pytest
|
import pytest
|
||||||
from posts.models import News, Post, Event, FetMeeting
|
from posts.models import News, Post, Event, FetMeeting
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.core.validators import ValidationError
|
from django.core.validators import ValidationError
|
||||||
import datetime
|
import datetime
|
||||||
from urllib.request import URLError
|
from urllib.request import URLError
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
|
||||||
|
def get_random_string(size):
|
||||||
|
chars = string.ascii_lowercase+string.ascii_uppercase+string.digits
|
||||||
|
return ''.join(random.choice(chars) for _ in range(size))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_createpad(mocker):
|
||||||
|
create_pad=mocker.patch('posts.models.createPadifNotExists',autospec=True, return_value="slug")
|
||||||
|
return create_pad
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def post(db):
|
def post(db):
|
||||||
return Post(title="asdf", post_type="N")
|
return Post(title="asdf"+get_random_string(20), post_type="N")
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def post_saved(post):
|
def post_saved(post, mock_createpad):
|
||||||
post.save()
|
post.save()
|
||||||
return post
|
return post
|
||||||
|
|
||||||
@@ -55,34 +68,84 @@ class TestPostModel:
|
|||||||
post.full_clean()
|
post.full_clean()
|
||||||
|
|
||||||
def test_validate_eventdate(self, post):
|
def test_validate_eventdate(self, post):
|
||||||
|
post.post_type="E"
|
||||||
post.event_start=datetime.datetime(2020,10,1,18,0)
|
post.event_start=datetime.datetime(2020,10,1,18,0)
|
||||||
post.event_end=datetime.datetime(2020,10,1,19,0)
|
post.event_end=datetime.datetime(2020,10,1,19,0)
|
||||||
post.full_clean()
|
post.full_clean()
|
||||||
assert True
|
assert True
|
||||||
|
|
||||||
|
|
||||||
|
def test_validate_dates(self,post):
|
||||||
|
post.post_type="E"
|
||||||
|
post.event_start=datetime.datetime(2020,10,1,19,0)
|
||||||
|
post.event_end=datetime.datetime(2020,10,1,18,0)
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
post.full_clean()
|
||||||
|
|
||||||
|
def test_validate_date2(self,post):
|
||||||
|
post.post_type="N"
|
||||||
|
post.event_start=datetime.datetime(2020,10,1,18,0)
|
||||||
|
post.event_end=datetime.datetime(2020,10,1,19,0)
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
post.full_clean()
|
||||||
|
|
||||||
def test_clean_post(self, post):
|
def test_clean_post(self, post):
|
||||||
post.full_clean()
|
post.full_clean()
|
||||||
assert True
|
assert True
|
||||||
|
|
||||||
class TestPostEtherpad:
|
|
||||||
def test_agenda_id(self,post_saved):
|
|
||||||
assert post_saved.slug in str(post_saved.get_agenda_key())
|
|
||||||
|
|
||||||
def test_protocol_id(self,post_saved):
|
|
||||||
assert post_saved.slug in str(post_saved.get_protocol_key())
|
class TestPostEtherpad:
|
||||||
|
def setUp(self):
|
||||||
|
print("running setup")
|
||||||
|
|
||||||
|
def test_agenda_id(self,post_saved, mock_createpad):
|
||||||
|
mock_createpad.return_value=post_saved.slug+"-agenda"
|
||||||
|
k=post_saved.get_agenda_key()
|
||||||
|
mock_createpad.assert_called_with(post_saved.slug+"-agenda")
|
||||||
|
assert post_saved.slug in str(k)
|
||||||
|
|
||||||
|
def test_protocol_id(self,post_saved,mock_createpad):
|
||||||
|
mock_createpad.return_value=post_saved.slug+"-protocol"
|
||||||
|
k=post_saved.get_protocol_key()
|
||||||
|
mock_createpad.assert_called_with(post_saved.slug+"-protocol")
|
||||||
|
assert post_saved.slug in str(k)
|
||||||
|
|
||||||
|
def test_catch_url_error(self,post_saved,mock_createpad):
|
||||||
|
def raise_url_error(key):
|
||||||
|
raise URLError("Mocked Etherpad Down")
|
||||||
|
mock_createpad.side_effect=raise_url_error
|
||||||
|
k=post_saved.get_protocol_key()
|
||||||
|
mock_createpad.assert_called()
|
||||||
|
assert k == None
|
||||||
|
|
||||||
class TestFetmeetingModel:
|
class TestFetmeetingModel:
|
||||||
def test_clean_fetmeeting(self, fetmeeting):
|
def test_clean_fetmeeting(self, fetmeeting, mock_createpad):
|
||||||
|
fetmeeting.full_clean()
|
||||||
fetmeeting.save()
|
fetmeeting.save()
|
||||||
assert True
|
assert True
|
||||||
|
|
||||||
|
def test_clean_fetmeeting(self, fetmeeting):
|
||||||
|
fetmeeting.event_start=None
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
fetmeeting.clean()
|
||||||
|
|
||||||
|
def test_clean_fetmeeting(self, fetmeeting):
|
||||||
|
fetmeeting.event_start=None
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
fetmeeting.clean()
|
||||||
|
|
||||||
#Test Defaults for Fetmeeting
|
#Test Defaults for Fetmeeting
|
||||||
def test_title(self, fetmeeting):
|
def test_title(self, fetmeeting):
|
||||||
fetmeeting.save()
|
fetmeeting.save()
|
||||||
assert fetmeeting.title=="Fachschaftssitzung"
|
assert fetmeeting.title=="Fachschaftssitzung"
|
||||||
|
|
||||||
def test_slug(self, fetmeeting_saved):
|
def test_slug(self, fetmeeting_saved):
|
||||||
assert "fachschaftssitzung" in fetmeeting_saved.slug
|
assert "fachschaftssitzung" in fetmeeting_saved.slug
|
||||||
|
|
||||||
|
def test_slug_fachschaftsitzung(self,fetmeeting_saved):
|
||||||
|
assert "2020-01-01" in fetmeeting_saved.slug
|
||||||
|
|
||||||
def test_sitzung_end(self, fetmeeting_saved):
|
def test_sitzung_end(self, fetmeeting_saved):
|
||||||
assert datetime.datetime(2020,1,1,20,0)==fetmeeting_saved.event_end
|
assert datetime.datetime(2020,1,1,20,0)==fetmeeting_saved.event_end
|
||||||
|
|
||||||
@@ -91,3 +154,14 @@ class TestFetmeetingModel:
|
|||||||
|
|
||||||
def test_post_type(self, fetmeeting_saved):
|
def test_post_type(self, fetmeeting_saved):
|
||||||
assert fetmeeting_saved.post_type == "F"
|
assert fetmeeting_saved.post_type == "F"
|
||||||
|
|
||||||
|
def test_meeting_hasagenda(self, fetmeeting_saved):
|
||||||
|
assert fetmeeting_saved.has_agenda == True
|
||||||
|
|
||||||
|
def test_meeting_hasprotocol(self, fetmeeting_saved):
|
||||||
|
assert fetmeeting_saved.has_protocol == True
|
||||||
|
|
||||||
|
class TestPostViews:
|
||||||
|
def test_home(self,post_saved,client,db):
|
||||||
|
res=client.get("/").content
|
||||||
|
assert post_saved.title in str(res)
|
||||||
Reference in New Issue
Block a user