Skip to content

Commit

Permalink
Added more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
midithaf committed Jun 3, 2021
1 parent f3f311d commit 4dad069
Show file tree
Hide file tree
Showing 2 changed files with 207 additions and 12 deletions.
9 changes: 4 additions & 5 deletions predicthq/endpoints/v1/features/schemas.py
Expand Up @@ -5,7 +5,6 @@


class FeatureCriteria(Model):

class Options:
serialize_when_none = True

Expand All @@ -14,10 +13,10 @@ class Options:


class FeatureGeoPoint(Model):
lat = FloatType(required=True)
lon = FloatType(required=True)
radius = StringType(regex=r'\d+(k?m|mi)', required=True, messages={
'regex': 'Radius needs to define a number and unit (m, km, mi) eg. 100km'
lat = FloatType(required=True, min_value=-90.0, max_value=90.0)
lon = FloatType(required=True, min_value=-180.0, max_value=180.0)
radius = StringType(regex=r'^\d+(k?m|mi)$', required=True, messages={
'regex': 'Radius needs to define a number and unit (m, km, mi) eg. 100km',
})


Expand Down
210 changes: 203 additions & 7 deletions tests/endpoints/v1/test_features.py
Expand Up @@ -7,7 +7,177 @@
class FeaturesTest(unittest.TestCase):

@with_mock_client()
def test_request_params_dicts(self, client):
def test_attendance_request_params_underscores(self, client):
feature_stats = ['avg', 'count', 'max', 'median', 'min', 'sum', 'std_dev']
client.features.obtain_features(
active__gte="2017-12-31",
active__lte="2018-01-02",
location__place_id=[4671654],
phq_attendance_academic_graduation__stats=feature_stats,
phq_attendance_academic_graduation__phq_rank={
"gt": 50
},
phq_attendance_academic_social__stats=feature_stats,
phq_attendance_community__stats=feature_stats,
phq_attendance_concerts__stats=feature_stats,
phq_attendance_conferences__stats=feature_stats,
phq_attendance_expos__stats=feature_stats,
phq_attendance_festivals__stats=feature_stats,
phq_attendance_performing_arts__stats=feature_stats,
phq_attendance_sports__stats=feature_stats,
)

client.request.assert_called_once_with(
'post', '/v1/features/',
json={
"active": {
"gte": "2017-12-31",
"lte": "2018-01-02"
},
"location": {
"place_id": [
"4671654"
]
},
"phq_attendance_academic_graduation": {
"stats": feature_stats,
"phq_rank": {
"gt": 50
}
},
"phq_attendance_academic_social": {
"stats": feature_stats
},
"phq_attendance_community": {
"stats": feature_stats
},
"phq_attendance_concerts": {
"stats": feature_stats
},
"phq_attendance_conferences": {
"stats": feature_stats
},
"phq_attendance_expos": {
"stats": feature_stats
},
"phq_attendance_festivals": {
"stats": feature_stats
},
"phq_attendance_performing_arts": {
"stats": feature_stats
},
"phq_attendance_sports": {
"stats": feature_stats
}
}
)

@with_mock_client()
def test_attendance_request_params_dicts(self, client):
feature_criteria = {
"stats": ['avg', 'count', 'max', 'median', 'min', 'sum', 'std_dev'],
"phq_rank": {
"gt": 50
}
}
client.features.obtain_features(
active={
"gte": "2017-12-31",
"lte": "2018-01-02"
},
location={
"geo": {
"lon": -71.49978,
"lat": 41.75038,
"radius": "30km"
}
},
phq_attendance_academic_graduation=feature_criteria,
phq_attendance_academic_social=feature_criteria,
phq_attendance_community=feature_criteria,
phq_attendance_concerts=feature_criteria,
phq_attendance_conferences=feature_criteria,
phq_attendance_expos=feature_criteria,
phq_attendance_festivals=feature_criteria,
phq_attendance_performing_arts=feature_criteria,
phq_attendance_sports=feature_criteria
)

client.request.assert_called_once_with(
'post', '/v1/features/',
json={
"active": {
"gte": "2017-12-31",
"lte": "2018-01-02"
},
"location": {
"geo": {
"lat": 41.75038,
"lon": -71.49978,
"radius": "30km"
}
},
"phq_attendance_academic_graduation": feature_criteria,
"phq_attendance_academic_social": feature_criteria,
"phq_attendance_community": feature_criteria,
"phq_attendance_concerts": feature_criteria,
"phq_attendance_conferences": feature_criteria,
"phq_attendance_expos": feature_criteria,
"phq_attendance_festivals": feature_criteria,
"phq_attendance_performing_arts": feature_criteria,
"phq_attendance_sports": feature_criteria
}
)

@with_mock_client()
def test_rank_request_params_underscores(self, client):
client.features.obtain_features(
active__gte="2017-12-31",
active__lte="2018-01-02",
location__geo={
"lon": -71.49978,
"lat": 41.75038,
"radius": "30km"
},
phq_rank_daylight_savings=True,
phq_rank_health_warnings=True,
phq_rank_observances=True,
phq_rank_public_holidays=True,
phq_rank_school_holidays=True,
phq_rank_politics=True,
phq_rank_academic_session=True,
phq_rank_academic_exam=True,
phq_rank_academic_holiday=True
)

client.request.assert_called_once_with(
'post', '/v1/features/',
json={
"active": {
"gte": "2017-12-31",
"lte": "2018-01-02"
},
"location": {
"geo": {
"lat": 41.75038,
"lon": -71.49978,
"radius": "30km"
}
},
"phq_rank_daylight_savings": True,
"phq_rank_health_warnings": True,
"phq_rank_observances": True,
"phq_rank_public_holidays": True,
"phq_rank_school_holidays": True,
"phq_rank_politics": True,
"phq_rank_academic_session": True,
"phq_rank_academic_exam": True,
"phq_rank_academic_holiday": True
}
)

@with_mock_client()
def test_rank_request_params_dicts(self, client):
client.features.obtain_features(
active={
"gte": "2017-12-31",
Expand All @@ -16,22 +186,48 @@ def test_request_params_dicts(self, client):
location={
"place_id": [4671654]
},
phq_rank_public_holidays=True
phq_rank_daylight_savings=True,
phq_rank_health_warnings=True,
phq_rank_observances=True,
phq_rank_public_holidays=True,
phq_rank_school_holidays=True,
phq_rank_politics=True,
phq_rank_academic_session=True,
phq_rank_academic_exam=True,
phq_rank_academic_holiday=True
)

client.request.assert_called_once_with(
'post', '/v1/features/',
json={"active": {"gte": "2017-12-31", "lte": "2018-01-02"}, "location": {"place_id": ["4671654"]},
"phq_rank_public_holidays": True}
json={
"active": {
"gte": "2017-12-31",
"lte": "2018-01-02"
},
"location": {
"place_id": [
"4671654"
]
},
"phq_rank_daylight_savings": True,
"phq_rank_health_warnings": True,
"phq_rank_observances": True,
"phq_rank_public_holidays": True,
"phq_rank_school_holidays": True,
"phq_rank_politics": True,
"phq_rank_academic_session": True,
"phq_rank_academic_exam": True,
"phq_rank_academic_holiday": True
}
)

@with_client()
@with_mock_responses()
def test_obtain_features(self, client, responses):
result = client.features.obtain_features(active={
"gte": "2017-12-31",
"lte": "2018-01-02"
},
"gte": "2017-12-31",
"lte": "2018-01-02"
},
location={
"place_id": [4671654]
},
Expand Down

0 comments on commit 4dad069

Please sign in to comment.