Ejemplo n.º 1
0
def test_create_log_entry(instrument, instrument_responsible_user, other_user):

    assert len(instrument_log_entries.get_instrument_log_entries(
        instrument.id)) == 0
    instrument_log_entries.create_instrument_log_entry(
        instrument.id, instrument_responsible_user.id, "test")
    assert len(instrument_log_entries.get_instrument_log_entries(
        instrument.id)) == 1
    instrument_log_entries.create_instrument_log_entry(instrument.id,
                                                       other_user.id, "test2")
    assert len(instrument_log_entries.get_instrument_log_entries(
        instrument.id)) == 2
    log_entries = instrument_log_entries.get_instrument_log_entries(
        instrument.id)
    assert log_entries[0].author == instrument_responsible_user
    assert log_entries[0].content == "test"
    assert log_entries[1].author == other_user
    assert log_entries[1].content == "test2"
    for i in range(2):
        assert log_entries[i].instrument_id == instrument.id
        assert instrument_log_entries.get_instrument_log_entry(
            log_entries[i].id) == log_entries[i]

    with pytest.raises(errors.InstrumentDoesNotExistError):
        instrument_log_entries.create_instrument_log_entry(
            instrument.id + 1, instrument_responsible_user.id, "test")

    with pytest.raises(errors.InstrumentLogEntryDoesNotExistError):
        assert instrument_log_entries.get_instrument_log_entry(4)
Ejemplo n.º 2
0
 def get(self, instrument_id: int, log_entry_id: int,
         object_attachment_id: int):
     try:
         instrument = get_instrument(instrument_id=instrument_id)
     except errors.InstrumentDoesNotExistError:
         return {
             "message": f"instrument {instrument_id} does not exist"
         }, 404
     if not instrument.users_can_view_log_entries and flask.g.user not in instrument.responsible_users:
         return {
             "message":
             f"log entries for instrument {instrument_id} can only be accessed by instrument scientists"
         }, 403
     try:
         log_entry = get_instrument_log_entry(log_entry_id)
         if log_entry.instrument_id != instrument_id:
             raise errors.InstrumentLogEntryDoesNotExistError()
     except errors.InstrumentLogEntryDoesNotExistError:
         return {
             "message":
             f"log entry {log_entry_id} for instrument {instrument_id} does not exist"
         }, 404
     try:
         object_attachment = get_instrument_log_object_attachment(
             object_attachment_id)
         if object_attachment.log_entry_id != log_entry_id:
             raise errors.InstrumentLogObjectAttachmentDoesNotExistError()
     except errors.InstrumentLogObjectAttachmentDoesNotExistError:
         return {
             "message":
             f"object attachment {object_attachment_id} for log entry {log_entry_id} for instrument {instrument_id} does not exist"
         }, 404
     return object_attachment_to_json(object_attachment)
def test_log_entry_categories(instrument, instrument_responsible_user):
    category_a = instrument_log_entries.create_instrument_log_category(
        instrument_id=instrument.id,
        title="Category A",
        theme=instrument_log_entries.InstrumentLogCategoryTheme.GRAY
    )
    category_b = instrument_log_entries.create_instrument_log_category(
        instrument_id=instrument.id,
        title="Category B",
        theme=instrument_log_entries.InstrumentLogCategoryTheme.RED
    )
    assert set(instrument_log_entries.get_instrument_log_categories(instrument.id)) == {category_a, category_b}

    log_entry = instrument_log_entries.create_instrument_log_entry(
        instrument_id=instrument.id,
        user_id=instrument_responsible_user.id,
        content="test",
        category_ids=[
            category_a.id,
            category_b.id
        ]
    )
    assert set(log_entry.versions[-1].categories) == {category_a, category_b}
    instrument_log_entries.update_instrument_log_category(
        category_id=category_a.id,
        title="Category A+",
        theme=instrument_log_entries.InstrumentLogCategoryTheme.GREEN
    )
    instrument_log_entries.delete_instrument_log_category(category_b.id)
    assert category_b not in set(instrument_log_entries.get_instrument_log_categories(instrument.id))

    log_entry = instrument_log_entries.get_instrument_log_entry(log_entry.id)
    assert len(log_entry.versions[-1].categories) == 1
    assert log_entry.versions[-1].categories[0].title == "Category A+"
    assert log_entry.versions[-1].categories[0].theme.name.lower() == 'green'

    log_entry = instrument_log_entries.create_instrument_log_entry(
        instrument_id=instrument.id,
        user_id=instrument_responsible_user.id,
        content="test"
    )
    assert len(log_entry.versions[-1].categories) == 0

    with pytest.raises(errors.InstrumentLogCategoryDoesNotExistError):
        instrument_log_entries.create_instrument_log_entry(
            instrument_id=instrument.id,
            user_id=instrument_responsible_user.id,
            content="test",
            category_ids=[category_b.id]
        )