Exemplo n.º 1
0
    def test_user_schedule_creation(self):
        created_datetime = datetime.datetime(year=2020,
                                             month=12,
                                             day=2,
                                             hour=8,
                                             minute=30)
        user = self.generate_random_user_item().save()
        schedule_item = self.generate_random_schedule_item()
        user_schedule = UserSchedule.objects().create(
            user_id=user,
            name="Dummy Schedule",
            deleted=False,
            schedule_items=[schedule_item],
            created_at=created_datetime,
        )

        user_schedules = UserSchedule.objects
        assert len(user_schedules) == 1
        assert user_schedule in user_schedules

        fetched_user_schedule = user_schedules().first()
        assert fetched_user_schedule.user_id == user
        assert fetched_user_schedule.name == "Dummy Schedule"
        assert not fetched_user_schedule.deleted
        assert len(fetched_user_schedule.schedule_items) == 1
        assert schedule_item in fetched_user_schedule.schedule_items
        assert fetched_user_schedule.created_at == created_datetime

        user_schedule.delete()
Exemplo n.º 2
0
def delete_user_schedule(user_id, user_schedule_id):
    user_schedule = UserSchedule.objects(user_id=user_id,
                                         id=user_schedule_id).first()
    if user_schedule is None:
        return jsonify({'message': 'Schedule not found.'}), 404
    user_schedule.deleted = True
    user_schedule.save()
    return (jsonify(), 204)
Exemplo n.º 3
0
def edit_user_schedule(user_id, user_schedule_id):
    user_schedule = UserSchedule.objects(id=user_schedule_id).first()
    data = request.json
    user_schedule.clear_schedule_item()
    for editedScheduleItem in data['schedule_items']:
        user_schedule.add_schedule_item(**editedScheduleItem)
    user_schedule.save()

    return (jsonify({'user_schedule': user_schedule.serialize()}), 200)
Exemplo n.º 4
0
def get_user_schedule_detail(user_schedule_id):
    user_schedule = UserSchedule.objects(id=user_schedule_id).first()
    request_user_id = get_user_id(request)
    return (jsonify({
        'user_schedule': {
            **user_schedule.serialize(), "has_edit_access":
            str(user_schedule.user_id.id) == request_user_id
        }
    }), 200)
Exemplo n.º 5
0
def rename_user_schedule(user_id, user_schedule_id):
    data = request.json
    user_schedule = UserSchedule.objects(user_id=user_id,
                                         id=user_schedule_id).first()
    if user_schedule is None:
        return jsonify({'message': 'Schedule not found.'}), 404
    user_schedule.name = html.escape(data["name"])
    user_schedule.save()
    return (jsonify({'user_schedule': user_schedule.serialize()}), 200)
Exemplo n.º 6
0
    def test_save_user_schedule(self, auth_client):
        client, user = auth_client
        url = '{}/users/{}/user_schedule'.format(BASE_PATH, user.id)
        res = client.post(url, json={'schedule_items': self.schedule_items})

        assert res.status_code == 201
        assert res.get_json()['id']

        user_schedules = UserSchedule.objects(user_id=user.id).all()
        assert len(user_schedules) == 1
Exemplo n.º 7
0
    def test_get_empty_user_schedules(self, auth_client):
        client, user = auth_client
        url = '{}/users/{}/user_schedules'.format(BASE_PATH, user.id)
        res = client.get(url)

        assert res.status_code == 200
        assert res.get_json()['user_schedules'] == []

        user_schedules = UserSchedule.objects(user_id=user.id).all()
        assert len(user_schedules) == 0
Exemplo n.º 8
0
    def test_user_schedule_deletion(self):
        user_schedule = UserSchedule.objects().create(
            user_id=self.generate_random_user_item().save(),
            name=self.get_random_string(128),
            schedule_items=[],
        )

        assert len(UserSchedule.objects) == 1
        assert user_schedule in UserSchedule.objects

        user_schedule.delete()
        assert len(UserSchedule.objects) == 0
        assert user_schedule not in UserSchedule.objects
Exemplo n.º 9
0
def edit_user_schedule(user_id, user_schedule_id):
    user_schedule = UserSchedule.objects(id=user_schedule_id).first()
    # If the schedule doesn't exist or the user is mismatched,
    # create a new one with the same items.
    if user_schedule is None:
        user_schedule = UserSchedule(user_id=user_id)
    elif str(user_schedule.user_id.id) != user_id:
        name = f'{user_schedule.name} (copied)'
        user_schedule = UserSchedule(user_id=user_id, name=name)
    data = request.json
    user_schedule.clear_schedule_item()
    for editedScheduleItem in data['schedule_items']:
        user_schedule.add_schedule_item(**editedScheduleItem)
    user_schedule.save()

    return (jsonify({'user_schedule': user_schedule.serialize()}), 200)
Exemplo n.º 10
0
    def test_user_schedule_update(self):
        user_schedule = UserSchedule.objects().create(user_id=None,
                                                      name="Old Schedule",
                                                      schedule_items=[])

        new_user = self.generate_random_user_item().save()
        new_schedule_item = self.generate_random_schedule_item()
        new_created_at = datetime.datetime(year=2020, month=12, day=3, hour=8)
        user_schedule.user_id = new_user
        user_schedule.name = "New Schedule"
        user_schedule.schedule_items = [new_schedule_item]
        user_schedule.deleted = True
        user_schedule.created_at = new_created_at
        user_schedule.save()
        user_schedule.reload()

        assert user_schedule.user_id == new_user
        assert user_schedule.name == "New Schedule"
        assert new_schedule_item in user_schedule.schedule_items
        assert user_schedule.deleted
        assert user_schedule.created_at == new_created_at

        user_schedule.delete()
Exemplo n.º 11
0
def rename_user_schedule(user_id, user_schedule_id):
    data = request.json
    user_schedule = UserSchedule.objects(id=user_schedule_id).first()
    user_schedule.name = html.escape(data["name"])
    user_schedule.save()
    return (jsonify({'user_schedule': user_schedule.serialize()}), 200)
Exemplo n.º 12
0
def delete_user_schedule(user_id, user_schedule_id):
    user_schedule = UserSchedule.objects(id=user_schedule_id).first()
    user_schedule.deleted = True
    user_schedule.save()
    return (jsonify(), 204)
Exemplo n.º 13
0
def get_user_schedule_list(user_id):
    schedules = UserSchedule.objects(user_id=user_id, deleted=False).all()
    data = []
    for schedule in schedules:
        data.append(schedule.serialize())
    return (jsonify({'user_schedules': data}), 200)
Exemplo n.º 14
0
def get_user_schedule_detail(user_schedule_id):
    user_schedule = UserSchedule.objects(id=user_schedule_id).first()
    return (jsonify({'user_schedule': user_schedule.serialize()}), 200)