Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_size = 4

[**.{js,json,yml}]
indent_size = 2
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
screenshots/*.png
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ python:
- "3.5"
install:
- pip install tox
- npm install phantomjs-prebuilt
script: "make test"
notifications:
email: false
addons:
postgresql: 9.4
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ integration. To run the tests locally, install `tox`:

pip install tox

... and phantomjs:

npm install phantomjs-prebuilt

and then run:

make test
Expand Down
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
colour-runner
dj-database-url
factory-boy~=2.8.1
needle~=0.3.0
psycopg2~=2.6.0
selenium~=2.53.0
63 changes: 63 additions & 0 deletions runtests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#! /usr/bin/env python
"""From http://stackoverflow.com/a/12260597/400691."""
import os
import sys

import dj_database_url
import django
from colour_runner.django_runner import ColourRunnerMixin
from django.conf import settings
from django.test.runner import DiscoverRunner


settings.configure(
DATABASES={'default': dj_database_url.config(
default='postgres:///sirtrevor',
)},
INSTALLED_APPS=(
'tests',
'django.contrib.admin',
# contenttypes must preceed auth: http://stackoverflow.com/a/18292090/400691
'django.contrib.contenttypes',
'django.contrib.auth',
'django.contrib.sessions',
'django.contrib.staticfiles',
),
MIDDLEWARE_CLASSES=(
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
),
OVERWRITE_SCREENSHOTS=os.environ.get('OVERWRITE_SCREENSHOTS', False),
PASSWORD_HASHERS=('django.contrib.auth.hashers.MD5PasswordHasher',),
ROOT_URLCONF='tests.urls',
STATIC_URL='/static/',
TEMPLATES=[{
'APP_DIRS': True,
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'OPTIONS': {'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
]},
}],
)


django.setup()


class TestRunner(ColourRunnerMixin, DiscoverRunner):
"""Enable coloured output for tests."""


test_runner = TestRunner(verbosity=2)
failures = test_runner.run_tests(None)
if failures:
sys.exit(1)
Binary file added screenshots/baseline/admin-field-empty.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added screenshots/baseline/admin-field-video.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 15 additions & 6 deletions sirtrevor/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,24 @@

class SirTrevorWidget(Textarea):
"""Form widget for SirTrevorJS content."""
def __init__(self, attrs=None):
"""
Remove Textarea's row and cols default.
class Media:
css = {
'all': ('sirtrevor/sir-trevor.min.css',),
}
js = (
'sirtrevor/sir-trevor.min.js',
'sirtrevor/sir-trevor-init.js',
)

They don't make sense given the area's going to be blasted by
SirTrevorJS.
"""
def __init__(self, attrs=None):
if attrs is None:
attrs = {}

# Remove Textarea's row and cols default. They don't make sense given
# the area's going to be blasted by SirTrevorJS.
attrs.setdefault('cols', False)
attrs.setdefault('rows', False)

# Add a class for Sirtrevor JS to pick up on.
attrs.setdefault('class', 'js-st-instance')
super().__init__(attrs)
6 changes: 6 additions & 0 deletions tests/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.contrib import admin

from .models import Post


admin.site.register(Post)
34 changes: 34 additions & 0 deletions tests/factories.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import factory

from django.contrib.auth.models import User

from .models import Post


class UserFactory(factory.DjangoModelFactory):
username = factory.Sequence('user{}'.format)

class Meta:
model = User


class AdminUserFactory(UserFactory):
is_staff = True
is_superuser = True

@factory.post_generation
def password(self, create, extracted, **kwargs):
assert create

if extracted is None:
extracted = 'default_password'
self.raw_password = extracted
self.set_password(extracted)
self.save()


class PostFactory(factory.DjangoModelFactory):
content = factory.LazyAttribute(lambda o: {})

class Meta:
model = Post
7 changes: 7 additions & 0 deletions tests/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from django.db import models

from sirtrevor.modelfields import SirTrevorField


class Post(models.Model):
content = SirTrevorField(default='')
42 changes: 0 additions & 42 deletions tests/run.py

This file was deleted.

Loading