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"
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)
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)
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']
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."
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)
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
def project() -> Project: name = "Personal" return Project(name=name)