Publish manager
===============

Let's create an Event

>>> from plone.app.testing import setRoles
>>> from plone.app.testing import TEST_USER_ID
>>> portal = layer['portal']
>>> setRoles(portal, TEST_USER_ID, ['Manager'])
>>> evid = portal.invokeFactory('Event', 'event')
>>> event = portal[evid]

and check that is enabled for publishing

>>> from collective.socialpublisher.interfaces import IPublishable
>>> IPublishable.providedBy(event)
True

get the manager

>>> from collective.socialpublisher.interfaces import IPublishStorageManager
>>> manager = IPublishStorageManager(event, None)
>>> manager is None
False

storage must be a PersistentDict

>>> from persistent.dict import PersistentDict
>>> isinstance(manager.storage,PersistentDict)
True

and accounts must be an empty dict and text an empty string.

>>> manager.get_accounts()
{}
>>> manager.get_text()
''

We can save an account for a given publisher

>>> publisher = 'twitter'
>>> account_id = 'simahawk'
>>> manager.set_account(publisher,account_id)
>>> manager.get_account(publisher)
'simahawk'
>>> manager.get_accounts()
{'twitter': 'simahawk'}

let's add another publisher/account.

>>> publisher = 'facebook'
>>> account_id = 'simahawkfb'
>>> manager.set_account(publisher,account_id)
>>> manager.get_account(publisher)
'simahawkfb'
>>> manager.get_accounts()
{'twitter': 'simahawk', 'facebook': 'simahawkfb'}

We can also save the text to be published

>>> manager.set_text('foo bar')
>>> manager.get_text()
'foo bar'

Then we can hard reset the settings like this:

>>> manager._reset_storage()
>>> manager.get_accounts()
{}
>>> manager.get_text()
''
