def yield_value_from_model(self, model: base_models.BaseModel) -> Iterator[Any]: """Yields the value(s) of the property from the given model. If the property is repeated, all values are yielded. Otherwise, a single value is yielded. Args: model: *. A subclass of BaseModel. Yields: *. The value(s) of the property. Raises: TypeError. When the argument is not a model. """ if not isinstance(model, self._to_model_class()): raise TypeError('%r is not an instance of %s' % (model, self._model_kind)) value = job_utils.get_model_property(model, self._property_name) if self._is_repeated_property(): for item in value: yield item else: yield value
def get_property_value(self, model): """Returns value of the given property of model Args: model: datastore_services.Model. Entity to validate. Returns: value. The value of the property of model. """ return job_utils.get_model_property(model, self._property_name)
def test_get_property_from_bad_value(self) -> None: with self.assertRaisesRegexp(TypeError, 'not a model instance'): # type: ignore[no-untyped-call] job_utils.get_model_property(123, 'prop') # type: ignore[arg-type]
def test_get_missing_property_from_datastore_model(self) -> None: model = FooModel() self.assertEqual(job_utils.get_model_property(model, 'prop'), None)
def test_get_property_from_datastore_model(self) -> None: model = FooModel(prop='abc') self.assertEqual(job_utils.get_model_property(model, 'prop'), 'abc')
def test_get_id_from_datastore_model(self) -> None: model = FooModel(id='123') self.assertEqual(job_utils.get_model_property(model, 'id'), '123')