2020-12-03 22:04:45 +01:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
from articles.models import Article, User
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
def test_publish_article(unpublished_article: Article):
|
|
|
|
assert unpublished_article.status == Article.DRAFT
|
|
|
|
assert unpublished_article.published_at is None
|
|
|
|
published_article = unpublished_article.publish()
|
|
|
|
assert published_article.status == Article.PUBLISHED
|
|
|
|
assert published_article.published_at is not None
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
def test_unpublish_article(published_article: Article):
|
|
|
|
assert published_article.status == Article.PUBLISHED
|
|
|
|
assert published_article.published_at is not None
|
|
|
|
unpublished_article = published_article.unpublish()
|
|
|
|
assert unpublished_article.status == Article.DRAFT
|
|
|
|
assert unpublished_article.published_at is None
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
def test_save_article_adds_missing_slug(author: User):
|
|
|
|
# Explicitly calling bulk_create with one article because it doesn't call save().
|
|
|
|
articles = Article.objects.bulk_create(
|
|
|
|
[Article(author=author, title="noice title", slug="", status=Article.DRAFT)]
|
|
|
|
)
|
|
|
|
article = articles[0]
|
|
|
|
assert article.slug == ""
|
|
|
|
article.save()
|
|
|
|
assert article.slug != ""
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
def test_save_article_doesnt_change_existing_slug(published_article: Article):
|
|
|
|
original_slug = published_article.slug
|
|
|
|
published_article.title = "This is a brand new title"
|
|
|
|
published_article.save()
|
|
|
|
assert published_article.slug == original_slug
|
2021-01-03 21:46:41 +01:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
def test_empty_custom_css_minified(published_article):
|
|
|
|
published_article.custom_css = ""
|
|
|
|
assert published_article.get_minified_custom_css == ""
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
def test_simple_custom_css_minified(published_article):
|
|
|
|
published_article.custom_css = ".cls {\n background-color: red;\n}"
|
|
|
|
assert (
|
|
|
|
published_article.get_minified_custom_css == ".cls { background-color: red; }"
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
def test_larger_custom_css_minified(published_article):
|
|
|
|
published_article.custom_css = """\
|
|
|
|
.profile {
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-evenly;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
.profile img {
|
|
|
|
max-width: 200px;
|
|
|
|
min-width: 100px;
|
|
|
|
max-height: 200px;
|
|
|
|
min-height: 100px;
|
|
|
|
border-radius: 10%;
|
|
|
|
padding: 1rem;
|
|
|
|
flex-shrink: 1;
|
|
|
|
flex-grow: 0;
|
|
|
|
padding: 0;
|
|
|
|
}"""
|
|
|
|
assert (
|
|
|
|
published_article.get_minified_custom_css
|
|
|
|
== """.profile { display: flex; justify-content: space-evenly; flex-wrap: wrap; } .profile img { max-width: 200px; min-width: 100px; max-height: 200px; min-height: 100px; border-radius: 10%; padding: 1rem; flex-shrink: 1; flex-grow: 0; padding: 0; }"""
|
|
|
|
)
|