Skip to content

Commit

Permalink
Tests
Browse files Browse the repository at this point in the history
coverage lifted to 100%
  • Loading branch information
ksuess committed May 17, 2018
1 parent 89b0b3a commit 249d8a3
Show file tree
Hide file tree
Showing 13 changed files with 134 additions and 41 deletions.
1 change: 1 addition & 0 deletions src/collective/playlist/browser/configure.zcml
Expand Up @@ -35,6 +35,7 @@
name="playlist-settings"
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
class=".settings.SettingsView"
layer="collective.playlist.interfaces.ICollectivePlaylistLayer"
permission="cmf.ManagePortal"
/>

Expand Down
13 changes: 2 additions & 11 deletions src/collective/playlist/browser/settings.py
@@ -1,8 +1,6 @@
# coding: utf-8
from collective.playlist import _
from plone.app.registry.browser.controlpanel import ControlPanelFormWrapper
from plone.app.registry.browser.controlpanel import RegistryEditForm
from plone.z3cform import layout
from Products.Five.browser import BrowserView
from zope import schema
from zope.interface import Interface
Expand Down Expand Up @@ -39,13 +37,6 @@ class SettingsEditForm(RegistryEditForm):


class SettingsView(BrowserView):
"""
View which wrap the settings form using ControlPanelFormWrapper to a
HTML boilerplate frame.
"""
"""Control panel form wrapper."""

def __call__(self):
view_factor = layout.wrap_form(
SettingsEditForm, ControlPanelFormWrapper)
view = view_factor(self.context, self.request)
return view()
form = SettingsEditForm
Expand Up @@ -3580,7 +3580,7 @@ define('pat-collectiveplaylist',[


// JPlayer
var tracks = $('#tracks').html();
var tracks = $('#jquery_jplayer_playlist').attr('data-tracks');
tracks = tracks.replace(/'/g, '"');
tracks = JSON.parse(tracks);

Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Expand Up @@ -47,7 +47,7 @@ define([


// JPlayer
var tracks = $('#tracks').html();
var tracks = $('#jquery_jplayer_playlist').attr('data-tracks');
tracks = tracks.replace(/'/g, '"');
tracks = JSON.parse(tracks);

Expand Down
@@ -1,6 +1,5 @@
<div id="tracks" class="hidden" tal:content="view/getJSONTracks">Tracks</div>

<div id="jquery_jplayer_playlist" class="jp-jplayer"></div>
<div id="jquery_jplayer_playlist" class="jp-jplayer"
tal:attributes="data-tracks view/getJSONTracks"></div>

<div id="jp_container_playlist" class="jp-audio" role="application" aria-label="media player">
<div class="jp-type-playlist">
Expand Down
Expand Up @@ -20,7 +20,7 @@
<script type="text/javascript">
$(document).ready(function() {
// JPlayer
var tracks = $('#tracks').html();
var tracks = $('#jquery_jplayer_playlist').attr('data-tracks');
tracks = tracks.replace(/'/g, '"');
tracks = JSON.parse(tracks);

Expand Down Expand Up @@ -86,9 +86,9 @@
i18n:translate="add track">add track</a></li>
</ul>

<div id="tracks" class="hidden" tal:content="view/getJSONTracks">Tracks</div>

<div id="jquery_jplayer_playlist" class="jp-jplayer"></div>
<div id="jquery_jplayer_playlist" class="jp-jplayer"
tal:attributes="data-tracks view/getJSONTracks"></div>

<div id="jp_container_playlist" class="jp-audio" role="application" aria-label="media player">
<div class="jp-type-playlist">
Expand Down
3 changes: 2 additions & 1 deletion src/collective/playlist/browser/views.py
Expand Up @@ -55,11 +55,12 @@ def getJSONTracks(self):
return json.dumps(self.getTracks())

def can_add_and_edit(self):
# todo: remove after fix of robottests bug
try:
# roles = api.user.get_roles()
current = api.user.get_current()
roles = current.getRoles()
except api.user.UserNotFoundError:
except api.user.UserNotFoundError: # pragma: no cover
roles = []
result = 'Manager' in roles or \
'Site Administrator' in roles or \
Expand Down
2 changes: 1 addition & 1 deletion src/collective/playlist/setuphandlers.py
Expand Up @@ -7,7 +7,7 @@


@implementer(INonInstallable)
class HiddenProfiles(object):
class HiddenProfiles(object): # pragma: no cover

def getNonInstallableProfiles(self):
"""Hide uninstall profile from site-creation and quickinstaller."""
Expand Down
16 changes: 0 additions & 16 deletions src/collective/playlist/tests/robot/t_example2.robot

This file was deleted.

103 changes: 103 additions & 0 deletions src/collective/playlist/tests/test_viewlets.py
@@ -0,0 +1,103 @@
# coding: utf-8
from collective.playlist.testing import COLLECTIVE_PLAYLIST_INTEGRATION_TESTING # noqa
from lxml import etree
from plone import api
from plone.app.testing import setRoles
from plone.app.testing import TEST_USER_ID
from Products.Five.browser import BrowserView as View
from zope.component import getMultiAdapter
from zope.viewlet.interfaces import IViewletManager

import unittest


class PlaylistButtonViewletTestCase(unittest.TestCase):

layer = COLLECTIVE_PLAYLIST_INTEGRATION_TESTING

def setUp(self):
"""Custom shared utility setup for tests."""
self.portal = self.layer['portal']
self.request = self.layer['request']
setRoles(self.portal, TEST_USER_ID, ['Manager'])
self.workflowTool = api.portal.get_tool(name='portal_workflow')
self.playlist = self.portal.playlist

def toggle_playbutton(self, enable):
"""activate / deactivate viewlet"""
view = self.portal.restrictedTraverse('@@manage-viewlets')
if enable:
view.show('plone.portalheader',
'collective.playlist.playerbuttonviewlet')
else:
view.hide('plone.portalheader',
'collective.playlist.playerbuttonviewlet')

def get_viewlet_manager(self, context, name='plone.portalheader'):
request = self.request
view = View(context, request)
manager = getMultiAdapter(
(context, request, view), IViewletManager, name)
return manager

def get_viewlet(self, context,
name='collective.playlist.playerbuttonviewlet'):
manager = self.get_viewlet_manager(context)
manager.update()
viewlet = [v for v in manager.viewlets if v.__name__ == name]
assert len(viewlet) == 1
return viewlet[0]

def test_playlistbutton_enabled_disabled(self):
self.toggle_playbutton(True)
viewlet = self.get_viewlet(self.portal)

html = etree.HTML(viewlet())
a = html.xpath('//a[contains(@class,"playlist-button")]')
self.assertEqual(len(a), 1)

self.workflowTool.doActionFor(self.playlist, 'retract')
setRoles(self.portal, TEST_USER_ID, ['Anonymous'])

view = self.portal.restrictedTraverse('view')
html = etree.HTML(view())
a = html.xpath('//a[contains(@class,"playlist-button")]')
self.assertEqual(len(a), 0)


class PlaylistFooterViewletTestCase(unittest.TestCase):

layer = COLLECTIVE_PLAYLIST_INTEGRATION_TESTING

def setUp(self):
"""Custom shared utility setup for tests."""
self.portal = self.layer['portal']
self.request = self.layer['request']
setRoles(self.portal, TEST_USER_ID, ['Anonymous'])

def get_viewlet_manager(self, context, name='plone.portalfooter'):
request = self.request
view = View(context, request)
manager = getMultiAdapter(
(context, request, view), IViewletManager, name)
return manager

def get_viewlet(self, context,
name='collective.playlist.playerfooterviewlet'):
manager = self.get_viewlet_manager(context)
manager.update()
viewlet = [v for v in manager.viewlets if v.__name__ == name]
assert len(viewlet) == 1
return viewlet[0]

def test_footerviewlet(self):
view = self.portal.restrictedTraverse('view')
html = etree.HTML(view())
player = html.xpath('//div[contains(@id,"jquery_jplayer_playlist")]')
self.assertEqual(len(player), 1)

viewlet = self.get_viewlet(self.portal)
html = etree.HTML(viewlet())
player = html.xpath('//div[contains(@id,"jquery_jplayer_playlist")]')
self.assertEqual(len(player), 1)
self.assertNotEqual(viewlet.playlist(), None)
18 changes: 16 additions & 2 deletions src/collective/playlist/tests/test_views.py
@@ -1,5 +1,7 @@
# coding: utf-8
from collective.playlist.testing import COLLECTIVE_PLAYLIST_INTEGRATION_TESTING # noqa
from lxml import etree
from plone import api
from plone.app.testing import setRoles
from plone.app.testing import TEST_USER_ID

Expand All @@ -16,6 +18,11 @@ def setUp(self):
setRoles(self.portal, TEST_USER_ID, ['Manager'])

def test_BaseView(self):
api.portal.set_registry_record('plone.site_logo', 'todo')
val = u'https://fonts.googleapis.com/css?family=Ubuntu'
api.portal.set_registry_record('collective.playlist.stylesheets',
[val])

view = self.portal.playlist.restrictedTraverse('@@playlistfooterview')
tracks = [{u'mp3':
u'http://nohost/plone/playlist/track-1/@@download/audiofile/track-1.mp3', # noqa: 128
Expand All @@ -27,9 +34,16 @@ def test_BaseView(self):
u'http://nohost/plone/playlist/track-3/@@download/audiofile/track-3.mp3', # noqa: 128
'title': 'Track 3'}]
self.assertEqual(view.getTracks(), tracks)
self.assertEqual(view.css_stylesheets_collectiveplaylist(), u'')
self.assertEqual(view.getSiteLogo(), None)
self.assertEqual(view.copyright(), u'')
str = '<link rel="stylesheet" type="text/css" href="{0}" />' \
.format(val)
self.assertEqual(view.css_stylesheets_collectiveplaylist(), str)
self.assertNotEqual(view.getSiteLogo(), None)

view = self.portal.playlist.restrictedTraverse('@@playlistpopupview')
html = etree.HTML(view())
tracks = html.xpath('//div[contains(@data-tracks,"Track 1")]')
self.assertEqual(len(tracks), 1)

def test_EditPopupPlayer(self):
setRoles(self.portal, TEST_USER_ID, ['Editor'])
Expand Down

0 comments on commit 249d8a3

Please sign in to comment.