def test_find_project_replacing_dots_with_dashes(project_repository: DBProjectRepository, project_view: DBProjectView): project = ProjectStub.create(name=ProjectName('pepy-rocks')) project_repository.save_projects([project]) result = project_view.find('pepy.rocks') expected = ProjectProjection('pepy-rocks', project.downloads.value, []) assert result == expected
def test_find_project_ignoring_case(project_repository: DBProjectRepository, project_view: DBProjectView): project = ProjectStub.create(name=ProjectName("pepy")) project_repository.save_projects([project]) result = project_view.find("PEpy") expected = ProjectProjection("pepy", project.downloads.value, []) assert result == expected
def test_find_project_ignoring_white_spaces(project_repository: DBProjectRepository, project_view: DBProjectView): project = ProjectStub.create(name=ProjectName('pepy')) project_repository.save_projects([project]) result = project_view.find(' pepy ') expected = ProjectProjection('pepy', project.downloads.value, []) assert result == expected
def find(self, project_name: str) -> Optional[ProjectProjection]: project_name = project_name.lower().strip().replace(".", "-") data = self._db.table("projects").where("name", project_name).first() if data is None: return None last_downloads_data = (self._db.table("downloads_per_day").where( "name", project_name).order_by("date", "desc").limit(30).get()) last_downloads = [ DownloadProjection(row["date"], row["downloads"]) for row in last_downloads_data ] return ProjectProjection(data["name"], data["downloads"], last_downloads)