def _to_domain_entity(self, doc: DatastoreEntity) -> Project:
     model = ProjectDataModel.from_datastore_entity(doc=doc)
     return Project(
         key=ProjectKey.build_from_key(key=self.to_entity_key(
             datastore_key=model.key)),
         name=ProjectName(model.name),
         created_at=model.created_at,
     )
示例#2
0
    def test_project_key_property(self):
        task = Task(
            key=TaskKey.build_by_id(task_id=1),
            name=TaskName("Task Name"),
            project_key=None,
            finished_at=None,
            created_at=datetime.datetime(2019,
                                         12,
                                         1,
                                         0,
                                         0,
                                         0,
                                         tzinfo=datetime.timezone.utc),
            updated_at=datetime.datetime(2019,
                                         12,
                                         1,
                                         0,
                                         0,
                                         0,
                                         tzinfo=datetime.timezone.utc),
        )
        assert not task.project_key

        project = Project(
            key=ProjectKey.build_by_id(project_id=1),
            name=ProjectName("Project Name"),
            created_at=datetime.datetime(2019,
                                         12,
                                         1,
                                         0,
                                         0,
                                         0,
                                         tzinfo=datetime.timezone.utc),
        )

        finished_task = Task(
            key=TaskKey.build_by_id(task_id=1),
            name=TaskName("Task Name"),
            project_key=project.key,
            finished_at=None,
            created_at=datetime.datetime(2019,
                                         12,
                                         1,
                                         0,
                                         0,
                                         0,
                                         tzinfo=datetime.timezone.utc),
            updated_at=datetime.datetime(2019,
                                         12,
                                         1,
                                         0,
                                         0,
                                         0,
                                         tzinfo=datetime.timezone.utc),
        )

        assert finished_task.key
    def execute(self, project_name: str) -> Project:
        now = datetime.datetime.utcnow().astimezone(tz=datetime.timezone.utc)
        project = Project(
            key=ProjectKey.build_for_new(),
            name=ProjectName(project_name),
            created_at=now,
        )

        self._project_repository.save(project=project)

        return project
 def test_build_failure(self):
     with pytest.raises(expected_exception=TypeValidationError):
         Project(
             key=ProjectKey.build_by_id(project_id=1),
             name='project name',
             created_at=datetime.datetime(2019,
                                          12,
                                          1,
                                          0,
                                          0,
                                          0,
                                          tzinfo=datetime.timezone.utc),
         )
 def test_build_successful(self):
     project = Project(
         key=ProjectKey.build_by_id(project_id=1),
         name=ProjectName("Project Name"),
         created_at=datetime.datetime(2019,
                                      12,
                                      1,
                                      0,
                                      0,
                                      0,
                                      tzinfo=datetime.timezone.utc),
     )
     assert isinstance(project, Project)
示例#6
0
    def test_save(self):
        query = datastore_client.query(kind=self.KIND)
        query.keys_only()
        datastore_client.delete_multi(
            keys=[entity.key for entity in query.fetch()])
        assert len(list(query.fetch())) == 0

        project = Project(
            key=ProjectKey.build_by_id(project_id=123),
            name=ProjectName("Project Name"),
            created_at=datetime.datetime(2019,
                                         12,
                                         1,
                                         tzinfo=datetime.timezone.utc),
        )
        self.repository.save(project=project)
        assert len(list(query.fetch())) == 1
示例#7
0
 def _to_domain_entity(self, doc: datastore.Entity) -> Project:
     return Project(
         key=ProjectKey.build_from_key(key=doc.key),
         name=ProjectName(doc["name"]),
         created_at=doc["created_at"],
     )