summaryrefslogtreecommitdiff
path: root/t/62-api.t
blob: 0e897f35d9bd44b50b1e2243d7178f2a151f6ce7 (plain)
  1. BEGIN {
  2. use LedgerSMB;
  3. use Test::More;
  4. use LedgerSMB::Template;
  5. use LedgerSMB::DBTest;
  6. }
  7. our $test_case_defs = {
  8. };
  9. if (defined $ENV{LSMB_TEST_DB}){
  10. if (defined $ENV{LSMB_NEW_DB}){
  11. $ENV{PGDATABASE} = $ENV{LSMB_NEW_DB};
  12. }
  13. if (!defined $ENV{PGDATABASE}){
  14. die "Oops... LSMB_TEST_DB set but no db selected!";
  15. }
  16. plan 'no_plan';
  17. } else {
  18. plan skip_all => 'Skipping, LSMB_TEST_DB environment variable not set.';
  19. }
  20. do 't/data/62-request-data'; # Import test case hashes
  21. for (qw( admin.pl drafts.pl login.pl payment.pl
  22. report.pl employee.pl menu.pl vendor.pl
  23. customer.pl inventory.pl migration.pl recon.pl
  24. vouchers.pl)){
  25. do "$_";
  26. } # Import new code namespaces
  27. my $dbh = LedgerSMB::DBTest->connect("dbi:Pg:dbname=$ENV{PGDATABASE}", undef, undef);
  28. print scalar @$test_request_data ." test case scenarios defined";
  29. for my $test (@$test_request_data){
  30. if (lc $test->{_codebase} eq 'old'){
  31. old_code_test::_load_script($test->{module});
  32. $old_code_test::form = new Form();
  33. for (keys (%$test)){
  34. $form->{$_} = $test->{$_};
  35. }
  36. ok(eval ("old_code_test::$test->{action}()"),
  37. "$test->{_test_id}: Action Successful");
  38. } else {
  39. my $request = LedgerSMB->new();
  40. $request->merge($test);
  41. my $script = $test->{module};
  42. $script =~ s/\.pl$//;
  43. ok(eval "LedgerSMB::Scripts::$script::$request->{action}(\$request)");
  44. }
  45. for (@{$test_case_defs->{"$test->{_test_id}"}}){
  46. &$_;
  47. }
  48. ok($dbh->rollback, "$test->{_test_id}: rollback");
  49. }
  50. package LedgerSMB::Template;
  51. # Don't render templates. Just return so we can run tests on data structures.
  52. sub render {
  53. return 1;
  54. }
  55. package old_code_test;
  56. # Keeps old code isolated in a different namespace, and provides for reasonable
  57. # reload facilities.
  58. our $form;
  59. sub _load_script {
  60. do "bin/arapprn.pl";
  61. do "bin/arap.pl";
  62. do "bin/io.pl";
  63. do "bin/$1[0]";
  64. }