Move SQL test files
This commit is contained in:
60
src/test/resources/sql/vote.sql
Normal file
60
src/test/resources/sql/vote.sql
Normal file
@@ -0,0 +1,60 @@
|
||||
do
|
||||
$$
|
||||
declare
|
||||
_citizen_id uuid := fixture_citizen('george');
|
||||
_citizen_id2 uuid := fixture_citizen('john');
|
||||
_article_id uuid := fixture_article(_citizen_id := _citizen_id);
|
||||
votes jsonb;
|
||||
votes_of_citizen json;
|
||||
votes_of_citizen_for_targets json;
|
||||
votes_total int;
|
||||
begin
|
||||
perform vote(
|
||||
reference => 'article'::regclass,
|
||||
_target_id => _article_id,
|
||||
_created_by_id => _citizen_id,
|
||||
_note => 1
|
||||
);
|
||||
assert (select count(*) = 1 from vote_for_article), 'vote must be inserted';
|
||||
assert (select note = 1 from vote_for_article limit 1), 'vote must be equal to 1';
|
||||
|
||||
perform vote(
|
||||
reference => 'article'::regclass,
|
||||
_target_id => _article_id,
|
||||
_created_by_id => _citizen_id,
|
||||
_note => -1
|
||||
);
|
||||
assert (select count(*) = 1 from vote_for_article), 'vote must be inserted';
|
||||
assert (select note = -1 from vote_for_article limit 1), 'vote must be equal to -1';
|
||||
|
||||
begin
|
||||
perform vote(
|
||||
reference => 'article'::regclass,
|
||||
_target_id => _article_id,
|
||||
_created_by_id => _citizen_id,
|
||||
_note => -10
|
||||
);
|
||||
assert false, 'vote must be throw exception if note is not -1, 0 or 1';
|
||||
exception when check_violation then
|
||||
end;
|
||||
|
||||
select count_vote('933b6a1b-50c9-42b6-989f-c02a57814ef9') into votes;
|
||||
assert ((votes->>'up')::int = 0), 'vote.up must be 0';
|
||||
|
||||
-- Test "find_votes_by_citizen"
|
||||
select resource, total into votes_of_citizen, votes_total from find_votes_by_citizen(_citizen_id2);
|
||||
assert (votes_total = 0), format('votes count for user %s must be 0, instead of %s', _citizen_id2, votes_total);
|
||||
|
||||
select resource, total into votes_of_citizen, votes_total from find_votes_by_citizen(_citizen_id);
|
||||
assert (votes_total = 1), format('votes count for user %s must be 1, instead of %s', _citizen_id, votes_total);
|
||||
assert ((votes_of_citizen#>>'{0,note}')::int = -1), format('the note must be -1, instead of %s', (votes_of_citizen#>>'{0,note}'));
|
||||
|
||||
-- test "find_citizen_votes_by_target_ids"
|
||||
select find_citizen_votes_by_target_ids(_citizen_id, array[_article_id]::uuid[]) into votes_of_citizen_for_targets;
|
||||
assert (json_array_length(votes_of_citizen_for_targets) = 1), format('the function must be return 1 vote, instead of %s', json_array_length(votes_of_citizen_for_targets));
|
||||
assert (votes_of_citizen_for_targets#>>'{0,target_id}' = _article_id::text), format('target_id of vote must be %s, instead of %s', _article_id, votes_of_citizen_for_targets#>>'{0,target_id}');
|
||||
|
||||
rollback;
|
||||
raise notice 'vote test pass';
|
||||
end;
|
||||
$$;
|
||||
Reference in New Issue
Block a user