#!/usr/bin/perl ########################################################################### # This tests the basic functionality of Froody::Response::Terse # # It does not feature conversion tests; Those are in rsp_convert.t ########################################################################### use strict; use warnings; # Test modules we might want to use: # use Test::DatabaseRow; use Test::Exception; use Devel::Peek; # start the tests use Test::More tests => 9; use_ok("Froody::Response"); use_ok("Froody::Response::Terse"); use_ok("Froody::Method"); # make a method my $method = Froody::Method->new(); $method->full_name("fotango.staff.getGroup"); $method->structure({ 'people' => { attr => ['group'], elts => [qw/person/], text => 1, }, 'people/person' => { elts => [qw/name/], attr => [qw/nick number/], multi => 1, }, 'people/person/name' => { text => 1, multi => 0, elts => [], attr => [] } }); $method->arguments({ 'group' => { multiple => 0, optional => 0, doc => 'The Group Name', type => 'scalar', #user defined type label. }}); my $terse = Froody::Response::Terse->new(); isa_ok($terse, "Froody::Response::Terse"); isa_ok($terse, "Froody::Response"); $terse->structure($method); $terse->content({ group => "frameworks", person => [ { nick => "clkao", number => "243", name => "Chia-liang Kao" }, { nick => "Trelane", number => "234", name => "Mark Fowler" }, { nick => "Nicholas", number => "238", name => "Nicholas Clark" }, { nick => "nnunley", number => "243", name => "Norman Nunley" }, { nick => "skugg", number => "214", name => "Stig Brautaset" }, { nick => "jerakeen", number => "235", name => "Tom Insam" }, ], -text => "Frameworks is a department of Fotango. We work on lots of\n". "software, including writing tools like Froody.", }); # let's try to render that my $bytes = $terse->render; ok(index( $bytes, 'Mark Fowler' ) > -1,"I'm in there") or Dump($bytes); ok(index( $bytes, 'Stig Brautaset' ) > -1,"Stig's in there") or Dump($bytes); ok(index( $bytes, ' -1,"xml works") or Dump($bytes); $terse->content({ group => "French military people that were in Bill & Ted's Excellent Adventure", person => [ { nick => "Napol\x{e9}on", number => "69", name => "Napol\x{e9}on Bonaparte" }, ], -text => "I don't think it's gonna work dude", }); $bytes = $terse->render; ok(index( $bytes, "Napol\303\251on Bonaparte" ) > -1,"Boney's fine") or Dump($bytes);