Skip to content

Commit

Permalink
add test for skills and refactor other tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Maxcutex committed Jan 25, 2021
1 parent 8ceef5c commit 411e0ba
Show file tree
Hide file tree
Showing 8 changed files with 545 additions and 151 deletions.
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
exclude: '^vessel.py'
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
Expand Down
25 changes: 23 additions & 2 deletions app/blueprints/skill_blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,44 @@
skill_controller = SkillController(request)


@skill_blueprint.route('/')
@skill_blueprint.route("/", methods=["GET"])
@Auth.has_permission(["view_skill"])
def list_skills():
return skill_controller.list_skills()


@skill_blueprint.route('/<int:id>/')
@skill_blueprint.route("/<int:id>/", methods=["GET"])
@Auth.has_permission(["view_skill"])
def get_skill(skill_id):
return skill_controller.get_skill(skill_id)


@skill_blueprint.route("/", methods=["POST"])
@Security.validator(
[
"name|required:string",
"skill_category_id|required:int",
]
)
@Auth.has_permission(["create_skill"])
def create_skill():
return skill_controller.create_skill()


@skill_blueprint.route("/<int:skill_id>", methods=["PUT", "PATCH"])
@Security.validator(
[
"skill_id|required:int",
"name|required:string",
"skill_category_id|required:int",
]
)
@Auth.has_permission(["update_skill"])
def update_skill(skill_id):
return skill_controller.update_skill(skill_id)


@skill_blueprint.route("/<int:skill_id>", methods=["DELETE"])
@Auth.has_permission(["delete_skill"])
def delete_skill(skill_id):
return skill_controller.delete_skill(skill_id)
72 changes: 49 additions & 23 deletions app/controllers/skill_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,33 @@ def __init__(self, request):
self.skill_repo = SkillRepo()

def list_skills(self):
skills = self.skill_repo.fetch_all()
if skills:
skill_list = [skill.serialize() for skill in skills.items]
return self.handle_response(
"OK",
payload={
"skills": skill_list,
"meta": self.pagination_meta(skills),
},
)
return self.handle_response("Empty dataset", status_code=400)
skills = self.skill_repo.get_unpaginated()
skill_list = [skill.serialize() for skill in skills.items]
return self.handle_response(
"OK",
payload={
"skills": skill_list,
},
)

def get_skill(self, skill_id):
skill = self.skill_repo.get(skill_id)
skill = self.skill_repo.find_first(id=skill_id)
if skill:
return self.handle_response("OK", payload={"skill": skill.serialize()})
return self.handle_response("Invalid or Missing skill_id", status_code=400)

def create_skill(self):
name, skill_category_id = self.request_params("name", "skill_category_id")
skill = self.skill_repo.find_first(
name=name, skill_category_id=skill_category_id
)

if skill:
print("testing ....")
return self.handle_response(
f"Skill name {skill.name} with category name {skill.skill_category.name} already exists",
status_code=400,
)
skill = self.skill_repo.new_skill(
name=name, skill_category_id=skill_category_id
)
Expand All @@ -36,23 +43,42 @@ def create_skill(self):
"OK", payload={"skill": skill.serialize()}, status_code=201
)

def update_skill(self, skill_id):
name, skill_category_id = self.request_params("name", "skill_category_id")
skill = self.skill_repo.get(skill_id)
if skill:
skill = self.skill_repo.update(skill, **dict(name=name, skill_category_id=skill_category_id))
def update_skill(self, update_id):
skill_id, name, skill_category_id = self.request_params(
"skill_id", "name", "skill_category_id"
)
skill = self.skill_repo.find_first(
name=name, skill_category_id=skill_category_id
)

skill_other = self.skill_repo.get(name=name)

if skill_id != update_id:
return self.handle_response(
"OK", payload={"skill": skill.serialize()}, status_code=201
"Invalid or incorrect skill_id provided", status_code=400
)
return self.handle_response("Location Not Found", status_code=404)

if skill:
if skill.id == skill_other.id:
skill = self.skill_repo.update(
skill, **dict(name=name, skill_category_id=skill_category_id)
)
return self.handle_response(
"OK", payload={"skill": skill.serialize()}, status_code=200
)
else:
return self.handle_response(
f"Skill name '{name}' with category name {skill_other.skill_category.name} already exists",
status_code=400,
)
return self.handle_response("Skill Not Found", status_code=404)

def delete_skill(self, skill_id):
skill = self.skill_repo.get(skill_id)
update_dict ={"is_deleted": True}
update_dict = {"is_deleted": True}
if skill:
self.skill_repo.update(**update_dict)
return self.handle_response("role deleted", payload={"status": "success"})
return self.handle_response("skill deleted", payload={"status": "success"})
return self.handle_response(
"Invalid or incorrect role_id provided", status_code=404
)
"Invalid or incorrect skill_id provided", status_code=404
)
2 changes: 0 additions & 2 deletions factories/skill_category_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ class Meta:
model = SkillCategory
sqlalchemy_session = db.session

id = factory.Sequence(lambda n: n)
name = factory.Faker("name")
help = factory.Faker("paragraph")
is_active = fake.boolean(chance_of_getting_true=75)
Expand Down Expand Up @@ -49,7 +48,6 @@ class SkillCategoryFactoryFake(factory.Factory):
class Meta:
model = SkillCategory

id = factory.Sequence(lambda n: n)
name = factory.Faker("name")
help = factory.Faker("paragraph")
is_active = fake.boolean(chance_of_getting_true=75)
Expand Down
4 changes: 4 additions & 0 deletions tests/integration/endpoints/test_skills_category_endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,15 @@ def test_get_specific_skill_category_endpoint(self):
role = RoleFactory.create()
user_id = BaseTestCase.user_id()
skills_category = SkillCategoryFactory.create()
skills_category.save()
PermissionFactory.create(keyword="view_skills_categories", role=role)
UserRoleFactory.create(user_id=user_id, role=role)

response = self.client().get(
self.make_url("/skills_categories/{}".format(skills_category.id)),
headers=self.headers(),
)

response_json = self.decode_from_json_string(response.data.decode("utf-8"))
payload = response_json["payload"]

Expand Down Expand Up @@ -124,6 +126,7 @@ def test_invalid_update(self):
def test_delete_skill_category_endpoint_with_right_permission(self):
role = RoleFactory.create()
skills_category = SkillCategoryFactory.create()
skills_category.save()
user_id = BaseTestCase.user_id()

PermissionFactory.create(keyword="delete_skills_categories", role=role)
Expand All @@ -132,6 +135,7 @@ def test_delete_skill_category_endpoint_with_right_permission(self):
self.make_url(f"/skills_categories/{skills_category.id}"),
headers=self.headers(),
)

response_json = self.decode_from_json_string(response.data.decode("utf-8"))
payload = response_json["payload"]

Expand Down
Loading

0 comments on commit 411e0ba

Please sign in to comment.