Ejemplo n.º 1
0
    def test_blueprint(self):
        array_default = types.Array(element_template=types.String())
        blueprint_default = array_default.blueprint()
        self.assertEqual(blueprint_default["type"], "array")
        self.assertEqual(blueprint_default["constraints"]["required"], True)
        self.assertEqual(blueprint_default["constraints"]["min_length"], None)
        self.assertEqual(blueprint_default["constraints"]["max_length"], None)
        self.assertEqual(blueprint_default["constraints"]["element_template"],
                         types.String().blueprint())
        self.assertEqual(blueprint_default["constraints"]["description"], None)

        array_custom = types.Array(
            required=False,
            min_length=1,
            max_length=10,
            element_template=types.String(default="cat"),
            description="description")
        blueprint_custom = array_custom.blueprint()
        self.assertEqual(blueprint_custom["type"], "array")
        self.assertEqual(blueprint_custom["constraints"]["required"], False)
        self.assertEqual(blueprint_custom["constraints"]["min_length"], 1)
        self.assertEqual(blueprint_custom["constraints"]["max_length"], 10)
        self.assertEqual(blueprint_custom["constraints"]["element_template"],
                         types.String(default="cat").blueprint())
        self.assertEqual(blueprint_custom["constraints"]["description"],
                         "description")
Ejemplo n.º 2
0
    def test_data_type(self):
        array_empty = types.Array(element_template=types.String())
        self.assertEqual(array_empty.as_serializable(), [])

        array_strings = types.Array(element_template=types.String())
        array_strings.append("cat")
        array_strings.append("dog")
        self.assertEqual(array_strings.as_serializable(), ["cat", "dog"])
Ejemplo n.º 3
0
class PersonREST(types.Model):
    first_name = types.String()
    last_name = types.String()
    short_string = types.String(max_length=10)

    address = AddressREST(required=False)

    addresses = types.Array(element_template=AddressREST())

    booleans = types.Array(element_template=types.Boolean())
    floats = types.Array(element_template=types.Float())
    integers = types.Array(element_template=types.Integer())
    strings = types.Array(element_template=types.String())
Ejemplo n.º 4
0
    def test_custom(self):
        boolean_array = types.Array(element_template=types.Boolean(),
                                    description="boolean")
        self.assertEqual(boolean_array.description, "boolean")

        float_array = types.Array(element_template=types.Float(),
                                  description="float")
        self.assertEqual(float_array.description, "float")

        integer_array = types.Array(element_template=types.Integer(),
                                    description="integer")
        self.assertEqual(integer_array.description, "integer")

        string_array = types.Array(element_template=types.String(),
                                   description="string")
        self.assertEqual(string_array.description, "string")

        date_array = types.Array(element_template=types.Date(),
                                 description="date")
        self.assertEqual(date_array.description, "date")

        datetime_array = types.Array(element_template=types.DateTime(),
                                     description="datetime")
        self.assertEqual(datetime_array.description, "datetime")

        time_array = types.Array(element_template=types.Date(),
                                 description="time")
        self.assertEqual(time_array.description, "time")
Ejemplo n.º 5
0
        class ParentREST(types.Model):
            p_boolean = types.Boolean()
            p_float = types.Float()
            p_integer = types.Integer()
            p_string = types.String()

            child = ChildREST()
Ejemplo n.º 6
0
        class MyModel(types.Model):
            boolean = types.Boolean()
            float = types.Float()
            age = types.Integer(maximum=120)
            name = types.String()

            sub_model = SubModel()
Ejemplo n.º 7
0
 def test_custom(self):
     self.assertEqual(
         types.Array(element_template=types.Boolean(),
                     max_length=1).max_length, 1)
     self.assertEqual(
         types.Array(element_template=types.Float(),
                     max_length=2).max_length, 2)
     self.assertEqual(
         types.Array(element_template=types.Integer(),
                     max_length=3).max_length, 3)
     self.assertEqual(
         types.Array(element_template=types.String(),
                     max_length=4).max_length, 4)
     self.assertEqual(
         types.Array(element_template=types.Date(),
                     max_length=5).max_length, 5)
     self.assertEqual(
         types.Array(element_template=types.DateTime(),
                     max_length=6).max_length, 6)
     self.assertEqual(
         types.Array(element_template=types.Time(),
                     max_length=7).max_length, 7)
     self.assertEqual(
         types.Array(element_template=types.Model(),
                     max_length=8).max_length, 8)
Ejemplo n.º 8
0
    def test_string_given_values(self):
        string_type = types.String(
            required=False,
            trim=False,
            default="default",
            format="[a-z]{2,8}",
            choices=["a", "b", "c"],
            min_length=2,
            max_length=8
        )

        blueprint = string_type.blueprint()
        blueprint["map_name"] = "a_b"
        string_meta = AttributeMetaData("first_name", blueprint)
        self.assertEqual(string_meta.name, "first_name")
        self.assertEqual(string_meta.map_name, "a_b")
        self.assertEqual(string_meta.cc, "FirstName")
        self.assertEqual(string_meta.ccif, "firstName")
        self.assertEqual(string_meta.blueprint_type, "string")
        self.assertEqual(string_meta.client_class_name, "String")
        self.assertEqual(string_meta.required, "false")
        self.assertEqual(string_meta.trim, "false")
        self.assertEqual(string_meta.default, "\"default\"")
        self.assertEqual(string_meta.format, "\"[a-z]{2,8}\"")
        self.assertEqual(string_meta.choices, ["a", "b", "c"])
        self.assertEqual(string_meta.min_length, 2)
        self.assertEqual(string_meta.max_length, 8)
Ejemplo n.º 9
0
 def test_data_type(self):
     self.assertTrue(
         types.Array(element_template=types.Boolean()).is_scalar)
     self.assertTrue(types.Array(element_template=types.Float()).is_scalar)
     self.assertTrue(
         types.Array(element_template=types.Integer()).is_scalar)
     self.assertTrue(types.Array(element_template=types.String()).is_scalar)
Ejemplo n.º 10
0
    def test_add_attribute_string(self):
        base = Base(template_engine=None,
                    models_definition="models.py",
                    namespace="namespace.models",
                    output_directory="namespace/models")
        self.assertEqual(base.attribute_string, "")

        string_blueprint = types.String().blueprint()
        string_blueprint["map_name"] = "a"

        base.add_attribute_string(AttributeMetaData("string",
                                                    string_blueprint))
        self.assertEqual(base.attribute_string, "this.string_")

        class MyModel(types.Model):
            field = types.String()

        model_blueprint = MyModel().blueprint()
        model_blueprint["map_name"] = "b"

        base.add_attribute_string(AttributeMetaData("model", model_blueprint))
        self.assertEqual(base.attribute_string,
                         "this.string_ || this.model_.anyFieldsEnabled()")

        array_blueprint = types.Array(element_template=MyModel()).blueprint()
        array_blueprint["map_name"] = "c"

        base.add_attribute_string(AttributeMetaData("array", array_blueprint))
        self.assertEqual(
            base.attribute_string,
            "this.string_ || this.model_.anyFieldsEnabled() || this.array_.anyFieldsEnabled()"
        )
Ejemplo n.º 11
0
    def test_add_model_dependency(self):
        base = Base(template_engine=None,
                    models_definition="models.py",
                    namespace="namespace.models",
                    output_directory="namespace/models")
        self.assertEqual(base._dependencies, [])

        class User(types.Model):
            first_name = types.String()

        model_blueprint = User().blueprint()
        model_blueprint["map_name"] = "a"

        base.add_model_dependency(AttributeMetaData("user", model_blueprint))
        self.assertEqual(base._dependencies, ["namespace.models.User"])

        string_blueprint = types.String().blueprint()
        string_blueprint["map_name"] = "a_b"

        base.add_model_dependency(
            AttributeMetaData("first_name", string_blueprint))
        self.assertEqual(base._dependencies,
                         ["namespace.models.User", "prestans.types.String"])

        array_basic = types.Array(element_template=types.String()).blueprint()
        array_basic["map_name"] = "c"

        base.add_model_dependency(AttributeMetaData("tags", array_basic))
        self.assertEqual(base._dependencies,
                         ["namespace.models.User", "prestans.types.String"])

        array_model = types.Array(element_template=User()).blueprint()
        array_model["map_name"] = "d"

        base.add_model_dependency(AttributeMetaData("users", array_model))
        self.assertEqual(base._dependencies,
                         ["namespace.models.User", "prestans.types.String"])

        integer_blueprint = types.Integer().blueprint()
        integer_blueprint["map_name"] = "e"

        base.add_model_dependency(
            AttributeMetaData("numbers", integer_blueprint))
        self.assertEqual(base._dependencies, [
            "namespace.models.User", "prestans.types.String",
            "prestans.types.Integer"
        ])
Ejemplo n.º 12
0
 class MyModel(types.Model):
     boolean = types.Boolean()
     date = types.Date()
     datetime = types.DateTime()
     float = types.Float()
     integer = types.Integer()
     string = types.String()
     sub = SubModel()
     time = types.Time()
Ejemplo n.º 13
0
 def test_remove(self):
     array = types.Array(element_template=types.String())
     array.append("dog")
     array.append("cat")
     self.assertEqual(len(array), 2)
     array.remove("dog")
     self.assertEqual(len(array), 1)
     array.remove("cat")
     self.assertEqual(len(array), 0)
Ejemplo n.º 14
0
    def test_element_template(self):
        float_element_template = types.Float()
        string_element_template = types.String()

        self.assertRaises(TypeError, types.Array, element_template="string")

        array = types.Array(element_template=float_element_template)
        self.assertEqual(array.element_template, float_element_template)
        array.element_template = string_element_template
        self.assertEqual(array.element_template, string_element_template)
Ejemplo n.º 15
0
    def test_append_data_type(self):
        array = types.Array(element_template=types.String())
        self.assertEqual(len(array), 0)

        array.append("dog")
        self.assertEqual(len(array), 1)
        self.assertTrue("dog" in array)

        array.append(["cat", "rat"])
        self.assertEqual(len(array), 3)
        self.assertTrue("cat" in array)
        self.assertTrue("rat" in array)
Ejemplo n.º 16
0
    def test_iter(self):
        elements = ["a", "b", "c"]

        array = types.Array(element_template=types.String())
        array.append(elements[0])
        array.append(elements[1])
        array.append(elements[2])

        index = 0
        for element in array:
            self.assertEqual(element, elements[index])
            index += 1
Ejemplo n.º 17
0
 def test_data_type(self):
     self.assertIsNone(
         types.Array(element_template=types.Boolean()).
         attribute_rewrite_reverse_map())
     self.assertIsNone(
         types.Array(element_template=types.Float()).
         attribute_rewrite_reverse_map())
     self.assertIsNone(
         types.Array(element_template=types.Integer()).
         attribute_rewrite_reverse_map())
     self.assertIsNone(
         types.Array(element_template=types.String()).
         attribute_rewrite_reverse_map())
Ejemplo n.º 18
0
    def test_string_default(self):
        string_type = types.String()

        string = BasicTypeElementTemplate(string_type.blueprint())
        self.assertEqual(string.blueprint_type, "string")
        self.assertEqual(string.client_class_name, "String")
        self.assertEqual(string.required, "true")
        self.assertEqual(string.trim, "true")
        self.assertEqual(string.default, "null")
        self.assertEqual(string.min_length, "null")
        self.assertEqual(string.max_length, "null")
        self.assertEqual(string.format, "null")
        self.assertEqual(string.choices, "null")
Ejemplo n.º 19
0
 def test_default(self):
     self.assertIsNone(
         types.Array(element_template=types.Boolean()).min_length)
     self.assertIsNone(
         types.Array(element_template=types.Float()).min_length)
     self.assertIsNone(
         types.Array(element_template=types.Integer()).min_length)
     self.assertIsNone(
         types.Array(element_template=types.String()).min_length)
     self.assertIsNone(
         types.Array(element_template=types.Date()).min_length)
     self.assertIsNone(
         types.Array(element_template=types.DateTime()).min_length)
     self.assertIsNone(
         types.Array(element_template=types.Time()).min_length)
     self.assertIsNone(
         types.Array(element_template=types.Model()).min_length)
Ejemplo n.º 20
0
    def test_from_model(self):

        # check that non data collection raises exception
        self.assertRaises(TypeError,
                          AttributeFilter.from_model,
                          model_instance="string")

        # check that array scalar returns filter todo: work out how to further test this
        array_scalar = AttributeFilter.from_model(
            types.Array(element_template=types.String()))
        self.assertTrue(isinstance(array_scalar, AttributeFilter))

        # check that a model is constructed correctly and default values work
        class MyModel(types.Model):
            name = types.String()
            age = types.Integer()
            tags = types.Array(element_template=types.String())

        default = AttributeFilter.from_model(model_instance=MyModel())
        self.assertFalse(default.name)
        self.assertFalse(default.age)
        self.assertFalse(default.tags)

        default_false = AttributeFilter.from_model(model_instance=MyModel(),
                                                   default_value=False)
        self.assertFalse(default_false.name)
        self.assertFalse(default_false.age)
        self.assertFalse(default_false.tags)

        default_true = AttributeFilter.from_model(model_instance=MyModel(),
                                                  default_value=True)
        self.assertTrue(default_true.name)
        self.assertTrue(default_true.age)
        self.assertTrue(default_true.tags)

        # check keyword args
        keyword_args = AttributeFilter.from_model(model_instance=MyModel(),
                                                  age=True)
        self.assertFalse(keyword_args.name)
        self.assertTrue(keyword_args.age)
        self.assertFalse(keyword_args.tags)

        self.assertRaises(KeyError,
                          AttributeFilter.from_model,
                          model_instance=MyModel(),
                          missing=True)
Ejemplo n.º 21
0
    def test_array_basic_type(self):
        array = types.Array(element_template=types.String(default="default"))

        blueprint = array.blueprint()
        blueprint["map_name"] = "b_a"
        array_meta = AttributeMetaData("user_tags", blueprint)
        self.assertEqual(array_meta.name, "user_tags")
        self.assertEqual(array_meta.map_name, "b_a")
        self.assertEqual(array_meta.cc, "UserTags")
        self.assertEqual(array_meta.ccif, "userTags")
        self.assertEqual(array_meta.blueprint_type, "array")
        self.assertEqual(array_meta.client_class_name, "Array")
        self.assertEqual(array_meta.required, "true")
        self.assertEqual(array_meta.min_length, "null")
        self.assertEqual(array_meta.max_length, "null")
        self.assertFalse(array_meta.element_template_is_model)
        self.assertEqual(array_meta.element_template.blueprint_type, "string")
        self.assertEqual(array_meta.element_template.default, "\"default\"")
Ejemplo n.º 22
0
    def test_string_default(self):
        string_type = types.String()

        blueprint = string_type.blueprint()
        blueprint["map_name"] = "a_b"
        string_meta = AttributeMetaData("first_name", blueprint)
        self.assertEqual(string_meta.name, "first_name")
        self.assertEqual(string_meta.map_name, "a_b")
        self.assertEqual(string_meta.cc, "FirstName")
        self.assertEqual(string_meta.ccif, "firstName")
        self.assertEqual(string_meta.blueprint_type, "string")
        self.assertEqual(string_meta.client_class_name, "String")
        self.assertEqual(string_meta.required, "true")
        self.assertEqual(string_meta.trim, "true")
        self.assertEqual(string_meta.default, "null")
        self.assertEqual(string_meta.format, "null")
        self.assertEqual(string_meta.choices, "null")
        self.assertEqual(string_meta.min_length, "null")
        self.assertEqual(string_meta.max_length, "null")
Ejemplo n.º 23
0
    def test_data_type(self):
        boolean_array = types.Array(element_template=types.Boolean())
        self.assertFalse(boolean_array.get_attribute_filter())
        self.assertFalse(boolean_array.get_attribute_filter(False))
        self.assertTrue(boolean_array.get_attribute_filter(True))

        float_array = types.Array(element_template=types.Float())
        self.assertFalse(float_array.get_attribute_filter())
        self.assertFalse(float_array.get_attribute_filter(False))
        self.assertTrue(float_array.get_attribute_filter(True))

        integer_array = types.Array(element_template=types.Integer())
        self.assertFalse(integer_array.get_attribute_filter())
        self.assertFalse(integer_array.get_attribute_filter(False))
        self.assertTrue(integer_array.get_attribute_filter(True))

        string_array = types.Array(element_template=types.String())
        self.assertFalse(string_array.get_attribute_filter())
        self.assertFalse(string_array.get_attribute_filter(False))
        self.assertTrue(string_array.get_attribute_filter(True))
Ejemplo n.º 24
0
    def test_string_given_values(self):
        string_type = types.String(
            required=False,
            trim=False,
            default="default",
            min_length=1,
            max_length=5,
            format="[a-z]{2, 8}",
            choices=["a", "b", "c"]
        )

        string = BasicTypeElementTemplate(string_type.blueprint())
        self.assertEqual(string.blueprint_type, "string")
        self.assertEqual(string.client_class_name, "String")
        self.assertEqual(string.required, "false")
        self.assertEqual(string.trim, "false")
        self.assertEqual(string.default, "\"default\"")
        self.assertEqual(string.min_length, 1)
        self.assertEqual(string.max_length, 5)
        self.assertEqual(string.format, "\"[a-z]{2, 8}\"")
        self.assertEqual(string.choices, ["a", "b", "c"])
Ejemplo n.º 25
0
 class MyModel(types.Model):
     cat = types.String()
Ejemplo n.º 26
0
 class ParentModel(types.Model):
     name = types.String()
     people = types.Array(element_template=SubModel())
Ejemplo n.º 27
0
 class SubModel(types.Model):
     name = types.String()
Ejemplo n.º 28
0
 class MyModel(types.Model):
     name = types.String()
     tags = types.Array(element_template=types.String())
Ejemplo n.º 29
0
 class ParentModel(types.Model):
     name = types.String()
     sub_model = MyModel()
Ejemplo n.º 30
0
 class MyModel(types.Model):
     name = types.String()