diff --git a/tests/test_templatetags.py b/tests/test_templatetags.py
index ac218df21..f75dcbadb 100644
--- a/tests/test_templatetags.py
+++ b/tests/test_templatetags.py
@@ -4,7 +4,7 @@ from __future__ import unicode_literals
from django.test import TestCase
from rest_framework.templatetags.rest_framework import (
- add_query_param, urlize_quoted_links
+ add_nested_class, add_query_param, format_value, urlize_quoted_links
)
from rest_framework.test import APIRequestFactory
@@ -22,6 +22,99 @@ class TemplateTagTests(TestCase):
self.assertIn("q=%E6%9F%A5%E8%AF%A2", json_url)
self.assertIn("format=json", json_url)
+ def test_format_value_boolean_or_none(self):
+ """
+ Tests format_value with booleans and None
+ """
+ self.assertEqual(format_value(True), 'true
')
+ self.assertEqual(format_value(False), 'false
')
+ self.assertEqual(format_value(None), 'null
')
+
+ def test_format_value_list(self):
+ """
+ Tests format_value with a list of strings
+ """
+ list_items = ['item1', 'item2', 'item3']
+ self.assertEqual(format_value(list_items), '\n item1, item2, item3\n')
+ self.assertEqual(format_value([]), '\n\n')
+
+ def test_format_value_table(self):
+ """
+ Tests format_value with a list of lists/dicts
+ """
+ list_of_lists = [['list1'], ['list2'], ['list3']]
+ self.assertEqual(format_value(list_of_lists), '\n
\n \n \n \n 0 | \n \n list1\n | \n
\n \n \n 1 | \n \n list2\n | \n
\n \n \n 2 | \n \n list3\n | \n
\n \n \n
\n')
+
+ list_of_dicts = [{'item1': 'value1'}, {'item2': 'value2'}, {'item3': 'value3'}]
+ self.assertEqual(format_value(list_of_dicts), '\n\n \n \n \n 0 | \n | \n
\n \n \n 1 | \n | \n
\n \n \n 2 | \n | \n
\n \n \n
\n')
+
+ def test_format_value_dict(self):
+ """
+ Tests format_value with a dict of strings
+ """
+ dict_items = {'item1': 'value1', 'item2': 'value2', 'item3': 'value3'}
+ self.assertEqual(format_value(dict_items), '')
+
+ def test_format_value_simple_string(self):
+ """
+ Tests format_value with a simple string
+ """
+ simple_string = 'this is an example of a string'
+ self.assertEqual(format_value(simple_string), simple_string)
+
+ def test_format_value_string_hyperlink(self):
+ """
+ Tests format_value with a url
+ """
+ url = 'http://www.example.com'
+ self.assertEqual(format_value(url), 'http://www.example.com')
+
+ def test_format_value_string_email(self):
+ """
+ Tests format_value with an email address
+ """
+ email = 'something@somewhere.com'
+ self.assertEqual(format_value(email), 'something@somewhere.com')
+
+ def test_format_value_string_newlines(self):
+ """
+ Tests format_value with a string with newline characters
+ :return:
+ """
+ text = 'Dear user, \n this is a message \n from,\nsomeone'
+ self.assertEqual(format_value(text), 'Dear user, \n this is a message \n from,\nsomeone
')
+
+ def test_format_value_object(self):
+ """
+ Tests that format_value with a object returns the object's __str__ method
+ """
+ obj = object()
+ self.assertEqual(format_value(obj), obj.__str__())
+
+ def test_add_nested_class(self):
+ """
+ Tests that add_nested_class returns the proper class
+ """
+ positive_cases = [
+ [['item']],
+ [{'item1': 'value1'}],
+ {'item1': 'value1'}
+ ]
+
+ negative_cases = [
+ ['list'],
+ '',
+ None,
+ True,
+ False
+ ]
+
+ for case in positive_cases:
+ self.assertEqual(add_nested_class(case), 'class=nested')
+
+ for case in negative_cases:
+ self.assertEqual(add_nested_class(case), '')
+
class Issue1386Tests(TestCase):
"""