def post(self, local_data=None): """Endpoint for creating a new passover :param json_string local_data: This should be used in place of the POST body that would be used through HTTP, used for local calls. :returns: response_object, status_code :rtype: tuple (dict, int) """ if not local_data: post_data = request.get_json() else: post_data = json.loads(local_data) try: validated_data = self.validator.load(post_data) except ValidationError as err: response_object = { 'status': 'fail', 'message': 'The posted data is not valid!', 'errors': err.messages } return response_object, 400 passovers = validated_data['passovers'] for passover in passovers: p = Passover(**passover) db.session.add(p) db.session.commit() response_object = { 'status': 'success', 'message': 'Passovers were successfully created' } return response_object, 201
def test_get_next_passover(self): current_time = datetime.datetime.now(datetime.timezone.utc) # print('current_time', str(current_time)) offset = datetime.timedelta(minutes=90) correct_next_passover = None for i in range(-10, 10, 1): d = current_time + i * offset if i == 0: continue if i == 1: correct_next_passover = d p = Passover(timestamp=d) db.session.add(p) db.session.commit() with self.client: response = self.client.get('/api/passovers?next=true&limit=1') response_data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertTrue('next_passovers' in response_data['data'].keys()) self.assertEqual(len(response_data['data']['next_passovers']), 1) self.assertEqual(str(correct_next_passover).split('+')[0], response_data['data']['next_passovers'][0]['timestamp'])
def add_passover(timestamp): """Add a new passover to the database """ passover = Passover(timestamp=timestamp) db.session.add(passover) db.session.commit() return passover
def test_get_next_passover_when_none_exist(self): current_time = datetime.datetime.now(datetime.timezone.utc) offset = datetime.timedelta(minutes=90) for i in range(-10, -5, 1): d = current_time + i * offset p = Passover(timestamp=d) db.session.add(p) db.session.commit() with self.client: response = self.client.get('/api/passovers?next=true') response_data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertTrue('next_passovers' in response_data['data'].keys()) self.assertEqual(len(response_data['data']['next_passovers']), 0)