def test_update_inherit(self):
        """ tests update inherit method

        We are owner of the portal, with inheritance we are also owner of
        the repo and dossier. If we disable role aquisition on context,
        we lose the role 'owner' on the context
        """

        register_event_recorder(ILocalRolesAcquisitionBlocked)
        register_event_recorder(ILocalRolesAcquisitionActivated)

        # We disable locale role aquisition on dossier
        self.view_dossier.update_inherit(False, reindex=False)
        last_event = get_last_recorded_event()
        self.assertTrue(ILocalRolesAcquisitionBlocked.providedBy(last_event))
        self.assertEquals(last_event.object, self.dossier)

        # we disable it again,it shouldn't fire a event because nothing changed
        self.view_dossier.update_inherit(False, reindex=False)
        self.assertEquals(last_event, get_last_recorded_event())

        # # We enable locale role aquisition on dossier
        self.view_dossier.update_inherit(True, reindex=False)
        # and check the fired event
        last_event = get_last_recorded_event()
        self.assertTrue(ILocalRolesAcquisitionActivated.providedBy(last_event))
        self.assertEquals(last_event.object, self.dossier)

        # we disable it again,it shouldn't fire a event because nothing changed
        self.view_dossier.update_inherit(True, reindex=False)
        self.assertEquals(last_event, get_last_recorded_event())
    def test_doesnt_get_fired_for_object_moved(self):
        self.login(self.regular_user)

        register_event_recorder(IObjectTouchedEvent)
        api.content.move(self.document, self.subdossier)

        event = get_last_recorded_event()
        self.assertIsNone(event)
    def test_gets_fired_on_checkout(self):
        self.login(self.regular_user)

        register_event_recorder(IObjectTouchedEvent)
        self.checkout_document(self.document)

        event = get_last_recorded_event()
        self.assertTrue(IObjectTouchedEvent.providedBy(event))
    def test_gets_fired_on_mail_added(self):
        self.login(self.regular_user)

        register_event_recorder(IObjectTouchedEvent)
        notify(ObjectAddedEvent(self.mail))

        event = get_last_recorded_event()
        self.assertTrue(IObjectTouchedEvent.providedBy(event))
    def test_gets_fired_on_object_modified(self):
        self.login(self.regular_user)

        register_event_recorder(IObjectTouchedEvent)
        notify(ObjectModifiedEvent(self.document))

        event = get_last_recorded_event()
        self.assertTrue(IObjectTouchedEvent.providedBy(event))
    def test_doesnt_get_fired_for_object_moved(self):
        self.login(self.regular_user)

        register_event_recorder(IObjectTouchedEvent)
        api.content.move(self.document, self.subdossier)

        event = get_last_recorded_event()
        self.assertIsNone(event)
    def test_gets_fired_on_mail_added(self):
        self.login(self.regular_user)

        register_event_recorder(IObjectTouchedEvent)
        notify(ObjectAddedEvent(self.mail_eml))

        event = get_last_recorded_event()
        self.assertTrue(IObjectTouchedEvent.providedBy(event))
    def test_gets_fired_on_checkout(self):
        self.login(self.regular_user)

        register_event_recorder(IObjectTouchedEvent)
        self.checkout_document(self.document)

        event = get_last_recorded_event()
        self.assertTrue(IObjectTouchedEvent.providedBy(event))
    def test_gets_fired_on_object_modified(self):
        self.login(self.regular_user)

        register_event_recorder(IObjectTouchedEvent)
        notify(ObjectModifiedEvent(self.document))

        event = get_last_recorded_event()
        self.assertTrue(IObjectTouchedEvent.providedBy(event))
    def test_update_role_settings(self):
        """ Test update_role_settings method
        """
        register_event_recorder(ILocalRolesModified)

        # If nothing has changed it needs to be reported accordingly
        changed = self.view_repo.update_role_settings([], False)
        self.assertFalse(changed)

        # We try to add the new local role 'publisher'
        new_settings = \
            [{'type': 'user', 'id': 'test_user_1_', 'roles': ['Publisher']}, ]

        changed = self.view_repo.update_role_settings(new_settings, False)
        self.assertTrue(changed)

        last_event = get_last_recorded_event()
        # check the event type
        self.assertTrue(ILocalRolesModified.providedBy(last_event))
        # check the event context
        self.assertEquals(last_event.object, self.repo)
        # check the stored localroles
        self.assertEquals(last_event.old_local_roles,
                          {'test_user_1_': ('Owner',)})
        self.assertEquals(last_event.new_local_roles,
                          (('test_user_1_', ('Owner', 'Publisher')),))

        # now we remvove the local role 'publisher'
        new_settings = \
            [{'type': 'user', 'id': 'test_user_1_', 'roles': []}, ]

        changed = self.view_repo.update_role_settings(new_settings, False)
        self.assertTrue(changed)

        # check event attributes
        last_event = get_last_recorded_event()
        self.assertTrue(ILocalRolesModified.providedBy(last_event))
        self.assertEquals(last_event.object, self.repo)
        self.assertEquals(last_event.old_local_roles,
                          {'test_user_1_': ('Owner', 'Publisher')})
        self.assertTrue(
            last_event.new_local_roles == (('test_user_1_', ('Owner',)),))
    def test_send_document_event(self, browser):
        intids = getUtility(IIntIds)
        dossier = create(Builder("dossier"))
        documents = [create(Builder("document").within(dossier).with_dummy_content()), ]

        register_event_recorder(IDocumentSent)
        transaction.commit()

        self.send_documents(dossier, documents)

        event = get_last_recorded_event()
        self.assertEquals(event.sender, TEST_USER_ID)
        self.assertEquals(event.receiver, TEST_FORM_DATA.get('extern_receiver'))
        self.assertEquals(event.subject, TEST_FORM_DATA.get('subject'))
        self.assertEquals(event.message, TEST_FORM_DATA.get('message'))
        self.assertEquals(event.intids, map(intids.getId, documents))
    def test_send_document_event(self, browser):
        intids = getUtility(IIntIds)
        dossier = create(Builder("dossier"))
        documents = [create(Builder("document").within(dossier).with_dummy_content()), ]

        register_event_recorder(IDocumentSent)
        transaction.commit()

        self.send_documents(dossier, documents)

        event = get_last_recorded_event()
        self.assertEquals(event.sender, TEST_USER_ID)
        self.assertEquals(event.receiver, TEST_FORM_DATA.get('extern_receiver'))
        self.assertEquals(event.subject, TEST_FORM_DATA.get('subject'))
        self.assertEquals(event.message, TEST_FORM_DATA.get('message'))
        self.assertEquals(event.intids, map(intids.getId, documents))