The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DBD::Mock::Session::GenerateFixtures

SYNOPSIS

        # Case 1: Providing a pre-existing DBI database handle for genereting a mocked data files
        # with the test name
        my $mock_dumper = DBD::Mock::Session::GenerateFixtures->new({ dbh => $dbh });
        my $real_dbh = $mock_dumper->get_dbh();

        # Case 2: Read data from the same file as current test
        my $mock_dumper = DBD::Mock::Session::GenerateFixtures->new();
        my $dbh = $mock_dumper->get_dbh();
        # Your code using the mock DBD

        # Case 3: Read data from a coustom file
        my $mock_dumper = DBD::Mock::Session::GenerateFixtures->new({ file => 'path/to/fixture.json' });
        my $dbh = $mock_dumper->get_dbh();
        # Your code using the mock DBD

        # Case 4: Providing an array reference containing mock data
        my $mock_dumper = DBD::Mock::Session::GenerateFixtures->new({ data => \@mock_data });
        my $dbh = $mock_dumper->get_dbh();
        # Your code using the mock DBD

DESCRIPTION

When a real DBI database handle ($dbh) is provided, the module generates DBD::Mock::Session data and stores it in a JSON file. After the data is generated, remove the 'dbh' argument from the constructor, and it will use the previously generated data to create a 'DBD::Mock::Session' database handle. Mocked data can also be loaded from a custom file or as a data structure. This is not a part of the DBD::Mock::Session distribution; it's just a wrapper around it."

METHODS

new(\%args_for)

Constructor method to create a new DBD::Mock::Session::GenerateFixtures object.

Accepts an optional hash reference \%args_for with the following keys:

  • file: File path to the fixture file containing mocked data.

  • data: Reference to an array containing mock data.

  • dbh: Database handle used for reading the data required to genereate a mocked dbh. This should used first time you are runnig the tests.

get_dbh()

Returns the mocked database handle object.

get_override_object()

Returns the override object used for mocking DBI methods.

restore_all()

Restores all overridden DBI methods to their original implementations.

This method is used to revert all DBI method overrides set up for mocking database interactions back to their original implementations.

Returns the current object.

PRIVATE METHODS

These methods are not intended to be called directly from outside the module.

_initialize(\%args_for)

Initializes the DBD::Mock::Session::GenerateFixtures object with the provided arguments.

_set_mock_dbh(\@data)

Sets up the mocked database handle based on the provided data.

_override_dbi_methods()

Overrides various DBI methods for mocking database interactions.

_override_dbi_execute($dbi_execute)

Overrides the execute method of DBI::st in order to capture the sql statement, bound_params and column names.

_override_dbi_bind_param($bind_param)

Overrides the bind_param method of DBI::st in order to capture the bound params.

_override_dbi_fetchrow_hashref($fetchrow_hashref)

Overrides the fetchrow_hashref method of DBI::st in order to capture the rows returned.

_override_dbi_fetchrow_arrayref($fetchrow_arrayref)

Overrides the fetchrow_arrayref method of DBI::st in order to capture the rows returned.

_override_dbi_fetchrow_array($fetchrow_array)

Overrides the fetchrow_array method of DBI::st in order to capture the rows returned.

_override_dbi_selectall_arrayref($selectall_arrayref)

Overrides the selectall_arrayref method of DBI::db in order to capture the rows returned.

_override_dbi_selectall_hashref($selectall_hashref)

Overrides the selectall_hashref method of DBI::db in order to capture the rows returned.

_override_dbi_selectcol_arrayref($selectcol_arrayref)

Overrides the selectcol_arrayref method of DBI::db in order to capture the rows returned.

_override_dbi_selectrow_array($selectrow_array)

Overrides the selectrow_array method of DBI::db in order to capture the rows returned.

_override_dbi_selectrow_arrayref($selectrow_arrayref)

Overrides the selectrow_arrayref method of DBI::db in order to capture the rows returned.

_override_dbi_selectrow_hashref($selectrow_hashref)

Overrides the selectrow_hashref method of DBI::db in order to capture the rows returned.

_get_current_record_column_names()

Returns the column names of the current record being processed.

_process_mock_data(\@data)

Processes the mock data before setting up the mocked database handle.

_set_fixtures_file($file)

Sets the file path for the fixture file containing mocked data.

_validate_args(\%args_for)

Validates the arguments passed to the constructor.

_write_to_file()

Writes the current results to the fixture file if override flag is set.

_set_hashref_response($sth, $retval)

Sets the response for hash references fetched from the database.

Support

Bugs should be reported via the CPAN bug tracker at

https://rt.cpan.org/Public/Bug/Report.html?Queue=DBD-Mock-Session-GenerateFixtures

For other issues, contact the author.

REPOSITORY

DBD-Fixtures

AUTHOR

Dragos Trif <drd.trif@gmail.com>

LICENSE

This library is free software and may be distributed under the same terms as perl itself.