def test_active_device_types(self): name = "beaglebone-black" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname='bbb-01', health=Device.HEALTH_GOOD) device.save() device = Device(device_type=dt, hostname='bbb-02', health=Device.HEALTH_RETIRED) device.save() name = "juno-r2" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname='juno-r2-01', health=Device.HEALTH_RETIRED) device.save() name = "juno" dt = DeviceType(name=name) dt.display = False dt.save() dt.refresh_from_db() dt.refresh_from_db() device = Device(device_type=dt, hostname='juno-01', health=Device.HEALTH_UNKNOWN) device.save() name = "qemu" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname='qemu-01', health=Device.HEALTH_GOOD) device.save() self.assertEqual( {'bbb-01', 'bbb-02', 'juno-r2-01', 'qemu-01', 'juno-01'}, set(Device.objects.all().values_list('hostname', flat=True))) self.assertEqual({'beaglebone-black', 'juno', 'juno-r2', 'qemu'}, set(DeviceType.objects.values_list('name', flat=True))) # exclude juno-r2 because all devices of that device-type are retired. # exclude juno because the device_type is set to not be displayed. # include beaglebone-black because not all devices of that type are retired. # include qemu because none of the devices of that type are retired. self.assertEqual({'beaglebone-black', 'qemu'}, set(active_device_types().values_list('name', flat=True)))