/* * Unit tests for emp.resprio_update_apply() */ BEGIN; \i utils/strings.sql \i utils/accounts.sql \i utils/naming.sql /* Create a pair of empires, a technology, and some empire * research & technology records. */ SELECT _create_emp_names( 2 , 'emp' ); INSERT INTO emp.empires ( name_id , cash ) SELECT id , 200.0 FROM naming.empire_names; ALTER TABLE defs.technologies ALTER technology_category_id DROP NOT NULL , ALTER technology_discovery_id DROP NOT NULL , ALTER technology_description_id DROP NOT NULL , ALTER technology_price DROP NOT NULL , ALTER technology_points DROP NOT NULL; SELECT _create_test_strings( 1 , 'tech' ); INSERT INTO defs.technologies ( technology_name_id ) VALUES ( _get_string( 'tech1' ) ); INSERT INTO emp.technologies( empire_id , technology_name_id , emptech_state , emptech_points , emptech_priority ) VALUES ( _get_emp_name( 'emp1' ) , _get_string( 'tech1' ) , 'RESEARCH' , 12 , 2 ) , ( _get_emp_name( 'emp2' ) , _get_string( 'tech1' ) , 'RESEARCH' , 12 , 2 ); /* Create a fake temporary table */ CREATE TEMPORARY TABLE rprio_update( _empire_id INT , _technology_name_id INT , _emptech_id TEXT , _emptech_priority INT ) ON COMMIT DROP; -- ***** TESTS BEGIN HERE ***** SELECT plan( 4 ); INSERT INTO rprio_update VALUES ( _get_emp_name( 'emp1' ) , _get_string( 'tech1' ) , 'ignored' , 1 ); SELECT diag_test_name( 'emp.resprio_update_apply() - Applying a valid update - Return value' ); SELECT ok( emp.resprio_update_apply( ) ); SELECT diag_test_name( 'emp.resprio_update_apply() - Applying a valid update - Table contents' ); SELECT set_eq( $$ SELECT empire_id , emptech_priority FROM emp.technologies WHERE technology_name_id = _get_string( 'tech1' ); $$ , $$ VALUES( _get_emp_name( 'emp1' ) , 1 ) , ( _get_emp_name( 'emp2' ) , 2 ) $$ ); DELETE FROM rprio_update; UPDATE emp.technologies SET emptech_priority = 2 WHERE technology_name_id = _get_string( 'tech1' ); INSERT INTO rprio_update VALUES ( _get_emp_name( 'emp1' ) , _get_string( 'tech1' ) , 'ignored' , 15 ); SELECT diag_test_name( 'emp.resprio_update_apply() - Applying an invalid update - Return value' ); SELECT ok( NOT emp.resprio_update_apply( ) ); SELECT diag_test_name( 'emp.resprio_update_apply() - Applying an invalid update - Table contents' ); SELECT set_eq( $$ SELECT empire_id , emptech_priority FROM emp.technologies $$ , $$ VALUES( _get_emp_name( 'emp1' ) , 2 ) , ( _get_emp_name( 'emp2' ) , 2 ) $$ ); SELECT * FROM finish( ); ROLLBACK;