The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

CellBIS::SQL::Abstract::Test - A part of Unit Testing

SYNOPSIS

  use CellBIS::SQL::Abstract::Test;
  
  # Initialization for SQLite
  my $test = CellBIS::SQL::Abstract::Test->new(table => 'users');
  unless (-d $test->dir) { mkdir $test->dir }
  
  $backend = $test->backend;
  $db      = $backend->db;
  ok $db->ping, 'connected';
  
  # Initialization for MariaDB
  my $test = CellBIS::SQL::Abstract::Test->new(
    table => 'users',
    via   => 'mariadb',
    dsn   => 'mariadb://myuser:mypass@localhost:3306/mydbtest'
  );
  $backend = $test->backend;
  $db      = $backend->db;
  ok $db->ping, 'connected';
  
  # Initialization for PostgreSQL
  my $test = CellBIS::SQL::Abstract::Test->new(
    table => 'users',
    via   => 'pg',
    dsn   => 'posgresql://myuser:mypass@localhost:5432/mydbtest'
  );
  $backend = $test->backend;
  $db      = $backend->db;
  ok $db->ping, 'connected';

DESCRIPTION

This module is only a test instrument in SQLite, Mariadb, and PostgreSQL

ATTRIBUTES

CellBIS::SQL::Abstract::Test implements the following attributes.

table

  my $test = CellBIS::SQL::Abstract::Test->new(
    ...
    table => 'users',
    ...
  );
  
  $test->table('users'); # to defined table
  $test->table;          # to use get table

Information of table form CellBIS::SQL::Abstract::Test::Table

via and dsn

  # initialization for mariadb
  my $test = CellBIS::SQL::Abstract::Test->new(
    ...
    via => 'mariadb',
    dsn => 'mariadb://myuser:mypass@localhost:3306/mydbtest',
    ...
  );
  
  # initialization for postgresql
  my $test = CellBIS::SQL::Abstract::Test->new(
    ...
    via => 'pg',
    dsn => 'posgresql://myuser:mypass@localhost:3306/mydbtest',
    ...
  );
  
  # switch to mariadb
  $test->dsn('mariadb://myuser:mypass@localhost:3306/mydbtest');
  
  # switch to postgresql
  $test->dsn('posgresql://myuser:mypass@localhost:5432/mydbtest');
  

dsn attribute must be defined together with via attribute when initializing mariadb or postgresql. However, when initializing using sqlite, you don't need to use the via and dsn (Data Source Name) attributes.

backend

  $test->backend;
  $test->backend(Mojo::SQLite->new);
  $test->backend(Mojo::mysq->new);
  $test->backend(Mojo::Pg->new);

backend attribute only for initializing Mojo::SQLite, Mojo::mysql, and Mojo::Pg.

METHODS

CellBIS::SQL::Abstract::Test implements the following new ones

change_dbms

This method for change dbms from one to the other. For example from sqlite to mariadb or from mariadb to sqlite and vice versa.

  # switch to mariadb
  $test->dsn('mariadb://myuser:mypass@localhost:3306/mydbtest');
  $test->change_dbms('mariadb');
  
  # switch to postgresql
  $test->dsn('postgresql://myuser:mypass@localhost:5432/mydbtest');
  $test->change_dbms('pg');
  
  # switch back to sqlite
  $test->change_dbms('sqlite');
  unless (-d $test->dir) { mkdir $test->dir }

methods for tables query

The method here is to query tables, such as check, create, empty, and drop tables.

  $test->check_table;
  $test->create_table;
  $test->create_table_with_fk;
  $test->empty_table;
  $test->drop_table;
  
  # if use key hashref 'result'
  $test->check_table->{result};
  $test->create_table->{result};
  $test->create_table_with_fk->{result};
  $test->empty_table->{result};
  $test->drop_table->{result};
  
  # if use key hashref 'code'
  $test->check_table->{code};
  $test->create_table->{code};
  $test->create_table_with_fk->{code};
  $test->empty_table->{code};
  $test->drop_table->{code};

The output of this method is a hashref and contains key result and code.

AUTHOR

Achmad Yusri Afandi, yusrideb@cpan.org

COPYRIGHT AND LICENSE

Copyright (C) 2021 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.