The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;

use constant NUM_TESTS => 5;

use Test::More tests => NUM_TESTS;
use Test::Exception;

use File::Basename;
use lib File::Basename::dirname(__FILE__)."/../../../lib";
use lib File::Basename::dirname(__FILE__)."/../..";

use List::Util qw(shuffle);

use URT; # dummy namespace

my @data_sources = map { $_->get() } qw(UR::DataSource::Default URT::DataSource::SomeSQLite URT::DataSource::SomeFile URT::DataSource::SomeOracle);

#Default DataSource must be last
#Oracle can_savepoint, so its DataSource should come after the others
#Other DataSources should be sorted on name
my @expected_order = @data_sources[2,1,3,0];

for (1..NUM_TESTS) {
    my @ordered_data_sources = UR::Context::_order_data_sources_for_saving(shuffle @data_sources);
    is_deeply(\@ordered_data_sources, \@expected_order, 'datasources are ordered as expected');
}