def test_archived_geokret_must_not_be_shown_in_cache_details(self): geokret_1 = self.blend_geokret( owner=self.user_1, created_on_datetime='2018-12-29T16:43:28') MovePayload(MOVE_TYPE_DROPPED, geokret=geokret_1)\ .set_moved_on_datetime('2018-12-29T16:44:57')\ .set_coordinates()\ .set_waypoint('ABC123')\ .post(user=self.user_1) geokret_2 = self.blend_geokret( owner=self.user_1, created_on_datetime='2018-12-29T16:43:28') MovePayload(MOVE_TYPE_DROPPED, geokret=geokret_2)\ .set_moved_on_datetime('2018-12-29T16:44:57')\ .set_coordinates()\ .set_waypoint('ABC123')\ .post(user=self.user_1) GeokretPayload()\ .get_collection(args={'filter': '[{"name":"last_position","op":"has","val":{"name":"waypoint","op":"eq","val":"ABC123"}}]'})\ .assertCount(2) MovePayload(MOVE_TYPE_ARCHIVED, geokret=geokret_1)\ .set_moved_on_datetime('2018-12-29T16:45:03')\ .post(user=self.user_1) GeokretPayload()\ .get_collection(args={'filter': '[{"name":"last_position__waypoint","op":"has","val":"ABC123"}]'})\ .assertCount(1)
def test_hide_archived_geokrety(self): geokret = self.blend_geokret(created_on_datetime="2019-01-01T02:21:26") MovePayload(MOVE_TYPE_DROPPED, geokret=geokret)\ .set_moved_on_datetime("2019-01-01T02:21:38")\ .set_coordinates(52.07567, 9.35367)\ .set_waypoint('ABC123')\ .post(user=self.admin) GeokretyInCachePayload()\ .get_collection(args={'latitude': 52.07567, 'longitude': 9.35367})\ .assertCount(1) GeokretyInCachePayload()\ .get_collection(args={'waypoint': 'ABC123'})\ .assertCount(1) move = MovePayload(MOVE_TYPE_ARCHIVED, geokret=geokret)\ .set_moved_on_datetime("2019-01-01T02:21:46")\ .post(user=self.admin) GeokretyInCachePayload()\ .get_collection(args={'latitude': 52.07567, 'longitude': 9.35367})\ .assertCount(0) GeokretyInCachePayload()\ .get_collection(args={'waypoint': 'ABC123'})\ .assertCount(0) MovePayload(moved_on_datetime="2019-01-01T02:21:30")\ .patch(move.id, user=self.admin) GeokretyInCachePayload()\ .get_collection(args={'latitude': 52.07567, 'longitude': 9.35367})\ .assertCount(1) GeokretyInCachePayload()\ .get_collection(args={'waypoint': 'ABC123'})\ .assertCount(1)
def test_move_on_datetime_must_not_be_at_the_same_datetime( self, move_type, expected): geokret = self.blend_geokret(created_on_datetime='2018-10-07T15:30:52') payload = MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ .set_moved_on_datetime('2018-10-09T19:40:28') payload.post(user=self.user_1) move = payload.post(user=self.user_1, code=expected) if expected == 422: move.assertRaiseJsonApiError('/data/attributes/moved-on-datetime')
def test_search_by_coordinates(self): geokret = self.blend_geokret(created_on_datetime="2018-12-30T12:56:31") geokret2 = self.blend_geokret( created_on_datetime="2018-12-30T12:56:31") GeokretyInCachePayload()\ .get_collection(args={'latitude': 52.07567, 'longitude': 9.35367})\ .assertCount(0) MovePayload(MOVE_TYPE_COMMENT, geokret=geokret)\ .set_moved_on_datetime("2018-12-30T12:57:16")\ .post(user=self.user_1) GeokretyInCachePayload()\ .get_collection(args={'latitude': 52.07567, 'longitude': 9.35367})\ .assertCount(0) MovePayload(MOVE_TYPE_DIPPED, geokret=geokret)\ .set_moved_on_datetime("2018-12-30T12:57:25")\ .set_coordinates(52.07567, 9.35367)\ .set_waypoint('ABC123')\ .post(user=self.user_1) GeokretyInCachePayload()\ .get_collection(args={'latitude': 52.07567, 'longitude': 9.35367})\ .assertCount(0) MovePayload(MOVE_TYPE_DROPPED, geokret=geokret)\ .set_moved_on_datetime("2018-12-30T12:57:33")\ .set_coordinates(52.07567, 9.35367)\ .set_waypoint('ABC123')\ .post(user=self.user_1) GeokretyInCachePayload()\ .get_collection(args={'latitude': 52.07567, 'longitude': 9.35367})\ .assertCount(1) MovePayload(MOVE_TYPE_DROPPED, geokret=geokret2)\ .set_moved_on_datetime("2018-12-30T12:57:45")\ .set_coordinates(52.07567, 9.35367)\ .set_waypoint('ABC123')\ .post(user=self.user_1) GeokretyInCachePayload()\ .get_collection(args={'latitude': 52.07567, 'longitude': 9.35367})\ .assertCount(2) MovePayload(MOVE_TYPE_DIPPED, geokret=geokret2)\ .set_moved_on_datetime("2018-12-30T12:57:49")\ .set_coordinates(42.0, 42.0)\ .set_waypoint('DEF456')\ .post(user=self.user_1) GeokretyInCachePayload()\ .get_collection(args={'latitude': 52.07567, 'longitude': 9.35367})\ .assertCount(1)
def test_field_application_version_may_be_absent(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ ._del_attribute('application_version')\ .post(user=self.user_1)\ .assertHasAttribute('application-version', None)
def test_field_application_name_no_html(self, application_name, expected): geokret = self.blend_geokret() MovePayload(MOVE_TYPE_DIPPED, geokret=geokret)\ .set_coordinates()\ .set_application_name(application_name)\ .post(user=self.user_1)\ .assertHasAttribute('application-name', expected)
def test_field_tracking_code_may_be_ommited_if_id_was_given(self): geokret = self.blend_geokret() MovePayload(MOVE_TYPE_COMMENT, geokret=geokret)\ .set_geokret_id(geokret.id)\ ._del_attribute('tracking-code')\ .post(user=self.user_1)\ .assertHasRelationshipGeokretData(geokret.id)
def test_last_move_must_be_updated(self, move_type1, move_type2, result_move2=True): geokret = self.blend_geokret(created_on_datetime="2018-12-24T15:35:45") if move_type1 is not None: MovePayload(move_type1, geokret=geokret, moved_on_datetime="2018-12-24T15:38:11")\ .set_coordinates()\ .post(user=self.user_1) if move_type2 is not None: move2 = MovePayload(move_type2, geokret=geokret, moved_on_datetime="2018-12-24T15:51:12")\ .set_coordinates()\ .post(user=self.user_1) last_move = move2.id if result_move2 else None self.assertEqual(geokret.last_move_id, last_move)
def test_country_is_computed_and_not_overridable(self): geokret = self.blend_geokret() MovePayload(self.move_type, geokret=geokret)\ .set_coordinates()\ ._set_attribute('country', 'pl')\ .post(user=self.user_1)\ .assertHasAttribute('country', 'FR')
def test_field_update_datetime_set_automatically(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ ._del_attribute('updated-on-datetime')\ .post(user=self.admin)\ .assertUpdatedDateTime()
def test_move_on_datetime_must_be_present(self, move_type): geokret = self.blend_geokret(created_on_datetime='2018-10-07T15:30:52') MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ ._del_attribute('moved-on-datetime')\ .post(user=self.user_1, code=422)\ .assertRaiseJsonApiError('/data/attributes/moved-on-datetime')
def test_field_longitude_cannot_be_empty(self, longitude): geokret = self.blend_geokret() MovePayload(self.move_type, geokret=geokret)\ .set_coordinates()\ ._set_attribute('longitude', longitude)\ .post(user=self.user_1, code=422)\ .assertRaiseJsonApiError('/data/attributes/longitude')
def test_field_application_version(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ .set_application_version('1.0.0')\ .post(user=self.user_1)\ .assertHasAttribute('application-version', '1.0.0')
def test_field_tracking_code_must_be_alphanumeric(self, tracking_code): geokret = self.blend_geokret() MovePayload(self.move_type, geokret=geokret)\ .set_coordinates()\ .set_tracking_code(tracking_code)\ .post(user=self.user_1, code=422)\ .assertRaiseJsonApiError('/data/attributes/tracking-code')
def test_field_waypoint_dont_accept_blank_characters(self, waypoint): geokret = self.blend_geokret() MovePayload(self.move_type, geokret)\ .set_coordinates()\ .set_waypoint(waypoint)\ .post(user=self.user_1, code=422)\ .assertRaiseJsonApiError('/data/attributes/waypoint')
def test_field_waypoint_must_be_alphanumeric(self, waypoint): geokret = self.blend_geokret() MovePayload(self.move_type, geokret)\ .set_coordinates()\ .set_waypoint(waypoint)\ .post(user=self.user_1, code=422)\ .assertRaiseJsonApiError('/data/attributes/waypoint')
def test_field_waypoint_can_be_empty(self, waypoint): geokret = self.blend_geokret() MovePayload(self.move_type, geokret)\ .set_coordinates()\ .set_waypoint(waypoint)\ .post(user=self.user_1)\ .assertHasAttribute('waypoint', '')
def test_distance_is_computed_and_not_overridable(self): geokret = self.blend_geokret() MovePayload(self.move_type, geokret=geokret)\ .set_coordinates()\ ._set_attribute('distance', 666)\ .post(user=self.user_1)\ .assertHasAttribute('distance', 0)
def test_field_application_version_too_long(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ .set_application_version('1.0.0.1.0.0.1.0.0.1.0.0.1.0.0')\ .post(user=self.user_1, code=422)\ .assertRaiseJsonApiError('/data/attributes/application-version')
def test_field_username_is_not_overridable(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ .set_username('Some unregistered user')\ .post(user=self.user_1)\ .assertHasAttribute('username', '')
def test_move_type_is_mandatory(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ ._del_relationships('type')\ .post(user=self.user_1, code=422)\ .assertRaiseJsonApiError('/data/relationships/type')
def test_field_comment(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ .set_comment('Some text')\ .post(user=self.user_1)\ .assertHasAttribute('comment', 'Some text')
def test_relationship_author_defaults_to_current_user(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ ._del_relationships('author')\ .post(user=self.user_1)\ .assertHasRelationshipAuthorData(self.user_1.id)
def test_relationship_author_is_not_overridable(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ .set_author(self.user_2.id)\ .post(user=self.user_1, code=403)\ .assertRaiseJsonApiError('/data/relationships/author')
def test_archive_date_must_not_be_before_born_date(self): geokret = self.blend_geokret(owner=self.user_1, created_on_datetime='2018-12-29T16:33:46') MovePayload(MOVE_TYPE_ARCHIVED, geokret=geokret)\ .set_moved_on_datetime('2018-12-29T16:33:00')\ .post(user=self.user_1, code=422)\ .assertRaiseJsonApiError('/data/attributes/moved-on-datetime')
def test_relationship_author_can_be_overrided_by_an_admin(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ .set_author(self.user_2.id)\ .post(user=self.admin)\ .assertHasRelationshipAuthorData(self.user_2.id)
def test_moves_edit_is_forbidden_as(self, username, expected): self.user_0 = self.blend_user() user = getattr(self, username) if username else None geokret = self.blend_geokret(owner=self.user_0) move = self.blend_move(type=MOVE_TYPE_DIPPED, geokret=geokret, author=self.user_1) response = MovePayload()\ .set_id(move.id)\ .set_coordinates()\ .set_comment("Some new comment")\ .patch(move.id, user=user, code=expected) if expected == 200: response.assertHasAttribute('comment', "Some new comment") else: self.assertNotEqual(move.comment, "Some new comment")
def test_field_application_name(self, move_type): geokret = self.blend_geokret() MovePayload(move_type, geokret=geokret)\ .set_coordinates()\ .set_application_name('Some name')\ .post(user=self.user_1)\ .assertHasAttribute('application-name', 'Some name')
def test_field_latitude_longitude_may_be_both_none(self): geokret = self.blend_geokret() MovePayload(self.move_type, geokret=geokret)\ .set_coordinates(None, None)\ .post(user=self.user_1)\ .assertHasAttribute('latitude', None)\ .assertHasAttribute('longitude', None)
def test_field_tracking_code_must_be_present_if_id_not_given(self): geokret = self.blend_geokret() MovePayload(MOVE_TYPE_COMMENT, geokret=geokret)\ ._del_attribute('tracking-code')\ ._del_attribute('id')\ .post(user=self.user_1, code=422)\ .assertRaiseJsonApiError('/data/attributes/tracking-code')