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
This commit is contained in:
Emmanuel BENOîT 2012-02-05 10:10:43 +01:00
parent 92dd01ffce
commit d38576a5cf
24 changed files with 1024 additions and 160 deletions
legacyworlds-server-data/db-structure/tests/admin/040-functions/045-empire-mining

View file

@ -23,7 +23,7 @@ BEGIN;
SELECT ok( NOT emp.mset_update_start( _get_bad_emp_name( ) ) );
SELECT diag_test_name( 'emp.mset_update_start( INT ) - Temporary table exists despite bad empire identifier' );
SELECT has_table( 'mset_update' );
DROP TABLE mset_update;
DROP TABLE IF EXISTS mset_update;
SELECT diag_test_name( 'emp.mset_update_start( INT ) - Return value on valid empire identifier' );

View file

@ -28,31 +28,31 @@ BEGIN;
SELECT ok( NOT emp.mset_update_start( _get_bad_emp_name( ) , _get_map_name( 'testPlanet1' ) ) );
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Temporary table exists despite bad empire identifier' );
SELECT has_table( 'mset_update' );
DROP TABLE mset_update;
DROP TABLE IF EXISTS mset_update;
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Return value on bad planet identifier' );
SELECT ok( NOT emp.mset_update_start( _get_emp_name( 'testEmp1' ) , _get_bad_map_name( ) ) );
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Temporary table exists despite bad planet identifier' );
SELECT has_table( 'mset_update' );
DROP TABLE mset_update;
DROP TABLE IF EXISTS mset_update;
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Return value on unowned planet identifier' );
SELECT ok( NOT emp.mset_update_start( _get_emp_name( 'testEmp1' ) , _get_map_name( 'testPlanet2' ) ) );
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Temporary table exists despite unowned planet identifier' );
SELECT has_table( 'mset_update' );
DROP TABLE mset_update;
DROP TABLE IF EXISTS mset_update;
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Return value on unowned planet identifier' );
SELECT ok( NOT emp.mset_update_start( _get_emp_name( 'testEmp1' ) , _get_map_name( 'testPlanet2' ) ) );
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Temporary table exists despite unowned planet identifier' );
SELECT has_table( 'mset_update' );
DROP TABLE mset_update;
DROP TABLE IF EXISTS mset_update;
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Return value on planet with no resource providers' );
SELECT ok( NOT emp.mset_update_start( _get_emp_name( 'testEmp1' ) , _get_map_name( 'testPlanet3' ) ) );
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Temporary table exists despite planet with no resource providers' );
SELECT has_table( 'mset_update' );
DROP TABLE mset_update;
DROP TABLE IF EXISTS mset_update;
SELECT diag_test_name( 'emp.mset_update_start( INT , INT ) - Return value on valid identifiers' );

View file

@ -4,34 +4,34 @@
BEGIN;
CREATE TEMPORARY TABLE mset_update(
empire_id INT ,
resource_name_id INT ,
resource_name TEXT ,
empmset_weight INT
) ON COMMIT DROP;
INSERT INTO mset_update VALUES ( 1 , 1 , 0 ) , ( 1 , 2 , 0 );
INSERT INTO mset_update VALUES ( 1 , 'a' , 0 ) , ( 1 , 'b' , 0 );
/***** TESTS BEGIN HERE *****/
SELECT plan( 7 );
SELECT diag_test_name( 'emp.mset_update_set( ) - Valid update' );
SELECT ok( emp.mset_update_set( 1 , 1 ) );
SELECT ok( emp.mset_update_set( 'a' , 1 ) );
SELECT diag_test_name( 'emp.mset_update_set( ) - Valid update results (1/2)' );
SELECT is( empmset_weight , 1 ) FROM mset_update WHERE resource_name_id = 1;
SELECT is( empmset_weight , 1 ) FROM mset_update WHERE resource_name = 'a';
SELECT diag_test_name( 'emp.mset_update_set( ) - Valid update results (2/2)' );
SELECT is( empmset_weight , 0 ) FROM mset_update WHERE resource_name_id = 2;
SELECT is( empmset_weight , 0 ) FROM mset_update WHERE resource_name = 'b';
DELETE FROM mset_update;
INSERT INTO mset_update VALUES ( 1 , 1 , 0 ) , ( 1 , 2 , 0 );
INSERT INTO mset_update VALUES ( 1 , 'a' , 0 ) , ( 1 , 'b' , 0 );
SELECT diag_test_name( 'emp.mset_update_set( ) - Update on unknown resource' );
SELECT ok( NOT emp.mset_update_set( 12 , 1 ) );
SELECT ok( NOT emp.mset_update_set( 'c' , 1 ) );
SELECT diag_test_name( 'emp.mset_update_set( ) - Unknown resource update results (1/2)' );
SELECT is( empmset_weight , 0 ) FROM mset_update WHERE resource_name_id = 1;
SELECT is( empmset_weight , 0 ) FROM mset_update WHERE resource_name = 'a';
SELECT diag_test_name( 'emp.mset_update_set( ) - Unknown resource update results (2/2)' );
SELECT is( empmset_weight , 0 ) FROM mset_update WHERE resource_name_id = 2;
SELECT is( empmset_weight , 0 ) FROM mset_update WHERE resource_name = 'b';
DELETE FROM mset_update;
INSERT INTO mset_update VALUES ( 1 , 1 , 0 ) , ( 1 , 2 , 0 );
INSERT INTO mset_update VALUES ( 1 , 'a' , 0 ) , ( 1 , 'b' , 0 );
SELECT diag_test_name( 'emp.mset_update_set( ) - Update with invalid weight' );
SELECT ok( emp.mset_update_set( 1 , -1 ) );
SELECT ok( emp.mset_update_set( 'a' , -1 ) );
SELECT * FROM finish( );
ROLLBACK;

View file

@ -2,6 +2,11 @@
* 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.
@ -10,15 +15,17 @@ BEGIN;
DROP CONSTRAINT fk_empmset_empire ,
DROP CONSTRAINT fk_empmset_resource;
INSERT INTO emp.mining_settings ( empire_id , resource_name_id )
VALUES ( 1 , 1 ) , ( 1 , 2 );
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_id INT ,
resource_name TEXT ,
empmset_weight INT
) ON COMMIT DROP;
INSERT INTO mset_update VALUES ( 1 , 1 , 0 ) , ( 1 , 2 , 4 );
INSERT INTO mset_update VALUES ( 1 , 'a' , 0 ) , ( 1 , 'b' , 4 );
/***** TESTS BEGIN HERE *****/
SELECT plan( 8 );
@ -27,23 +34,31 @@ BEGIN;
SELECT ok( emp.mset_update_apply( ) );
SELECT diag_test_name( 'emp.mset_update_apply() - Empire update results' );
SELECT set_eq(
$$ SELECT resource_name_id , empmset_weight FROM emp.mining_settings $$ ,
$$ VALUES ( 1 , 0 ) , ( 2 , 4 ) $$
$$ 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 )
VALUES ( 1 , 1 ) , ( 1 , 2 );
SELECT 1 , id
FROM defs.strings
WHERE name IN ( 'a' , 'b' );
INSERT INTO mset_update VALUES ( 1 , 1 , -1 ) , ( 1 , 2 , 4 );
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 resource_name_id , empmset_weight FROM emp.mining_settings $$ ,
$$ VALUES ( 1 , 2 ) , ( 2 , 2 ) $$
$$ SELECT name , empmset_weight
FROM emp.mining_settings
INNER JOIN defs.strings
ON resource_name_id = id $$ ,
$$ VALUES ( 'a' , 2 ) , ( 'b' , 2 ) $$
);
@ -55,38 +70,48 @@ BEGIN;
DROP CONSTRAINT fk_emppmset_empire ,
DROP CONSTRAINT fk_emppmset_resource;
INSERT INTO emp.planet_mining_settings ( empire_id , planet_id , resource_name_id )
VALUES ( 1 , 1 , 1 ) , ( 1 , 1 , 2 );
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_id INT ,
resource_name TEXT ,
empmset_weight INT
) ON COMMIT DROP;
INSERT INTO mset_update VALUES ( 1 , 1 , 1 , 0 ) , ( 1 , 1 , 2 , 4 );
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 resource_name_id , emppmset_weight FROM emp.planet_mining_settings $$ ,
$$ VALUES ( 1 , 0 ) , ( 2 , 4 ) $$
$$ 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 )
VALUES ( 1 , 1 , 1 ) , ( 1 , 1 , 2 );
SELECT 1 , 1 , id
FROM defs.strings
WHERE name IN ( 'a' , 'b' );
INSERT INTO mset_update VALUES ( 1 , 1 , 1 , -1 ) , ( 1 , 1 , 2 , 4 );
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 resource_name_id , emppmset_weight FROM emp.planet_mining_settings $$ ,
$$ VALUES ( 1 , 2 ) , ( 2 , 2 ) $$
$$ 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( );