NAME

Mojo::Hakkefuin::Test::Backend - A part of Unit Testing

SYNOPSIS

use Mojo::Hakkefuin::Test::Backend

# Initialization for SQLite
my $btest = Mojo::Hakkefuin::Test::Backend->new(
  via => 'sqlite',
  dir => '/home/user/mojo/app/t/path',
);
$backend = $btest->backend;
$db      = $backend->sqlite->db;
ok $db->ping, 'SQLite connected';

# Initialization for MariaDB/MySQL
my $btest = Mojo::Hakkefuin::Test::Backend->new(
  via => 'mariadb',
  dir => 'migrations',
  dsn => 'mariadb://username:password@hostname/database'
);
my $btest = Mojo::Hakkefuin::Test::Backend->new(
  via => 'mysql',
  dir => 'migrations',
  dsn => 'mysql://username:password@hostname/database'
);
$backend = $btest->backend;
$db      = $backend->mariadb->db;
ok $db->ping, 'MariaDB connected';

# Initialization for PostgreSQL
my $btest = Mojo::Hakkefuin::Test::Backend->new(
  via => 'pg',
  dir => 'migrations',
  dsn => 'postgresql://username:password@hostname/database'
);
$backend = $btest->backend;
$db      = $backend->pg->db;
ok $db->ping, 'PostgreSQL connected';

# Switch from another Backend
my $btest = Mojo::Hakkefuin::Test::Backend->new(
  via => 'sqlite',
  dir => '/home/user/mojo/app/t/path',
);
$backend = $btest->backend;
$db      = $backend->sqlite->db;
ok $db->ping, 'SQLite connected';

$btest->via('mysql');
$btest->dsn('mariadb://username:password@hostname/database');
$btest->load_backend;
$backend = $btest->backend;
$db      = $backend->mariadb->db;
ok $db->ping, 'MariaDB connected';

$btest->via('mariadb');
$btest->dsn('mariadb://username:password@hostname/database');
$btest->load_backend;
$backend = $btest->backend;
$db      = $backend->mariadb->db;
ok $db->ping, 'MariaDB connected';

$btest->via('pg');
$btest->dsn('postgresql://username:password@hostname/database');
$btest->load_backend;
$backend = $btest->backend;
$db      = $backend->pg->db;
ok $db->ping, 'PostgreSQL connected';

DESCRIPTION

This module is only for unit testing purposes to test each backend.

ATTRIBUTES

Mojo::Hakkefuin::Test::Backend inherits all attributes from Mojo::Hakkefuin::Backend and implements the following new ones.

via

 # When initialization Module - Use SQLite
 my $btest = Mojo::Hakkefuin::Test::Backend->new(
   ....
   via => 'sqlite',
   ...
 );
 
 # When initialization Module - Use MariaDB/MySQL
 my $btest = Mojo::Hakkefuin::Test::Backend->new(
   ....
   via => 'mariadb',
   ...
 );
 # or
 my $btest = Mojo::Hakkefuin::Test::Backend->new(
   ....
   via => 'mysql',
   ...
 );
 
 # When initialization Module - Use PostgreSQL
 my $btest = Mojo::Hakkefuin::Test::Backend->new(
   ....
   via => 'pg',
   ...
 );

 # use as a method
 $btest->via;
 $btest->via('sqlite');
 $btest->via('mariadb');
 $btest->via('mysql');
 $btest->via('pg');

Specify of backend via MariaDB/MySQL or SQLite or PostgreSQL. This attribute by default contains <sqlite>.

dir

# Example use as a config
my $backend = Mojo::Hakkefuin::Backend::mariadb->new(
  ...
  dir => '/home/user/mojo/app/path/',
  ...
);

# use as a method
my $backend = $backend->dir;
$backend->dir('/home/user/mojo/app/path/');

METHODS

Mojo::Hakkefuin::Test::Backend inherits all methods from Mojo::Hakkefuin::Backend and implements the following new ones.

load_backend

$btest->load_backend;

This method will be used after changing the backend using the "via" attribute.

example_data

$btest->example_data($identify);

To generate example data Cookies and CSRF hash.

new

my $btest = Mojo::Hakkefuin::Test::Backend->new(\%attr);

Construct a new Mojo::Hakkefuin::Test::Backend object either from "ATTRIBUTES".

AUTHOR

Achmad Yusri Afandi, yusrideb@cpan.org

COPYRIGHT AND LICENSE

Copyright (C) 2023 by Achmad Yusri Afandi

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.