Esempio n. 1
0
    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
Esempio n. 2
0
    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'])
Esempio n. 3
0
def add_passover(timestamp):
    """Add a new passover to the database
    """
    passover = Passover(timestamp=timestamp)
    db.session.add(passover)
    db.session.commit()
    return passover
Esempio n. 4
0
    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)