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/040-empire/030-resources-view.sql

169 lines
5.2 KiB
MySQL
Raw Normal View History

/*
* Tests for emp.resources_view
*/
BEGIN;
/*
* We will use a fake emp.planet_resources_view to avoid having to set
* planet resources.
*
* In terms of data, we need two resources (one with a category, the other
* without, and two empires (one with "planet resources", the other
* without). Both empires will have mining settings for one of the resource
* types.
*/
\i utils/strings.sql
SELECT _create_test_strings( 2 , 'resource' , 'Resource name ' );
SELECT _create_test_strings( 2 , 'rDesc' , 'Resource description ' );
SELECT _create_test_strings( 1 , 'rCat' , 'Resource category ' );
INSERT INTO defs.resources (
resource_name_id , resource_description_id ,
resource_category_id , resource_weight
) VALUES (
_get_string( 'resource1' ) , _get_string( 'rDesc1' ) ,
_get_string( 'rCat1' ) , 2
) , (
_get_string( 'resource2' ) , _get_string( 'rDesc2' ) ,
NULL , 1
);
\i utils/accounts.sql
\i utils/naming.sql
SELECT _create_emp_names( 2 , 'emp' );
INSERT INTO emp.empires( name_id , cash )
SELECT id , 0 FROM naming.empire_names;
ALTER TABLE emp.mining_settings DROP CONSTRAINT fk_empmset_resource;
INSERT INTO emp.mining_settings ( empire_id , resource_name_id , empmset_weight )
SELECT id , _get_string( 'resource1' ) , row_number( ) OVER ()
FROM naming.empire_names
ORDER BY id;
INSERT INTO emp.resources ( empire_id , resource_name_id , empres_possessed )
SELECT name_id , resource_name_id , 0.4 * row_number( ) OVER ()
FROM emp.empires
CROSS JOIN defs.resources
ORDER BY name_id , resource_name_id;
CREATE TABLE fake_planet_resources_view (
empire_id INT ,
resource_name_id INT ,
planets_income BIGINT ,
planets_upkeep BIGINT
);
CREATE OR REPLACE VIEW emp.planet_resources_view
AS SELECT * FROM fake_planet_resources_view;
INSERT INTO fake_planet_resources_view
VALUES (
_get_emp_name( 'emp1' ) , _get_string( 'resource1' ) , 1 , 2
) , (
_get_emp_name( 'emp1' ) , _get_string( 'resource2' ) , 3 , 4
);
/***** TESTS BEGIN HERE *****/
SELECT plan( 13 );
SELECT diag_test_name( 'emp.resources_view - One row per empire/resource combination' );
SELECT is( COUNT(*)::INT , 4 ) FROM emp.resources_view;
SELECT diag_test_name( 'emp.resources_view - Resource ordering' );
SELECT set_eq(
$$ SELECT resource_identifier , row_number( ) OVER ( )
FROM emp.resources_view
WHERE empire_id = _get_emp_name( 'emp1' ) $$ ,
$$ VALUES ( 'resource2' , 1 ) , ( 'resource1' , 2 ) $$
);
SELECT diag_test_name( 'emp.resources_view - Name translation' );
SELECT is_empty( $$
SELECT *
FROM emp.resources_view
WHERE resource_name NOT LIKE 'Resource name %'
$$ );
SELECT diag_test_name( 'emp.resources_view - Description translation' );
SELECT is_empty( $$
SELECT *
FROM emp.resources_view
WHERE resource_description NOT LIKE 'Resource description %'
$$ );
SELECT diag_test_name( 'emp.resources_view - Category translation' );
SELECT is_empty( $$
SELECT *
FROM emp.resources_view
WHERE resource_identifier = 'resource1'
AND resource_category NOT LIKE 'Resource category %'
$$ );
SELECT diag_test_name( 'emp.resources_view - NULL category -> NULL translation' );
SELECT is_empty( $$
SELECT *
FROM emp.resources_view
WHERE resource_identifier <> 'resource1'
AND resource_category IS NOT NULL
$$ );
SELECT diag_test_name( 'emp.resources_view - Possessed quantities are rounded down' );
SELECT set_eq(
$$ SELECT empire_id , resource_identifier , empres_possessed
FROM emp.resources_view $$ ,
$$ VALUES (
_get_emp_name( 'emp1' ) , 'resource1' , 0
) , (
_get_emp_name( 'emp1' ) , 'resource2' , 0
) , (
_get_emp_name( 'emp2' ) , 'resource1' , 1
) , (
_get_emp_name( 'emp2' ) , 'resource2' , 1
) $$
);
SELECT diag_test_name( 'emp.resources_view - Basic resources have NULL mining settings' );
SELECT is( COUNT(*)::INT , 2 )
FROM emp.resources_view
WHERE resource_identifier = 'resource2'
AND empmset_weight IS NULL;
SELECT diag_test_name( 'emp.resources_view - Mining settings for natural resources' );
SELECT set_eq(
$$ SELECT empire_id , empmset_weight
FROM emp.resources_view
WHERE resource_identifier = 'resource1' $$ ,
$$ VALUES ( _get_emp_name( 'emp1' ) , 1 ) ,
( _get_emp_name( 'emp2' ) , 2 ) $$
);
SELECT is( COUNT(*)::INT , 2 )
FROM emp.resources_view
WHERE resource_identifier = 'resource1'
AND empmset_weight IS NOT NULL;
SELECT diag_test_name( 'emp.resources_view - Planet upkeep/income is zero when there are no planets' );
SELECT is( COUNT(*)::INT , 2 )
FROM emp.resources_view
WHERE empire_id = _get_emp_name( 'emp2' )
AND planets_upkeep = 0
AND planets_income = 0;
SELECT diag_test_name( 'emp.resources_view - Planet upkeep/income from planet resources view' );
SELECT set_eq(
$$ SELECT resource_identifier , planets_upkeep , planets_income
FROM emp.resources_view
WHERE empire_id = _get_emp_name( 'emp1' ) $$ ,
$$ VALUES ( 'resource1' , 2 , 1 ) , ( 'resource2' , 4 , 3 ) $$
);
SELECT diag_test_name( 'emp.resources_view - FIXME - Fleets upkeep set to zero' );
SELECT is_empty(
$$ SELECT * FROM emp.resources_view
WHERE fleets_upkeep <> 0 $$
);
SELECT * FROM finish( );
ROLLBACK;