from haven.devices.beamline_manager import BeamlineManager

"""
    glados:alive.VAL
    glados:alive.RHOST
    glados:alive.RADDR
    glados:alive.RPORT
    glados:alive.RRSTS
    glados:alive.AHOST
    glados:alive.AADDR
    glados:alive.APORT
    glados:alive.ARSTS
    glados:alive.HRTBT
    glados:alive.HPRD
    glados:alive.IOCNM
    glados:alive.HMAG
    glados:alive.MSG
    glados:alive.IPORT
    glados:alive.IPSTS
    glados:alive.ITRIG
    glados:alive.ISUP
    glados:alive.VER
    glados:alive.EVD1
    glados:alive.EVD2
    glados:alive.EVD3
    glados:alive.EVD4
    glados:alive.EVD5
    glados:alive.EVD6
    glados:alive.EVD7
    glados:alive.EVD8
    glados:alive.EVD9
    glados:alive.EVD10
    glados:alive.EVD11
    glados:alive.EVD12
    glados:alive.EVD13
    glados:alive.EVD14
    glados:alive.EVD15
    glados:alive.EVD16
    glados:alive.EV1
    glados:alive.EV2
    glados:alive.EV3
    glados:alive.EV4
    glados:alive.EV5
    glados:alive.EV6
    glados:alive.EV7
    glados:alive.EV8
    glados:alive.EV9
    glados:alive.EV10
    glados:alive.EV11
    glados:alive.EV12
    glados:alive.EV13
    glados:alive.EV14
    glados:alive.EV15
    glados:alive.EV16
    glados:bss:proposal:beamline
    glados:bss:proposal:endDate
    glados:bss:proposal:endTimestamp
    glados:bss:proposal:mailInFlag
    glados:bss:proposal:id
    glados:bss:proposal:proprietaryFlag
    glados:bss:proposal:raw
    glados:bss:proposal:startDate
    glados:bss:proposal:startTimestamp
    glados:bss:proposal:submittedDate
    glados:bss:proposal:submittedTimestamp
    glados:bss:proposal:title
    glados:bss:proposal:userPIs
    glados:bss:proposal:userBadges
    glados:bss:proposal:users
    glados:bss:proposal:users_in_pvs
    glados:bss:proposal:users_total
    glados:bss:proposal:user1:badgeNumber
    glados:bss:proposal:user1:email
    glados:bss:proposal:user1:firstName
    glados:bss:proposal:user1:lastName
    glados:bss:proposal:user1:piFlag
    glados:bss:proposal:user1:institution
    glados:bss:proposal:user2:badgeNumber
    glados:bss:proposal:user2:email
    glados:bss:proposal:user2:firstName
    glados:bss:proposal:user2:lastName
    glados:bss:proposal:user2:piFlag
    glados:bss:proposal:user2:institution
    glados:bss:proposal:user3:badgeNumber
    glados:bss:proposal:user3:email
    glados:bss:proposal:user3:firstName
    glados:bss:proposal:user3:lastName
    glados:bss:proposal:user3:piFlag
    glados:bss:proposal:user3:institution
    glados:bss:proposal:user4:badgeNumber
    glados:bss:proposal:user4:email
    glados:bss:proposal:user4:firstName
    glados:bss:proposal:user4:lastName
    glados:bss:proposal:user4:piFlag
    glados:bss:proposal:user4:institution
    glados:bss:proposal:user5:badgeNumber
    glados:bss:proposal:user5:email
    glados:bss:proposal:user5:firstName
    glados:bss:proposal:user5:lastName
    glados:bss:proposal:user5:piFlag
    glados:bss:proposal:user5:institution
    glados:bss:proposal:user6:badgeNumber
    glados:bss:proposal:user6:email
    glados:bss:proposal:user6:firstName
    glados:bss:proposal:user6:lastName
    glados:bss:proposal:user6:piFlag
    glados:bss:proposal:user6:institution
    glados:bss:proposal:user7:badgeNumber
    glados:bss:proposal:user7:email
    glados:bss:proposal:user7:firstName
    glados:bss:proposal:user7:lastName
    glados:bss:proposal:user7:piFlag
    glados:bss:proposal:user7:institution
    glados:bss:proposal:user8:badgeNumber
    glados:bss:proposal:user8:email
    glados:bss:proposal:user8:firstName
    glados:bss:proposal:user8:lastName
    glados:bss:proposal:user8:piFlag
    glados:bss:proposal:user8:institution
    glados:bss:proposal:user9:badgeNumber
    glados:bss:proposal:user9:email
    glados:bss:proposal:user9:firstName
    glados:bss:proposal:user9:lastName
    glados:bss:proposal:user9:piFlag
    glados:bss:proposal:user9:institution
    glados:bss:esaf:cycle
    glados:bss:esaf:description
    glados:bss:esaf:endDate
    glados:bss:esaf:endTimestamp
    glados:bss:esaf:id
    glados:bss:esaf:raw
    glados:bss:esaf:status
    glados:bss:esaf:sector
    glados:bss:esaf:startDate
    glados:bss:esaf:startTimestamp
    glados:bss:esaf:title
    glados:bss:esaf:userBadges
    glados:bss:esaf:userPIs
    glados:bss:esaf:users
    glados:bss:esaf:users_in_pvs
    glados:bss:esaf:users_total
    glados:bss:esaf:user1:badgeNumber
    glados:bss:esaf:user1:email
    glados:bss:esaf:user1:firstName
    glados:bss:esaf:user1:lastName
    glados:bss:esaf:user2:badgeNumber
    glados:bss:esaf:user2:email
    glados:bss:esaf:user2:firstName
    glados:bss:esaf:user2:lastName
    glados:bss:esaf:user3:badgeNumber
    glados:bss:esaf:user3:email
    glados:bss:esaf:user3:firstName
    glados:bss:esaf:user3:lastName
    glados:bss:esaf:user4:badgeNumber
    glados:bss:esaf:user4:email
    glados:bss:esaf:user4:firstName
    glados:bss:esaf:user4:lastName
    glados:bss:esaf:user5:badgeNumber
    glados:bss:esaf:user5:email
    glados:bss:esaf:user5:firstName
    glados:bss:esaf:user5:lastName
    glados:bss:esaf:user6:badgeNumber
    glados:bss:esaf:user6:email
    glados:bss:esaf:user6:firstName
    glados:bss:esaf:user6:lastName
    glados:bss:esaf:user7:badgeNumber
    glados:bss:esaf:user7:email
    glados:bss:esaf:user7:firstName
    glados:bss:esaf:user7:lastName
    glados:bss:esaf:user8:badgeNumber
    glados:bss:esaf:user8:email
    glados:bss:esaf:user8:firstName
    glados:bss:esaf:user8:lastName
    glados:bss:esaf:user9:badgeNumber
    glados:bss:esaf:user9:email
    glados:bss:esaf:user9:firstName
    glados:bss:esaf:user9:lastName
    glados:bss:status
    glados:bss:ioc_host
    glados:bss:ioc_user
    glados:ioc25ida:startable
    glados:ioc25ida:start
    glados:ioc25ida:stoppable
    glados:ioc25ida:stop
    glados:ioc25ida:restart
    glados:ioc25ida:status
    glados:ioc25ida:console
    glados:ioc25idaBPM:startable
    glados:ioc25idaBPM:start
    glados:ioc25idaBPM:stoppable
    glados:ioc25idaBPM:stop
    glados:ioc25idaBPM:restart
    glados:ioc25idaBPM:status
    glados:ioc25idaBPM:console
    glados:ioc25idVac:startable
    glados:ioc25idVac:start
    glados:ioc25idVac:stoppable
    glados:ioc25idVac:stop
    glados:ioc25idVac:restart
    glados:ioc25idVac:status
    glados:ioc25idVac:console
    glados:ioc25idbUP:startable
    glados:ioc25idbUP:start
    glados:ioc25idbUP:stoppable
    glados:ioc25idbUP:stop
    glados:ioc25idbUP:restart
    glados:ioc25idbUP:status
    glados:ioc25idbUP:console
    glados:ioc25idc:startable
    glados:ioc25idc:start
    glados:ioc25idc:stoppable
    glados:ioc25idc:stop
    glados:ioc25idc:restart
    glados:ioc25idc:status
    glados:ioc25idc:console
    glados:ioc25idgigeA:startable
    glados:ioc25idgigeA:start
    glados:ioc25idgigeA:stoppable
    glados:ioc25idgigeA:stop
    glados:ioc25idgigeA:restart
    glados:ioc25idgigeA:status
    glados:ioc25idgigeA:console
    glados:ioc25idgigeB:startable
    glados:ioc25idgigeB:start
    glados:ioc25idgigeB:stoppable
    glados:ioc25idgigeB:stop
    glados:ioc25idgigeB:restart
    glados:ioc25idgigeB:status
    glados:ioc25idgigeB:console
    glados:ioc25idgigeC:startable
    glados:ioc25idgigeC:start
    glados:ioc25idgigeC:stoppable
    glados:ioc25idgigeC:stop
    glados:ioc25idgigeC:restart
    glados:ioc25idgigeC:status
    glados:ioc25idgigeC:console
    glados:ioc25idgigeD:startable
    glados:ioc25idgigeD:start
    glados:ioc25idgigeD:stoppable
    glados:ioc25idgigeD:stop
    glados:ioc25idgigeD:restart
    glados:ioc25idgigeD:status
    glados:ioc25idgigeD:console
    glados:ioc25idgigeE:startable
    glados:ioc25idgigeE:start
    glados:ioc25idgigeE:stoppable
    glados:ioc25idgigeE:stop
    glados:ioc25idgigeE:restart
    glados:ioc25idgigeE:status
    glados:ioc25idgigeE:console
    glados:ioc25idSimDet:startable
    glados:ioc25idSimDet:start
    glados:ioc25idSimDet:stoppable
    glados:ioc25idSimDet:stop
    glados:ioc25idSimDet:restart
    glados:ioc25idSimDet:status
    glados:ioc25idSimDet:console
    glados:local_storage:file_system
    glados:local_storage:sub_directory
    glados:local_storage:full_path
    glados:local_storage:exists
    glados:local_storage:create
    glados:local_storage_startup
    glados:autosave_helper::__autosave_hook
"""


def test_iocs():
    """Check that the managed IOCs are available."""
    iocs = {
        "ioc255idc": "ioc255idc:",
    }
    manager = BeamlineManager("255id:glados:", name="glados", iocs=iocs)
    assert hasattr(manager, "iocs")
    assert manager.iocs.ioc255idc.prefix == "255id:glados:ioc255idc:"
