'''
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()