diff options
| author | tom christie tom@tomchristie.com | 2011-02-19 10:26:27 +0000 |
|---|---|---|
| committer | tom christie tom@tomchristie.com | 2011-02-19 10:26:27 +0000 |
| commit | 805aa03ec1871f6a766d9052b348ddce9e9843c3 (patch) | |
| tree | 8ab5b6a7396236aa45bbc61e8404cc77fc75a9c5 /djangorestframework/tests/description.py | |
| parent | b749b950a1b4bede76b7e3900a6385779904902d (diff) | |
| download | django-rest-framework-805aa03ec1871f6a766d9052b348ddce9e9843c3.tar.bz2 | |
Yowzers. Final big bunch of refactoring for 0.1 release. Now support Django 1.3's views, admin style api is all polished off, loads of tests, new test project for running the test. All sorts of goodness. Getting ready to push this out now.
Diffstat (limited to 'djangorestframework/tests/description.py')
| -rw-r--r-- | djangorestframework/tests/description.py | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/djangorestframework/tests/description.py b/djangorestframework/tests/description.py new file mode 100644 index 00000000..3e3f7b21 --- /dev/null +++ b/djangorestframework/tests/description.py @@ -0,0 +1,93 @@ +from django.test import TestCase +from djangorestframework.resource import Resource +from djangorestframework.markdownwrapper import apply_markdown +from djangorestframework.description import get_name, get_description + +# We check that docstrings get nicely un-indented. +DESCRIPTION = """an example docstring +==================== + +* list +* list + +another header +-------------- + + code block + +indented + +# hash style header #""" + +# If markdown is installed we also test it's working (and that our wrapped forces '=' to h2 and '-' to h3) +MARKED_DOWN = """<h2>an example docstring</h2> +<ul> +<li>list</li> +<li>list</li> +</ul> +<h3>another header</h3> +<pre><code>code block +</code></pre> +<p>indented</p> +<h2 id="hash_style_header">hash style header</h2>""" + + +class TestResourceNamesAndDescriptions(TestCase): + def test_resource_name_uses_classname_by_default(self): + """Ensure Resource names are based on the classname by default.""" + class MockResource(Resource): + pass + self.assertEquals(get_name(MockResource()), 'Mock Resource') + + def test_resource_name_can_be_set_explicitly(self): + """Ensure Resource names can be set using the 'name' class attribute.""" + example = 'Some Other Name' + class MockResource(Resource): + name = example + self.assertEquals(get_name(MockResource()), example) + + def test_resource_description_uses_docstring_by_default(self): + """Ensure Resource names are based on the docstring by default.""" + class MockResource(Resource): + """an example docstring + ==================== + + * list + * list + + another header + -------------- + + code block + + indented + + # hash style header #""" + + self.assertEquals(get_description(MockResource()), DESCRIPTION) + + def test_resource_description_can_be_set_explicitly(self): + """Ensure Resource descriptions can be set using the 'description' class attribute.""" + example = 'Some other description' + class MockResource(Resource): + """docstring""" + description = example + self.assertEquals(get_description(MockResource()), example) + + def test_resource_description_does_not_require_docstring(self): + """Ensure that empty docstrings do not affect the Resource's description if it has been set using the 'description' class attribute.""" + example = 'Some other description' + class MockResource(Resource): + description = example + self.assertEquals(get_description(MockResource()), example) + + def test_resource_description_can_be_empty(self): + """Ensure that if a resource has no doctring or 'description' class attribute, then it's description is the empty string""" + class MockResource(Resource): + pass + self.assertEquals(get_description(MockResource()), '') + + def test_markdown(self): + """Ensure markdown to HTML works as expected""" + if apply_markdown: + self.assertEquals(apply_markdown(DESCRIPTION), MARKED_DOWN) |
