def test_calendar__CalendarView__1(address_book, FieldFactory, browser):
    """It allows to select fields for display in the calendar."""
    field = FieldFactory(
        address_book, IEvent, u'Int', u'reservations').__name__
    browser.login('cal-editor')
    browser.open(browser.CALENDAR_MASTERDATA_URL)
    browser.getLink('Calendar view').click()
    assert browser.CALENDAR_MASTERDATA_EDIT_DISPLAY_URL == browser.url
    browser.getControl('Additional event fields').displayValue = [
        'persons',
        'reservations',
    ]
    browser.getControl('Save').click()
    assert 'Data successfully updated.' == browser.message
    browser.open(browser.CALENDAR_MASTERDATA_EDIT_DISPLAY_URL)
    assert browser.getControl('Additional event fields').displayValue == [
        'persons',
        'reservations',
    ]
    # It does not break on selected but deleted user defined field:
    with zope.component.hooks.site(address_book):
        event_entity = IEntity(IEvent)
        event_entity.removeField(event_entity.getRawField(field))
    browser.open(browser.CALENDAR_MASTERDATA_EDIT_DISPLAY_URL)
    assert browser.getControl('Additional event fields').displayValue == [
        'persons',
    ]
def test_calendar__EventDescription__getInfo__2(address_book, EventFactory,
                                                DateTime, CategoryFactory,
                                                selected_user_field,
                                                utc_time_zone_pref):
    """It ignores a selected but later deleted user defined field."""
    ed = IEventDescription(
        EventFactory(
            address_book, **{
                'datetime': DateTime.now,
                'text': u'Text1',
                'category': CategoryFactory(address_book, u'bar'),
                selected_user_field: 42
            }))
    event_entity = IEntity(IEvent)
    event_entity.removeField(event_entity.getRawField(selected_user_field))
    assert ['Text1'] == ed.getInfo()