This file demonstrates how you go about adding and removing an easySlider to different content on a Plone site.

things to test
adding slides
removing slides
editing easySlider


    >>> from Products.Five.testbrowser import Browser
	>>> from zope.testbrowser import interfaces
	>>> from zope.interface.verify import verifyObject
	>>> self.setRoles(("Manager",))
	
    >>> browser = Browser()
    >>> browser.handleErrors = False
    >>> portal_url = self.portal.absolute_url()
    >>> from Products.PloneTestCase.setup import portal_owner, default_password
    
    >>> browser.open(portal_url + '/login_form?came_from=' + portal_url)
    >>> browser.getControl(name='__ac_name').value = portal_owner
    >>> browser.getControl(name='__ac_password').value = default_password
    >>> browser.getControl(name='submit').click()

Alright, first off lets make sure that links to add easySliders are added across the board on all different content types.  Should go to slider settings after you've added the slider

Check Page type first,

    >>> browser.open(self.portal.absolute_url())
    >>> browser.getLink(text="Page").click()
    >>> browser.getControl(name="title").value = "test-page"
    >>> browser.getControl(name='form_submit').click()
    >>> browser.getLink(text="Add Slider").click()
    >>> browser.url == self.portal['test-page'].absolute_url() + "/@@slider-settings"
    True
    
    >>> page_url = self.portal['test-page'].absolute_url()
    
Now a collection...

    >>> browser.open(self.portal.absolute_url())
    >>> browser.getLink(text="Collection").click()
    >>> browser.getControl(name="title").value = "test-collection"
    >>> browser.getControl(name='form_submit').click()
    >>> browser.getLink(text="Add Slider").click()
    >>> browser.url == self.portal['test-collection'].absolute_url() + "/@@slider-settings"
    True
    
A Folder

    >>> browser.open(self.portal.absolute_url())
    >>> browser.getLink(text="Folder").click()
    >>> browser.getControl(name="title").value = "test-folder"
    >>> browser.getControl(name='form_submit').click()
    >>> browser.getLink(text="Add Slider").click()
    >>> browser.url == self.portal['test-folder'].absolute_url() + "/@@slider-settings"
    True
    
A News Item

    >>> browser.open(self.portal.absolute_url())
    >>> browser.getLink(text="News Item").click()
    >>> browser.getControl(name="title").value = "test-news-item"
    >>> browser.getControl(name='form_submit').click()
    >>> browser.getLink(text="Add Slider").click()
    >>> browser.url == self.portal['test-news-item'].absolute_url() + "/@@slider-settings"
    True
    
Let's get into the meat of this now.  From now on, we'll just play with the test page we created.

    >>> browser.getLink(text='test-page').click()

Make sure the Slider settings link is there and the remove slider link is there.

    >>> 'href="' + page_url + '/@@disable_slider"' in browser.contents 
    True
    >>> 'href="' + page_url + '/@@slider-settings"' in browser.contents 
    True
    
Go to the slider settings, edit the page, should bring you back to the page after your done

    >>> browser.getLink(text="Slider Settings").click()
    >>> browser.getControl(name="form.width").value = "700"
    >>> browser.getControl(name="form.height").value = "400"
    >>> browser.getControl(name="form.actions.save").click()
    >>> browser.url == self.portal['test-page'].absolute_url()
    True
    
Slider should be in the page contents now.

    >>> '<div id="slider-container">' in browser.contents
    True
    
The width and height should be set accordingly.

    >>> "width: 700px" in browser.contents
    True
    >>> "height: 400px" in browser.contents
    True
    
Edit it again and hide it this time.  Does it still show?

    >>> browser.getLink(text="Slider Settings").click()
    >>> browser.getControl(name="form.show").value = False
    >>> browser.getControl(name="form.actions.save").click()
    >>> '<div id="slider-container">' in browser.contents
    False
    
Show it again now

    >>> browser.getLink(text="Slider Settings").click()
    >>> browser.getControl(name="form.show").value = True
    >>> browser.getControl(name="form.actions.save").click()
    
Add some slides now shall we? Well, can't do it with the browser testing here because the kupu widget we use doesn't have support without ajax.  So we'll just do some programming for it...

    >>> browser.getLink(text="Slider Settings").click()
    >>> "add new slide" in browser.contents
    True
    
    >>> from collective.easyslider.settings import PageSliderSettings
    >>> settings = PageSliderSettings(self.portal['test-page'])
    
the slides are just a list of html text
    >>> settings.slides = ['my first slide', 'my second slide', 'my third slide']
    
Render the page again and make sure the slides are there.
    >>> browser.open(self.portal['test-page'].absolute_url())
    >>> 'my first slide' in browser.contents
    True
    >>> 'my second slide' in browser.contents
    True
    >>> 'my third slide' in browser.contents
    True
    
Go to the settings page and make sure all the slide manipulation links are there...

    >>> browser.getLink(text='Slider Settings').click()
    >>> "3 total slides" in browser.contents
    True
    
    >>> 'href="' + page_url + '/slides/0"' in browser.contents
    True
    >>> 'href="' + page_url + '/slides/0/@@move_up"' in browser.contents
    True
    >>> 'href="' + page_url + '/slides/0/@@move_down"' in browser.contents
    True
    >>> 'href="' + page_url + '/slides/0/@@remove"' in browser.contents
    True
    
    >>> 'href="' + page_url + '/slides/1"' in browser.contents
    True
    >>> 'href="' + page_url + '/slides/1/@@move_up"' in browser.contents
    True
    >>> 'href="' + page_url + '/slides/1/@@move_down"' in browser.contents
    True
    >>> 'href="' + page_url + '/slides/1/@@remove"' in browser.contents
    True

    >>> 'href="' + page_url + '/slides/2"' in browser.contents
    True
    >>> 'href="' + page_url + '/slides/2/@@move_up"' in browser.contents
    True
    >>> 'href="' + page_url + '/slides/2/@@move_down"' in browser.contents
    True
    >>> 'href="' + page_url + '/slides/2/@@remove"' in browser.contents
    True
    
Move the first slide down

    >>> browser.getLink(url=page_url + '/slides/0/@@move_down').click()
    
check the order

    >>> settings = PageSliderSettings(self.portal['test-page'])
    >>> settings.slides[0] == 'my second slide'
    True
    >>> settings.slides[1] == 'my first slide'
    True
    
Move the last slide up now

    >>> browser.getLink(url=page_url + '/slides/2/@@move_up').click()
    
check the order again
    
    >>> settings = PageSliderSettings(self.portal['test-page'])
    >>> settings.slides[1] == 'my third slide'
    True
    >>> settings.slides[2] == 'my first slide'
    True
    
Now remove the last slide which was the first...

    >>> browser.getLink(url=page_url + '/slides/2/@@remove').click()
    >>> settings = PageSliderSettings(self.portal['test-page'])
    >>> "2 total slides" in browser.contents
    True
    >>> len(settings.slides) == 2
    True
    
Should only show 2 slides now

    >>> browser.open(page_url)
    >>> 'my first slide' in browser.contents
    False
    >>> 'my second slide' in browser.contents
    True
    >>> 'my third slide' in browser.contents
    True
    
okay, backup and remove the whole easy slider

    >>> browser.open(page_url)
    >>> browser.getLink(text="Remove Slider").click()
    >>> "Add Slider" in browser.contents
    True
    >>> '<div id="slider-container">' in browser.contents
    False