def test_json_project_repository_delete_not_found(
        json_project_repository: JsonProjectRepository) -> None:
    project = Project("Hobbies")
    project.uid = 'T-MISSING'
    with raises(EntityNotFoundError):
        json_project_repository.delete(project)
    with open(json_project_repository.filename, 'r') as f:
        data = json.load(f)
    assert len(data['projects']) == 3
def project_repository() -> MemoryProjectRepository:
    project_repository = MemoryProjectRepository()
    projects_dict = {
        'P-1': Project("Personal", uid="P-1"),
        'P-2': Project("Work", uid="P-2"),
        'P-3': Project("Errands", uid="P-3")
    }
    project_repository.sequence = 4
    project_repository.load(projects_dict)
    return project_repository
def test_json_project_repository_add_with_uid(
        json_project_repository: JsonProjectRepository) -> None:
    project = Project("General")
    project.uid = "ABC123"
    json_project_repository.add(project)
    with open(json_project_repository.filename, 'r') as f:
        data = json.load(f)
    assert len(data['projects']) == 4
    assert data['projects']['ABC123']['uid'] == project.uid
    assert data['projects']['ABC123']['name'] == project.name
    assert data['_sequences']['projects'] == 5
def test_json_project_repository_update(
        json_project_repository: JsonProjectRepository) -> None:
    project = Project("Personal & Family")
    project.uid = 'P-1'
    with open(json_project_repository.filename, 'r') as f:
        data = json.load(f)
    assert data['projects']['P-1']['name'] == "Personal"
    json_project_repository.update(project)
    with open(json_project_repository.filename, 'r') as f:
        data = json.load(f)
    assert len(data['projects']) == 3
    assert data['projects']['P-1']['name'] == "Personal & Family"
Esempio n. 5
0
 def update_project(self, project_dict: Dict[str, any]):
     uid = project_dict.get('uid')
     old_project = self.project_repository.get(uid)
     old_project_dict = vars(old_project)
     old_project_dict.update(project_dict)
     new_project = Project(**old_project_dict)
     self.project_repository.update(new_project)
Esempio n. 6
0
 def get(self, uid: str) -> Project:
     with open(self.filename) as f:
         data = json.load(f)
         projects = data.get('projects', {})
     project_dict = projects.get(uid)
     if not project_dict:
         raise EntityNotFoundError("The project was not found in file.")
     return Project(**project_dict)
Esempio n. 7
0
 def add(self, project: Project) -> None:
     with open(self.filename, 'r') as f:
         data = json.load(f)
     sequence = data.get('_sequences', {}).get('projects', 1)
     project.uid = project.uid or ("P-" + str(sequence))
     data['projects'][project.uid] = vars(project)
     data['_sequences']['projects'] = sequence + 1
     with open(self.filename, 'w') as f:
         json.dump(data, f, default=json_serialize)
def test_json_project_repository_add(
        json_project_repository: JsonProjectRepository) -> None:
    project = Project("Shopping")
    json_project_repository.add(project)
    with open(json_project_repository.filename, 'r') as f:
        data = json.load(f)
    assert len(data['projects']) == 4
    assert data['projects']['P-4']['uid'] == project.uid
    assert data['projects']['P-4']['name'] == project.name
    assert data['_sequences']['projects'] == 5
def test_json_project_repository_delete(
        json_project_repository: JsonProjectRepository) -> None:
    with open(json_project_repository.filename, 'r') as f:
        data = json.load(f)
    project_dict = data['projects']['P-1']
    project = Project(**project_dict)
    json_project_repository.delete(project)
    with open(json_project_repository.filename, 'r') as f:
        data = json.load(f)
    assert len(data['projects']) == 2
    assert 'P-1' not in data['projects']
Esempio n. 10
0
def test_project_initilization_from_dict():
    project_dict = {
        'name': "Business",
        'uid': "P-001",
        'comments': "Management of business oportunities."
    }

    project = Project(**project_dict)
    assert project.name == "Business"
    assert project.uid == "P-001"
    assert project.comments == "Management of business oportunities."
Esempio n. 11
0
def json_file(tmpdir_factory):
    file_name = tmpdir_factory.mktemp('data').join('taskit.json')
    test_dictionary = {
        "projects": {
            'P-1': vars(Project("Personal", uid="P-1")),
            'P-2': vars(Project("Work", uid="P-2")),
            'P-3': vars(Project("Errands", uid="P-3"))
        },
        "tasks": {
            'T-1': vars(Task("Buy the milk",
                             uid="T-1", project_id="P-1", stage="New")),
            'T-2': vars(Task("Make conference presentation",
                             uid="T-2", project_id="P-2", stage="Progress")),
            'T-3': vars(Task("Clean the kitchen",
                             uid="T-3", project_id="P-1", stage="Done"))
        },
        "_sequences": {
            "projects": 4,
            "tasks": 4
        }
    }
    with open(str(file_name), 'w+') as f:
        json.dump(test_dictionary, f, default=json_serialize)
    return str(file_name)
Esempio n. 12
0
 def create_project(self, project_dict: Dict[str, any]):
     project = Project(**project_dict)
     self.project_repository.add(project)
 def add(self, project: Project) -> None:
     project.uid = project.uid or ("P-" + str(self.sequence))
     self.projects[project.uid] = project
     self.sequence += 1
Esempio n. 14
0
def project() -> Project:
    name = "Personal"
    return Project(name=name)