Metadata-Version: 2.1
Name: djangocms-testing
Version: 0.1
Summary: Testing utilities for Django CMS
Home-page: https://github.com/nicolaslara/djangocms_testing/
Author: Nicolas Lara
Author-email: nicolas@lincolnloop.com
License: BSD
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Testing
Classifier: Framework :: Django
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: django-cms (>=3.4.5)
Requires-Dist: PyYAML (>=3.12)

# DjangoCMS Testing

A set of utils to simplify testing on Django CMS plugins and pages

## Usage

### Testing all plugins

```
import os

from .base import BaseTestCase

from filer.models import Image
from djangocms_testing.integrity import CMSPluginIntegrity


class DSMPluginIntegrityTestCase(BaseTestCase, CMSPluginIntegrity):

    plugin_exclude_list = [
        'SomePluginsToExclude',
        'AnotherPluginToExclude',
    ]

    def setUp(self):
        self.homepage = self.create_page('Homepage')

        # Create any data that may be necessary for the plugins

        # Example: Creating an image
        photo_path = os.path.join(os.path.dirname(__file__), 'files', 'sample_image.jpg')
        self.test_image = Image.objects.create(file=photo_path)

        # Update the plugin list
        self.plugin_list = [
            ('CategoryPlugin', {'title': 'Top Category'}),
            ('BannerPlugin', {'icon': self.test_image, 'link': self.homepage}),
            ('LinkToPagePlugin', {'page': self.homepage}),
        ]
```

### Loading Pages

There's a management command that allows you to create pages from a
YAML description.

The page description looks like this:

```
---
# Required page data
title: Regression Test Page
slug: regression-test-page
template: generic_page      # (generic_page is provided. You can use other templates by overriding _get_template)

# Optional page data        # Default value
publish: no                 # no    (yes | no)
language: en                # en    (en | es)
apphook: null               # null  (string)
apphook_namespace: null     # null  (string)
soft_root: no               # no    (yes | no)

# Placeholder variables
#
# Provided:
# $loremispum   1 paragraph of lorem ipsum text.
#
# You can add other variables by overriding _generate_sample_data
# $image        JPEG image
# $svg          SVG Tiger iimage

# Placeholders vary per template but its no problem to define them all
# in advance, and later just switch the template type:
#
# generic_page > content

placeholders:
  content:

    - CategoryPlugin:
        title: Category 1
        subplugins:

          - QuestionPlugin:
              question: >
                This is a question
              author: Author, 21
              subplugins:

                - AnswerPlugin:
                    body: >
                      This is the text's body

```

 Create the page: `manage.py page simple_test.yaml`



