Bb-Collaborate-V3

 view release on metacpan or  search on metacpan

t/soap-session-recurring.t  view on Meta::CPAN

#!perl -T
use warnings; use strict;
use Test::More tests => 13;
use Test::Fatal;

use lib '.';
use t::Bb::Collaborate::V3;

use Bb::Collaborate::V3;
use Bb::Collaborate::V3::Connection;
use Bb::Collaborate::V3::Session;

my $class = 'Bb::Collaborate::V3::Session' ;

SKIP: {

    my %result = t::Bb::Collaborate::V3->test_connection();
    my $auth = $result{auth};

    skip ($result{reason} || 'skipping live tests', 13)
	unless $auth;

    my $connection_class = $result{class};
    my $connection = $connection_class->connect(@$auth);
    Bb::Collaborate::V3->connection($connection);

    my $session_start = Elive::Util::next_quarter_hour();
    my $session_end = Elive::Util::next_quarter_hour( $session_start );

    my %session_schedule = (
	startTime => $session_start .'000',
	endTime => $session_end . '000',
	recurrenceCount => 3,
	recurrenceDays => 7,
    );

    my %session_opts = (
	sessionName => 'test session, generated by t/soap-session-recurring.t',
	creatorId => $connection->user,
	);

    my @sessions;
    is ( exception {@sessions = $class->insert({%session_schedule, %session_opts})} => undef, 'creation of recurring sessions - lives');

    ok(@sessions == 3, 'got three session occurences')
	or die "session is not recurring - aborting test";

    my $n;
    foreach (@sessions) {
	isa_ok($_, $class, "** session occurence ".++$n." **");
	foreach my $prop (grep {!/^password$/} sort keys %session_opts) {
	    is(uc $_->$prop, uc $session_opts{$prop}, "session $n, $prop as expected");
	}
    }

    my @start_times = map {substr($_->startTime, 0, -3)} @sessions;

    #
    # very approximate test on the dates being about a week apart. Allow
    # times to be out by over 1.5 hours due to daylight savings etc. 

    ok(t::Bb::Collaborate::V3::a_week_between($start_times[0], $start_times[1]),
		       "sessions 1 & 2 separated by one week (approx)");



( run in 1.940 second using v1.01-cache-2.11-cpan-54e63673c56 )