This repository has been archived on 2025-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
lwb6/legacyworlds-server-data/db-structure/tests/admin/constraints/defs/11001-empire-resources.sql
Emmanuel BENOîT 4e1bb91780 Resource database structures
* Added structures for resource definitions, natural resources
definitions, resource providers, empire resources and empire mining
settings (both empire-wide and planet-specific).

* Added a few common utility functions to the SQL test suite. These
functions allow test initialisation to be a little shorter.

* Added "MINE" production type and an associated building definition.
The production will not be added to the XML dump or to the output of the
planets summary page, as this is extremely temporary.
2011-12-19 11:57:08 +01:00

191 lines
No EOL
5.6 KiB
PL/PgSQL

/*
* Test constraints and foreign keys on emp.resources
*/
BEGIN;
/* We need to create a pair of resources and a pair of empires */
\i utils/strings.sql
\i utils/resources.sql
\i utils/accounts.sql
\i utils/naming.sql
SELECT _create_natural_resources( 2 , 'testResource' );
SELECT _create_emp_names( 2 , 'testUser' );
INSERT INTO emp.empires ( name_id , cash )
SELECT id , 0 FROM naming.empire_names;
/****** TESTS BEGIN HERE ******/
SELECT plan( 16 );
SELECT diag_test_name( 'Valid empire resources record' );
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed , empres_owed
) VALUES (
_get_emp_name( 'testUser1' ) , _get_string( 'testResource1' ) ,
1 , 1
);
SELECT lives_ok( '_test_this' );
DELETE FROM emp.resources;
DEALLOCATE ALL;
INSERT INTO emp.resources (
empire_id , resource_name_id
) VALUES (
_get_emp_name( 'testUser1' ) , _get_string( 'testResource1' )
);
SELECT diag_test_name( 'Default possessed value in empire resources record' );
SELECT results_eq(
$$ SELECT empres_possessed FROM emp.resources $$ ,
$$ VALUES ( 0::DOUBLE PRECISION ) $$
);
SELECT diag_test_name( 'Default owed value in empire resources record' );
SELECT results_eq(
$$ SELECT empres_owed FROM emp.resources $$ ,
$$ VALUES ( 0::DOUBLE PRECISION ) $$
);
DELETE FROM emp.resources;
SELECT diag_test_name( 'NULL empire identifier in empire resources record' );
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed , empres_owed
) VALUES (
NULL , _get_string( 'testResource1' ) ,
1 , 1
);
SELECT throws_ok( '_test_this' , 23502 );
DEALLOCATE ALL;
SELECT diag_test_name( 'Invalid empire identifier in empire resources record' );
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed , empres_owed
) VALUES (
_get_bad_emp_name( ) , _get_string( 'testResource1' ) ,
1 , 1
);
SELECT throws_ok( '_test_this' , 23503 );
DEALLOCATE ALL;
SELECT diag_test_name( 'NULL resource identifier in empire resources record' );
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed , empres_owed
) VALUES (
_get_emp_name( 'testUser1' ) , NULL ,
1 , 1
);
SELECT throws_ok( '_test_this' , 23502 );
DEALLOCATE ALL;
SELECT diag_test_name( 'Invalid resource identifier in empire resources record' );
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed , empres_owed
) VALUES (
_get_emp_name( 'testUser1' ) , _get_bad_string( ) ,
1 , 1
);
SELECT throws_ok( '_test_this' , 23503 );
DEALLOCATE ALL;
SELECT diag_test_name( 'Duplicate empire resources record' );
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed , empres_owed
) VALUES (
_get_emp_name( 'testUser1' ) , _get_string( 'testResource1' ) ,
1 , 1
);
EXECUTE _test_this;
SELECT throws_ok( '_test_this' , 23505 );
DEALLOCATE ALL;
SELECT diag_test_name( 'Empire resources record with same empire but different types of resources' );
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed , empres_owed
) VALUES (
_get_emp_name( 'testUser1' ) , _get_string( 'testResource2' ) ,
1 , 1
);
SELECT lives_ok( '_test_this' );
DEALLOCATE ALL;
SELECT diag_test_name( 'Empire resources record with different empires but same type of resources' );
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed , empres_owed
) VALUES (
_get_emp_name( 'testUser2' ) , _get_string( 'testResource1' ) ,
1 , 1
);
SELECT lives_ok( '_test_this' );
DEALLOCATE ALL;
DELETE FROM emp.resources;
INSERT INTO emp.resources (
empire_id , resource_name_id
) VALUES (
_get_emp_name( 'testUser2' ) , _get_string( 'testResource1' )
);
SELECT diag_test_name( 'Empire deletion succeeds when empire resources records are present' );
PREPARE _test_this AS
DELETE FROM emp.empires WHERE name_id = _get_emp_name( 'testUser2' );
SELECT lives_ok( '_test_this' );
SELECT diag_test_name( 'Empire deletion causes empire resources record deletion' );
SELECT is_empty( 'SELECT * FROM emp.resources' );
DEALLOCATE ALL;
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed
) VALUES (
_get_emp_name( 'testUser1' ) , _get_string( 'testResource1' ) , NULL
);
SELECT diag_test_name( 'NULL possessed value in empire resources record' );
SELECT throws_ok( '_test_this' , 23502 );
DEALLOCATE ALL;
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_possessed
) VALUES (
_get_emp_name( 'testUser1' ) , _get_string( 'testResource1' ) , -1
);
SELECT diag_test_name( 'Negative possessed value in empire resources record' );
SELECT throws_ok( '_test_this' , 23514 );
DEALLOCATE ALL;
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_owed
) VALUES (
_get_emp_name( 'testUser1' ) , _get_string( 'testResource1' ) , NULL
);
SELECT diag_test_name( 'NULL owed value in empire resources record' );
SELECT throws_ok( '_test_this' , 23502 );
DEALLOCATE ALL;
PREPARE _test_this AS
INSERT INTO emp.resources (
empire_id , resource_name_id , empres_owed
) VALUES (
_get_emp_name( 'testUser1' ) , _get_string( 'testResource1' ) , -1
);
SELECT diag_test_name( 'Negative owed value in empire resources record' );
SELECT throws_ok( '_test_this' , 23514 );
DEALLOCATE ALL;
SELECT * FROM finish( );
ROLLBACK;