class TempDatabase (View source)

Traits

A class that can be instantiated or replaced via DI

Methods

static Injectable
create(array ...$args)

An implementation of the factory method, allows you to create an instance of a class

static Injectable
singleton(string $class = null)

Creates a class instance by the "singleton" design pattern.

__construct(string $name = 'default')

Create a new temp database

bool
isUsed()

Returns true if we are currently using a temporary database

bool
supportsTransactions()

No description

startTransaction()

Start a transaction for easy rollback after tests

bool
rollbackTransaction()

Rollback a transaction (or trash all data if the DB doesn't support databases

kill()

Destroy the current temp database

clearAllData()

Remove all content from the temporary database.

string
build()

Create temp DB without creating extra objects

deleteAll()

Clear all temp DBs on this connection

resetDBSchema(array $extraDataObjects = [])

Reset the testing database's schema.

Details

static Injectable create(array ...$args)

An implementation of the factory method, allows you to create an instance of a class

This method will defer class substitution to the Injector API, which can be customised via the Config API to declare substitution classes.

This can be called in one of two ways - either calling via the class directly, or calling on Object and passing the class name as the first parameter. The following are equivalent: $list = DataList::create(SiteTree::class); $list = SiteTree::get();

Parameters

array ...$args

Return Value

Injectable

static Injectable singleton(string $class = null)

Creates a class instance by the "singleton" design pattern.

It will always return the same instance for this class, which can be used for performance reasons and as a simple way to access instance methods which don't rely on instance data (e.g. the custom SilverStripe static handling).

Parameters

string $class

Optional classname to create, if the called class should not be used

Return Value

Injectable

The singleton instance

__construct(string $name = 'default')

Create a new temp database

Parameters

string $name

DB Connection name to use

bool isUsed()

Returns true if we are currently using a temporary database

Return Value

bool

bool supportsTransactions()

Return Value

bool

startTransaction()

Start a transaction for easy rollback after tests

bool rollbackTransaction()

Rollback a transaction (or trash all data if the DB doesn't support databases

Return Value

bool

True if successfully rolled back, false otherwise. On error the DB is killed and must be re-created. Note that calling rollbackTransaction() when there is no transaction is counted as a failure, user code should either kill or flush the DB as necessary

kill()

Destroy the current temp database

clearAllData()

Remove all content from the temporary database.

string build()

Create temp DB without creating extra objects

Return Value

string

DB name

deleteAll()

Clear all temp DBs on this connection

Note: This will output results to stdout unless suppressOutput is set on the current db schema

resetDBSchema(array $extraDataObjects = [])

Reset the testing database's schema.

Parameters

array $extraDataObjects

List of extra dataobjects to build