def testAttachTwiceDoesNotAttachAgain(self):
     self.assertEquals(0, len(DeviceIndividual.find()))
     DeviceIndividual.attach(    self.D.id, self.I.id, "2015-09-29T14:00:00+03:00")
     self.assertEquals(1, len(DeviceIndividual.find()))
     with self.assertRaises(AlreadyHasDevice):
         DeviceIndividual.attach(self.D.id, self.I.id, "2015-09-29T14:00:00+03:00")
     self.assertEquals(1, len(DeviceIndividual.find()))
 def testAttachOne(self):
     self.assertEquals(0, len(DeviceIndividual.find()))
     DeviceIndividual.attach(self.D.id, self.I.id, "2015-09-29T14:00:00+03:00")
     self.assertEquals(1, len(DeviceIndividual.find()))
     self.assertEquals(self.I.id, DeviceIndividual.get_active_attachment_of_device(self.D.id)["individualID"])
     self.assertEquals(self.I.id, DeviceIndividual.get_active_attachment_of_device(self.D.id)["individualID"])
     self.assertEquals("2015-09-29T14:00:00+03:00", DeviceIndividual.get_active_attachment_of_individual(self.I.id)["attached"])
     self.assertEquals("2015-09-29T14:00:00+03:00", DeviceIndividual.get_active_attachment_of_individual(self.I.id)["attached"])
    def testGetAllAttachedIndividuals(self):
        self.assertEquals(0, len(DeviceIndividual.find()))

        DeviceIndividual.attach(self.D.id, self.I.id, "2015-09-29T14:00:00+03:00")
        DeviceIndividual.detach(self.D.id, self.I.id, "2015-09-29T14:00:00+03:00")
        DeviceIndividual.attach(self.D.id, self.I2.id, "2015-09-29T14:00:00+03:00")

        self.assertEquals(2, len(DeviceIndividual.get_attachments_of_device(self.D.id)))
        self.assertEquals(self.I2.id, DeviceIndividual.get_active_attachment_of_device(self.D.id)["individualID"])
    def testAttachDetachTwo(self):
        self.assertEquals(0, len(DeviceIndividual.find()))

        DeviceIndividual.attach(self.D.id, self.I.id, "2015-09-29T14:00:00+03:00")
        DeviceIndividual.attach(self.D2.id, self.I2.id, "2015-09-29T14:00:00+03:00")

        self.assertEquals(2, len(DeviceIndividual.find()))
        self.assertEquals(self.I.id, DeviceIndividual.get_active_attachment_of_device(self.D.id)["individualID"])
        self.assertEquals(self.D.id, DeviceIndividual.get_active_attachment_of_individual(self.I.id)["deviceID"])
        self.assertEquals(self.I2.id, DeviceIndividual.get_active_attachment_of_device(self.D2.id)["individualID"])
        self.assertEquals(self.D2.id, DeviceIndividual.get_active_attachment_of_individual(self.I2.id)["deviceID"])

        DeviceIndividual.detach(self.D.id, self.I.id, "2015-09-29T14:00:00+03:00")

        self.assertEquals(None, DeviceIndividual.get_active_attachment_of_device(self.D.id))
        self.assertEquals(None, DeviceIndividual.get_active_attachment_of_individual(self.I.id))
        self.assertEquals(self.I2.id, DeviceIndividual.get_active_attachment_of_device(self.D2.id)["individualID"])
        self.assertEquals(self.D2.id, DeviceIndividual.get_active_attachment_of_individual(self.I2.id)["deviceID"])

        DeviceIndividual.detach(self.D2.id, self.I2.id, "2015-09-29T14:00:00+03:00")

        self.assertEquals(None, DeviceIndividual.get_active_attachment_of_device(self.D2.id))
        self.assertEquals(None, DeviceIndividual.get_active_attachment_of_individual(self.I2.id))
        self.assertEquals(2, len(DeviceIndividual.find()))
 def testAttachToAnotherIndividualDoesNotAttach(self):
     DeviceIndividual.attach(    self.D.id, self.I.id,  "2015-09-29T14:00:00+03:00")
     self.assertEquals(1, len(DeviceIndividual.find()))
     with self.assertRaises(DeviceAlreadyAttached):
         DeviceIndividual.attach(self.D.id, self.I2.id, "2015-09-29T14:00:00+03:00")
     self.assertEquals(1, len(DeviceIndividual.find()))
 def testDeleteAllWorks(self):
     DeviceIndividual.attach(self.D.id, self.I.id, "2015-09-29T14:00:00+03:00")
     self.assertEquals(1, len(DeviceIndividual.find()))
     DeviceIndividual.delete_all()
     self.assertEquals(0, len(DeviceIndividual.find()))
 def testNoAttachments(self):
     self.assertEquals(0, len(DeviceIndividual.find()))
 def testDeletedDevicesDontMessThingsUp(self):
     DeviceIndividual.attach(self.D.id, self.I.id, "2015-09-29T14:00:00+03:00")
     self.D.delete()
     self.assertEquals(0, len(DeviceIndividual.find()))