def test_no_nodes(self):
        migrator = EntityMigrator(self.ck_api, self.rs_api, auto=True, logger=mock.Mock())

        entities = migrator.migrate()
        self.assertEquals(entities, [])
        self.assertEquals(self.rs_api.update_entity.call_count, 0)
        self.assertEquals(self.rs_api.create_entity.call_count, 0)
    def test_new(self):
        self.ck_api.list_nodes.return_value = [MockData.get_fake_node()]

        migrator = EntityMigrator(self.ck_api, self.rs_api, auto=True, logger=mock.Mock())
        entities = migrator.migrate()
        self.assertEquals(len(entities), 1)
        self.assertEquals(self.rs_api.update_entity.call_count, 0)
        self.assertEquals(self.rs_api.create_entity.call_count, 1)
    def test_mixed(self):
        # Should be unchanged
        unchanged_node = MockData.get_fake_node()
        unchanged_entity = MockData.get_fake_entity()

        # should get created
        new_node = MockData.get_fake_node('NEWID')
        new_node.ip_addresses = {"public0_v4": "totally_different_ip"}

        # should get updated
        updated_node = MockData.get_fake_node('NEWID2')
        updated_node.ip_addresses = {"public0_v4": "updated"}
        updated_entity = MockData.get_fake_entity()
        updated_entity.ip_addresses = [("public0_v4", "updated")]

        self.ck_api.list_nodes.return_value = [unchanged_node, updated_node, new_node]
        self.rs_api.list_entities.return_value = [unchanged_entity, updated_entity]

        migrator = EntityMigrator(self.ck_api, self.rs_api, auto=True, logger=mock.Mock())
        entities = migrator.migrate()

        self.assertEquals(len(entities), 3)
        self.assertEquals(self.rs_api.update_entity.call_count, 1)
        self.assertEquals(self.rs_api.create_entity.call_count, 1)