Exemple #1
0
def createDatabase(store):
    """
    Make a L{Person} in the given store.
    """
    organizer = Organizer(store=store)
    person = Person(store=store, organizer=organizer, name=NAME)
    person.created = CREATED
    def testMostRecentMessages(self):
        s = Store()

        o = Organizer(store=s)
        installOn(o, s)

        def makePerson(name, address):
            return EmailAddress(store=s,
                                address=address,
                                person=Person(store=s,
                                              organizer=o,
                                              name=name)).person

        p11 = makePerson(u'11 Message Person', u'11@person')
        p2  = makePerson(u'2 Message Person', u'2@person')

        def makeMessages(n, email):
            return list(reversed(list(
                        testMessageFactory(store=s,
                                           subject=u'Message %d' % (i,),
                                           sender=email,
                                           spam=False,
                                           receivedWhen=Time())
                        for i in xrange(n))))

        p11messages = makeMessages(11, u'11@person')
        p2messages  = makeMessages(2, u'2@person')

        lister = MessageLister(store=s)

        getMessages = lambda person, count: list(
            lister.mostRecentMessages(person, count))

        self.assertEquals(getMessages(p2, 3), p2messages)
        self.assertEquals(getMessages(p2, 2), p2messages)
        self.assertEquals(getMessages(p2, 1), p2messages[:-1])

        self.assertEquals(getMessages(p11, 12), p11messages)
        self.assertEquals(getMessages(p11, 11), p11messages)
        self.assertEquals(getMessages(p11, 10), p11messages[:-1])

        p11messages[0].trainSpam()

        self.assertEquals(getMessages(p11, 11), p11messages[1:])

        # Used to be:
        # p11messages[1].draft = True
        # but this is now a nonsensical transition.
        p11messages[1].trainSpam()

        self.assertEquals(getMessages(p11, 11), p11messages[2:])

        p11messages[2].moveToTrash()

        self.assertEquals(getMessages(p11, 11), p11messages[3:])
 def test_getPeople(self):
     """
     L{Inbox.getPeople} should return all L{Person} items in the store,
     sorted in the naive alphabetical way.
     """
     organizer = Organizer(store=self.store)
     installOn(organizer, self.store)
     organizer.storeOwnerPerson.name = u'Carol'
     bob = Person(store=self.store, organizer=organizer, name=u'Bob')
     self.assertEquals(list(self.inbox.getPeople()),
                       [bob, organizer.storeOwnerPerson])
    def setUp(self):
        """
        Extend L{_MessageRetrievalMixin.setUp} to also install an
        L{Organizer}, L{Person} and L{EmailAddress}, and an L{Message} from
        that person
        """
        super(MessagesByPersonRetrievalTestCase, self).setUp()

        self.organizer = Organizer(store=self.store)
        installOn(self.organizer, self.store)

        self.person = Person(store=self.store,
                             organizer=self.organizer,
                             name=u'The Person')

        EmailAddress(store=self.store,
                     address=u'the@person',
                     person=self.person)

        self.messageFromPerson = testMessageFactory(store=self.store,
                                                    read=False,
                                                    spam=False,
                                                    receivedWhen=Time(),
                                                    sender=u'the@person')
    def test_addPerson(self):
        """
        Test that adding a person via the Quotient version of
        C{AddPersonFragment} works.
        """
        def keyword(contactType):
            return contactType.uniqueIdentifier().encode('ascii')

        store = Store()
        self.organizer = Organizer(store=store)
        installOn(self.organizer, store)
        addPersonFrag = AddPersonFragment(self.organizer)
        name = u'Captain P.'
        email = u'foo@bar'
        fragment = addPersonFrag.addPerson(name, email)
        self.assertTrue(isinstance(fragment, PersonFragment))
        person = fragment.person
        self.assertIdentical(
            store.findUnique(
                Person,
                Person.storeID != self.organizer.storeOwnerPerson.storeID),
            person)
        self.assertEqual(person.name, name)
        self.assertEqual(person.getEmailAddress(), email)
Exemple #6
0
"""
An interactive demonstration of various people-related functionality.

Run this test like this::
    $ twistd -n athena-widget --element=xmantissa.test.acceptance.people.{editperson,addperson}
    $ firefox http://localhost:8080/
"""

from axiom.store import Store
from axiom.dependency import installOn

from xmantissa.people import Organizer, EditPersonView, AddPersonFragment

store = Store()
organizer = Organizer(store=store)
installOn(organizer, store)
person = organizer.createPerson(u'alice')


def editperson():
    """
    Create a database with a Person in it and return the L{EditPersonView} for
    that person.
    """
    return EditPersonView(person)


def addperson():
    """
    Create a database with an L{Organizer} in it and return a
    L{AddPersonFragment} wrapped around the organizer.
Exemple #7
0
 def makeOrganizer(self):
     """
     Return an L{Organizer}.
     """
     return Organizer(store=Store())
Exemple #8
0
def createDatabase(s):
    Organizer(store=s).installOn(s)
    MessageLister(store=s).installOn(s)
Exemple #9
0
def createDatabase(s):
    installOn(Organizer(store=s), s)
Exemple #10
0
def createDatabase(s):
    Organizer(store=s)
Exemple #11
0
"""
An interactive demonstration of various people-related functionality.

Run this test like this::
    $ twistd -n athena-widget --element=xmantissa.test.acceptance.people.{editperson,addperson}
    $ firefox http://localhost:8080/
"""

from axiom.store import Store
from axiom.dependency import installOn

from xmantissa.people import Organizer, EditPersonView, AddPersonFragment

store = Store()
organizer = Organizer(store=store)
installOn(organizer, store)
person = organizer.createPerson(u'alice')

def editperson():
    """
    Create a database with a Person in it and return the L{EditPersonView} for
    that person.
    """
    return EditPersonView(person)



def addperson():
    """
    Create a database with an L{Organizer} in it and return a
    L{AddPersonFragment} wrapped around the organizer.