Advertisement
Guest User

SQLAlchemy weirdness

a guest
Oct 31st, 2014
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.19 KB | None | 0 0
  1. #RangeArgument definition
  2.  
  3. class RangeArgument(Argument):
  4.     __mapper_args__ = {'polymorphic_identity': 'RangeArgument'}
  5.  
  6.     def __init__(self,arg,range):
  7.         Argument.__init__(self,type="RangeArgument",description="An argument with a defined numeric range.")
  8.         self.arg = arg
  9.         self.range = range
  10.  
  11.     def validate(self):
  12.         return self.arg in self.range
  13.  
  14.     @hybrid_property
  15.     def arg(self):
  16.         return self.data['arg']
  17.  
  18.     @arg.setter
  19.     def arg(self,arg):
  20.         self.data['arg'] = arg
  21.  
  22.     @hybrid_property
  23.     def range(self):
  24.         return self.data['range']
  25.  
  26.     @range.setter
  27.     def range(self,range):
  28.         self.data['range'] = range
  29.  
  30. #Argument definition
  31. class Argument(Base):
  32.     __tablename__ = "arguments"
  33.     id =            Column(Integer, primary_key=True)
  34.     name =          Column(String, default="untitled")
  35.     type =          Column(String, default="Base")
  36.     description =   Column(String)
  37.     data =          Column(PickleType, default={})
  38.     parent_id =     Column(Integer, ForeignKey(id))
  39.  
  40.     __mapper_args__ = {"polymorphic_on":type,
  41.                        "polymorphic_identity":"Base"}
  42.     children =      relationship("Argument", backref=backref("parent", remote_side=[id]))
  43.  
  44.  
  45. #Failing test
  46.     def test_argument_subclass_creation(self):
  47.         rang = [range(1,5),range(1,10),range(10,100)]
  48.  
  49.         rangearg_1 = RangeArgument(-1,rang[0])
  50.         rangearg_2 = RangeArgument(4,rang[1])
  51.         rangearg_3 = RangeArgument(74.5,rang[2])
  52.  
  53.         assert rangearg_1.data['range'] == rang[0]
  54.         assert rangearg_2.data['range'] == rang[1]
  55.         assert rangearg_3.data['range'] == rang[2]
  56.  
  57. #Passing test
  58. def test_arguments_insertion(self):
  59.         child1_data = {"child":"Hi!"}
  60.         child_1 = Argument(description="A child argument used for testing", data=child1_data)
  61.         child2_data = {"child":"Hi!", "test":"it works"}
  62.         child_2 = Argument(description="A child argument used for testing", data=child2_data)
  63.  
  64.         self.arguments["child_1"] = child_1
  65.         self.arguments["child_2"] = child_2
  66.  
  67.         assert not "test" in self.arguments["child_1"].data
  68.         assert "test" in self.arguments["child_2"].data
  69.         assert self.arguments["child_1"].data == child1_data
  70.         assert self.arguments["child_2"].data == child2_data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement