class TempDatabase (View source)

Traits

A class that can be instantiated or replaced via DI

Properties

protected string $name

Connection name

Methods

public static 
create(mixed ...$args)

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

public static 
singleton(string $class = null)

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

public
__construct(string $name = 'default')

Create a new temp database

protected
bool
isDBTemp(string $name)

Check if the given name matches the temp_db pattern

protected
getConn()

No description

public
bool
isUsed()

Returns true if we are currently using a temporary database

public
bool
supportsTransactions()

No description

public
startTransaction()

Start a transaction for easy rollback after tests

public
bool
rollbackTransaction()

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

public
kill()

Destroy the current temp database

public
clearAllData()

Remove all content from the temporary database.

public
string
build()

Create temp DB without creating extra objects

protected
rebuildTables(array $extraDataObjects = [])

Rebuild all database tables

public
deleteAll()

Clear all temp DBs on this connection

public
resetDBSchema(array $extraDataObjects = [])

Reset the testing database's schema.

Details

static Injectable create(mixed ...$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

mixed ...$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

protected bool isDBTemp(string $name)

Check if the given name matches the temp_db pattern

Parameters

string $name

Return Value

bool

protected Database getConn()

No description

Return Value

Database

bool isUsed()

Returns true if we are currently using a temporary database

Return Value

bool

bool supportsTransactions()

No description

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

protected rebuildTables(array $extraDataObjects = [])

Rebuild all database tables

Parameters

array $extraDataObjects

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