Skip to content

Commit

Permalink
implement list all leads (#19)
Browse files Browse the repository at this point in the history
implement list all leads
  • Loading branch information
surajit003 committed Mar 4, 2023
1 parent f0bb2b5 commit b69dd31
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 8 deletions.
15 changes: 13 additions & 2 deletions core/apps/crm/handlers/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from core.apps.crm.domain.exceptions import InvalidPhoneNumberException
from core.apps.crm.handlers.factories import InternalUseCaseFactory
from core.apps.crm.logic.lead import create_lead, get_lead, update_lead
from core.apps.crm.logic.lead import create_lead, get_lead, update_lead, get_leads
from core.apps.crm.repo.exceptions import LeadExistException, LeadDoesNotExistException


Expand Down Expand Up @@ -38,7 +38,18 @@ def post(self, request):

return Response(lead.dict(), status=status.HTTP_201_CREATED)

def get(self, request, lead_id):
def get(self, request, lead_id=None):
if not lead_id:
leads_dict = {}
if leads := get_leads(lead_repo=InternalUseCaseFactory().get_repo()):
leads_dict = [lead.__dict__ for lead in leads]

return Response(
{
"message": leads_dict,
},
status=status.HTTP_200_OK,
)
try:
lead = get_lead(
lead_id=lead_id, lead_repo=InternalUseCaseFactory().get_repo()
Expand Down
4 changes: 2 additions & 2 deletions core/apps/crm/logic/lead.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ def get_lead(lead_id: UUID, lead_repo: AbstractLeadRepository) -> Optional[LeadE
return lead_repo.get(lead_id)


def list_all(lead_repo: AbstractLeadRepository) -> Optional[Sequence[LeadEntity]]:
return lead_repo.list_all()
def get_leads(lead_repo: AbstractLeadRepository) -> Optional[Sequence[LeadEntity]]:
return lead_repo.get_all()
2 changes: 1 addition & 1 deletion core/apps/crm/repo/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ def delete(self, lead_id: UUID):
...

@abstractmethod
def list_all(self):
def get_all(self):
...
2 changes: 1 addition & 1 deletion core/apps/crm/repo/lead.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@ def delete(self, lead_id: UUID) -> None:
instance = self._get_instance(lead_id)
return instance.delete()

def list_all(self) -> Optional[Sequence[LeadEntity]]:
def get_all(self) -> Optional[Sequence[LeadEntity]]:
leads = Lead.objects.all()
return [LeadEntity(**lead.__dict__) for lead in leads]
12 changes: 12 additions & 0 deletions core/apps/crm/tests/handlers/test_web.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,18 @@ def test_get_lead(client, lead_factory):
assert resp_json["id"] == str(lead.id)


def test_leads(client, lead_factory):
lead_factory()
lead_factory()
response = client.get(
"/api/v1/leads/",
)
resp_json = response.json()
assert response.status_code == 200
assert resp_json
assert len(resp_json["message"]) == 2


def test_get_lead_raises_lead_does_not_exist_error(client):
response = client.get(
"/api/v1/leads/1082cef2-de55-4683-b78c-79e6b5ef8f6b/",
Expand Down
4 changes: 2 additions & 2 deletions core/apps/crm/tests/logic/test_lead.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import pytest

from core.apps.crm.logic.lead import create_lead, list_all, update_lead
from core.apps.crm.logic.lead import create_lead, get_leads, update_lead

pytestmark = pytest.mark.django_db

Expand Down Expand Up @@ -30,6 +30,6 @@ def test_update_lead(lead_factory, lead_repo):
def test_list_all(lead_factory, lead_repo):
lead_factory()
lead_factory()
leads = list_all(lead_repo)
leads = get_leads(lead_repo)
assert leads
assert len(leads) == 2

0 comments on commit b69dd31

Please sign in to comment.