added lots of test cases post model

This commit is contained in:
2021-01-01 16:30:50 +00:00
parent b056997432
commit 3d2efd7088

View File

@@ -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)