+$x = problem_list contest => 'rc';
+cmp_bag pbids, [qw/rca/], q/problem_list contest => 'rc'/;
+
+$x = problem_list contest => 'rc', solution => 1;
+ok exists $x->{beginner}[0]{solution}, q/problem_list contest => 'rc', solution => 1 has solution/;
+
+$x = problem_list owner => 'nobody';
+cmp_bag pbids, [], q/problem_list owner => 'nobody'/;
+
+$x = problem_entry 'arc';
+cmp_bag $x->{limits}, [{format => 'C', timeout => 0.1}, {format => 'CPP', timeout => 0.1}], 'problem_entry limits';
+is $x->{solution}, 'Sample Text', 'problem_entry has solution';
+
+$x = problem_entry 'rca', 'rc';
+ok !exists $x->{solution}, 'problem_entry during contest does not have solution';
+ok exists $x->{contest_start}, 'problem_entry during contest has contest_start ';
+
+$x = contest_list;
+is $x->{finished}[0]{id}, 'fc', 'contest_list fc is finished';
+is $x->{running}[0]{id}, 'rc', 'contest_list rc is running';
+is $x->{pending}[0]{id}, 'pc', 'contest_list pc is pending';
+
+$x = contest_entry 'fc';
+cmp_deeply $x, {id => 'fc', name => 'Finished contest', start => ignore, stop => ignore, owner => 'MGV', owner_name => undef, finished => bool (1), started => bool (1), description => undef}, 'contest_entry fc';
+
+$x = contest_full 'fc';
+ok exists $x->{editorial}, 'contest_full fc has editorial';
+
+ok contest_has_problem('rc', 'rca'), 'contest rc has problem rca';
+ok contest_has_problem('rc', 'arc'), 'contest rc does not have problem arc';
+
+sub jobids { [ map { $_->{id} } @{$x->{log}} ] }
+
+$x = job_list;
+cmp_bag jobids, [1..5], 'job_list';
+is $x->{current_page}, 1, 'current page is 1';
+is $x->{last_page}, 1, 'last page is 1';
+ok !exists $x->{previous_page}, 'there is no previous page';
+ok !exists $x->{next_page}, 'there is no next page';
+
+$x = job_list private => 1;
+cmp_bag jobids, [1..7], 'job_list private => 1';
+
+$x = job_list contest => 'fc';
+cmp_bag jobids, [1..3], 'job_list contest => fc';
+
+$x = job_list owner => 'MGV';
+cmp_bag jobids, [1], 'job_ids owner => MGV';
+
+$x = job_list problem => 'fca';
+cmp_bag jobids, [1..4], 'job_ids problem => fca';
+
+$x = job_list problem => 'fca', result => 1;
+cmp_bag jobids, [2], 'job_ids problem => fca, result => 1';
+
+$x = job_entry 1;
+is $x->{size}, 21, 'job_entry size';
+ok !exists $x->{source}, 'job_entry does not have source';
+is_deeply $x->{results}, [], 'job_entry results';
+
+$x = job_entry 7;
+ok !defined $x->{result}, 'job_entry 7 has NULL result';
+
+$x = job_full 1;
+ok exists $x->{source}, 'job_full has source';
+
+$x = standings 'fc';
+is_deeply $x, {
+ problems => [[fca => 'FC problem A']],
+ st => [
+ {rank => 1, user => 'MGV', user_name => undef, score => 50, scores => [50]},
+ {rank => 2, user => 'nobody', user_name => undef, score => 40, scores => [40]},
+ ]
+}, 'standings fc';