''' Created on Oct 16, 2011 @author: michel ''' import unittest import FeatureServer.FilterEncoding.FilterEncoding as fe from FeatureServer.Server import Server from FeatureServer.DataSource.PostGIS import PostGIS from FeatureServer.Transaction.Transaction import Transaction class TransactionTest(unittest.TestCase): datasource = None server = None params = {'type': 'PostGIS', 'title': 'All', 'abstract': 'All', 'dsn' : 'host=localhost dbname=osm_test user=postgres password=4mrafk3', 'layer' : 'osm_point', 'fid': 'osm_id', 'geometry': 'way', 'version' : 'osm_version', 'srid' : '4326', 'srid_out' : '4326', 'attribute_cols' : 'name,amenity,operator,bridge,highway,power,place,route', 'LatLongBoundingBox' : '5.95459 45.75986 10.52490 47.83528', 'ele' : 'ele', 'gmlProperty' : 'Point'} def setUp(self): self.datasource = PostGIS('all', **self.params) self.server = Server({'all': self.datasource}) def tearDown(self): self.datasource = None self.server = None def testInsert(self): xml = """ 8.53438799881,47.3187879949 honky1 ABC bus_stop 8.52892699881,47.3221139949 bus_stop """ solution = [" INSERT INTO osm_point ( \"way\" , \"name\" , \"operator\" , \"highway\" ) VALUES ( ST_GeomFromGML(' 8.53438799881,47.3187879949 ') , 'honky1' , 'ABC' , 'bus_stop' ); ", " INSERT INTO osm_point ( \"way\" , \"highway\" ) VALUES ( ST_GeomFromGML(' 8.53438799881,47.3187879949 ') , 'bus_stop' ); "] result = [] transaction = Transaction() transaction.parse(xml) transactions = transaction.getActions() for transaction in transactions: result.append(transaction.getStatement(self.datasource)) self.assertItemsEqual(solution, result) def testUpdate(self): xml = """ way 8.53438799881,47.3187879949 Description abc way 8.53438799881,47.3187879949 """ solution = [" UPDATE osm_point SET \"way\" = ST_GeomFromGML(' 8.53438799881,47.3187879949 ') , \"Description\" = 'abc' WHERE \"osm_id\" = '1'; ", " UPDATE osm_point SET \"way\" = ST_GeomFromGML(' 8.53438799881,47.3187879949 ') WHERE \"osm_id\" = '2'; "] result = [] transaction = Transaction() transaction.parse(xml) transactions = transaction.getActions() for transaction in transactions: result.append(transaction.getStatement(self.datasource)) self.assertItemsEqual(solution, result) def testDelete(self): xml = """ """ solution = [" DELETE FROM osm_point WHERE \"osm_id\" = '1'; ", " DELETE FROM osm_point WHERE \"osm_id\" = '2'; "] result = [] transaction = Transaction() transaction.parse(xml) transactions = transaction.getActions() for transaction in transactions: result.append(transaction.getStatement(self.datasource)) self.assertItemsEqual(solution, result) if __name__ == "__main__": #import sys;sys.argv = ['', 'Test.testName'] unittest.main()