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/040-functions/045-empire-mining/030-mset-update-apply.sql
Emmanuel BENOîT d38576a5cf Empire mining settings
* Modified mining settings stored procedures to use text identifiers
instead of numeric identifiers

* Added DAO for mining settings and controller for resource operations

* Added UpdateEmpireMiningSettingsCommand and associated command
delegate. The command always returns NullResponse.

* Overview page templates split into multiple files for clarity, added
priority update form to the empire economy view and associated web
server handler
2012-02-05 10:10:43 +01:00

118 lines
3.7 KiB
PL/PgSQL

/*
* Test the emp.mset_update_apply() function
*/
BEGIN;
/*
* Create a pair of strings
*/
INSERT INTO defs.strings (name) VALUES ( 'a' ) , ( 'b' );
/*
* Remove foreign keys from the empire mining settings table, insert some
* data into it.
*/
ALTER TABLE emp.mining_settings
DROP CONSTRAINT fk_empmset_empire ,
DROP CONSTRAINT fk_empmset_resource;
INSERT INTO emp.mining_settings ( empire_id , resource_name_id )
SELECT 1 , id
FROM defs.strings
WHERE name IN ( 'a' , 'b' );
/* Create the temporary table */
CREATE TEMPORARY TABLE mset_update(
empire_id INT ,
resource_name TEXT ,
empmset_weight INT
) ON COMMIT DROP;
INSERT INTO mset_update VALUES ( 1 , 'a' , 0 ) , ( 1 , 'b' , 4 );
/***** TESTS BEGIN HERE *****/
SELECT plan( 8 );
SELECT diag_test_name( 'emp.mset_update_apply() - Applying valid empire update' );
SELECT ok( emp.mset_update_apply( ) );
SELECT diag_test_name( 'emp.mset_update_apply() - Empire update results' );
SELECT set_eq(
$$ SELECT name , empmset_weight
FROM emp.mining_settings
INNER JOIN defs.strings
ON resource_name_id = id $$ ,
$$ VALUES ( 'a' , 0 ) , ( 'b' , 4 ) $$
);
/* Reset temporary table and settings */
DELETE FROM mset_update;
DELETE FROM emp.mining_settings;
INSERT INTO emp.mining_settings ( empire_id , resource_name_id )
SELECT 1 , id
FROM defs.strings
WHERE name IN ( 'a' , 'b' );
INSERT INTO mset_update VALUES ( 1 , 'a' , -1 ) , ( 1 , 'b' , 4 );
SELECT diag_test_name( 'emp.mset_update_apply() - Applying invalid empire update' );
SELECT ok( NOT emp.mset_update_apply( ) );
SELECT diag_test_name( 'emp.mset_update_apply() - Invalid empire update results' );
SELECT set_eq(
$$ SELECT name , empmset_weight
FROM emp.mining_settings
INNER JOIN defs.strings
ON resource_name_id = id $$ ,
$$ VALUES ( 'a' , 2 ) , ( 'b' , 2 ) $$
);
/* Re-create the temporary table to store planet mining settings, remove
* constraints from the planet mining settings table, insert data into
* both.
*/
ALTER TABLE emp.planet_mining_settings
DROP CONSTRAINT fk_emppmset_empire ,
DROP CONSTRAINT fk_emppmset_resource;
INSERT INTO emp.planet_mining_settings ( empire_id , planet_id , resource_name_id )
SELECT 1 , 1 , id
FROM defs.strings
WHERE name IN ( 'a' , 'b' );
DROP TABLE mset_update;
CREATE TEMPORARY TABLE mset_update(
empire_id INT ,
planet_id INT ,
resource_name TEXT ,
empmset_weight INT
) ON COMMIT DROP;
INSERT INTO mset_update VALUES ( 1 , 1 , 'a' , 0 ) , ( 1 , 1 , 'b' , 4 );
SELECT diag_test_name( 'emp.mset_update_apply() - Applying valid planet update' );
SELECT ok( emp.mset_update_apply( ) );
SELECT diag_test_name( 'emp.mset_update_apply() - Planet update results' );
SELECT set_eq(
$$ SELECT name , emppmset_weight
FROM emp.planet_mining_settings
INNER JOIN defs.strings
ON resource_name_id = id $$ ,
$$ VALUES ( 'a' , 0 ) , ( 'b' , 4 ) $$
);
/* Reset temporary table and settings */
DELETE FROM mset_update;
DELETE FROM emp.planet_mining_settings;
INSERT INTO emp.planet_mining_settings ( empire_id , planet_id , resource_name_id )
SELECT 1 , 1 , id
FROM defs.strings
WHERE name IN ( 'a' , 'b' );
INSERT INTO mset_update VALUES ( 1 , 1 , 'a' , -1 ) , ( 1 , 1 , 'b' , 4 );
SELECT diag_test_name( 'emp.mset_update_apply() - Applying invalid planet update' );
SELECT ok( NOT emp.mset_update_apply( ) );
SELECT diag_test_name( 'emp.mset_update_apply() - Invalid planet update results' );
SELECT set_eq(
$$ SELECT name , emppmset_weight
FROM emp.planet_mining_settings
INNER JOIN defs.strings
ON resource_name_id = id $$ ,
$$ VALUES ( 'a' , 2 ) , ( 'b' , 2 ) $$
);
SELECT * FROM finish( );
ROLLBACK;