Cassandane::TestEntity
NAME
Cassandane::TestEntity - the test entity system, for making test data easily
OVERVIEW
The "test entity" system is a couple of things that work together to make it easy to set up the test data you need to test Cyrus. Those things are:
Cassandane::Instance, which represents an instance of Cyrus. From an
instance, you can create instances of...
Cassandane::TestUser, which makes it easy to get protocol clients for a given user -- but also lets you create test data with the various test entity factories.
The entity factories are objects that perform the role
Cassandane::TestEntity::Role::Factory. You can generally get them by
calling a plural-noun-named method on a TestUser. For example, to get the
factory for the Mailbox type, you can call $user->mailboxes.
A factory is there to help you find, retrieve, and create instances. For
example, given a mailbox id (like PN1-) you can call ->get($id) on
the factory to get back the instance object. (More on those below.) Factories
always provide get, and also create. The create method will create a new
instance. Under the hood, it calls the Whatever/set JMAP method to create
an object, providing defaults for any properties where it's required.
Factories often provide more methods, like inbox on the mailboxes factory to
get a mailbox instance object for the user's Inbox.
Instances are objects that perform the role
Cassandane::TestEntity::Role::Instance. Each one represents a single object
in a JMAP datatype, like an email or a calendar. They always have an idmethod, and often many other accessors for common properties. You can call
those methods to read or update their properties, or you can call the updatemethod. Updates become Whatever/set calls.
Instances often have more useful behavior for datatype-specific actions. For
example, you can call new_email on a mailbox instance to create an email in
that mailbox. These will be documented in the module for that datatype, which
will always be named in the form Cassandane::TestEntity::DataType::Whatever.