kotti_blog browser tests
========================

Setup and Login
---------------

  >>> from kotti import testing
  >>> tools = testing.setUpFunctional(
  ...     **{'kotti.configurators': 'kotti_blog.kotti_configure'})
  >>> browser = tools['Browser']()
  >>> ctrl = browser.getControl

  >>> browser.open(testing.BASE_URL + '/@@login')
  >>> "Log in" in browser.contents
  True
  >>> ctrl("Username or email").value = "admin"
  >>> ctrl("Password").value = "secret"
  >>> ctrl(name="submit").click()
  >>> "Welcome, Administrator" in browser.contents
  True

Add a blog
----------

  >>> browser.open(testing.BASE_URL + '/@@add_blog')
  >>> ctrl("Title").value = "New Blog"
  >>> ctrl("Body").value = "This is the new blog"
  >>> ctrl("save").click()
  >>> "Successfully added item" in browser.contents
  True
  >>> browser.url == testing.BASE_URL + '/new-blog/'
  True


Add blogentries
---------------

  >>> browser.open(testing.BASE_URL + '/new-blog/@@add_blogentry')
  >>> ctrl("Title").value = "First blog entry"
  >>> ctrl("Body").value = "And I like to say..."
  >>> ctrl("Date").value = "2012-07-31 05:00:00"
  >>> ctrl("save").click()
  >>> "Successfully added item" in browser.contents
  True

  >>> browser.open(testing.BASE_URL + '/new-blog/@@add_blogentry')
  >>> ctrl("Title").value = "Second blog entry"
  >>> ctrl("Body").value = "rumoring around a bit"
  >>> ctrl("Date").value = "2012-07-31 06:00:00"
  >>> ctrl("save").click()
  >>> "Successfully added item" in browser.contents
  True


View blog and blog entry
------------------------

  >>> browser.open(testing.BASE_URL + '/new-blog/')
  >>> "First blog entry" in browser.contents
  True
  >>> "Jul 31, 2012" in browser.contents
  True
  >>> "And I like to say..." in browser.contents
  True
  >>> pos = browser.contents.index
  >>> pos("Second blog entry") < pos("First blog entry")
  True
  >>> browser.getLink("Second blog entry").click()
  >>> "rumoring around a bit" in browser.contents
  True


Edit blog and blog entry and verify the changes
-----------------------------------------------

  >>> browser.open(testing.BASE_URL + '/new-blog/@@edit')
  >>> ctrl("Title").value = "This is the Blog"
  >>> ctrl("Body").value = "Hello, I am a blog"
  >>> ctrl("save").click()

  >>> browser.open(testing.BASE_URL + '/new-blog/first-blog-entry/@@edit')
  >>> ctrl("Title").value = "I was the first blog entry"
  >>> ctrl("save").click()

  >>> browser.open(testing.BASE_URL + '/new-blog/')
  >>> "Hello, I am a blog" in browser.contents
  True
  >>> "First blog entry" in browser.contents
  False
  >>> "I was the first blog entry" in browser.contents
  True
  >>> "And I like to say..." in browser.contents
  True


Private blog entries should not be shown in the blog overview
-------------------------------------------------------------

  >>> browser.open(testing.BASE_URL + '/new-blog/')
  >>> browser.getLink("Make Public").click()
  >>> browser_anonymous = tools['Browser']()
  >>> browser_anonymous.open(testing.BASE_URL + '/new-blog/')
  >>> "Hello, I am a blog" in browser_anonymous.contents
  True
  >>> "I was the first blog entry" in browser_anonymous.contents
  False
  >>> "Second blog entry" in browser_anonymous.contents
  False

  >>> browser.open(testing.BASE_URL + '/new-blog/first-blog-entry')
  >>> browser.getLink("Make Public").click()
  >>> browser_anonymous.open(testing.BASE_URL + '/new-blog/')
  >>> "I was the first blog entry" in browser_anonymous.contents
  True
  >>> "Second blog entry" in browser_anonymous.contents
  False


Check the addon is locale aware
-------------------------------

  >>> tools_de = testing.setUpFunctional(
  ...     **{'kotti.configurators': 'kotti_blog.kotti_configure',
  ...        'pyramid.default_locale_name': 'de'})
  >>> browser_de = tools_de['Browser']()
  >>> ctrl_de = browser_de.getControl
  >>> browser_de.open(testing.BASE_URL + '/@@login')
  >>> ctrl_de("Benutzername oder E-Mail").value = "admin"
  >>> ctrl_de("Passwort").value = "secret"
  >>> ctrl_de(name="submit").click()

  >>> browser_de.open(testing.BASE_URL + '/@@add_blog')
  >>> ctrl_de("Titel").value = "Neuer Blog"
  >>> ctrl_de("Inhalt").value = "Das ist der neue Blog"
  >>> ctrl_de(name="save").click()

  >>> browser_de.open(testing.BASE_URL + '/neuer-blog/@@add_blogentry')
  >>> ctrl_de("Titel").value = "Erster Blogeintrag"
  >>> ctrl_de("Inhalt").value = "Also, ich sag mal..."
  >>> ctrl_de("Date").value = "2012-07-31 05:00:00"
  >>> ctrl_de(name="save").click()

  >>> "Jul 31, 2012" in browser_de.contents
  False
  >>> "31.07.2012" in browser_de.contents
  True
