def test_properOrphaning(self): """ If two installed items both depend on a third, it should be removed as soon as both installed items are removed, but no sooner. """ foo = Kitchen(store=self.store) e = Toaster(store=self.store) dependency.installOn(e, foo) ps = self.store.findUnique(PowerStrip) bb = self.store.findUnique(Breadbox) f = Blender(store=self.store) dependency.installOn(f, foo) self.assertEquals(list(self.store.query(PowerStrip)), [ps]) #XXX does ordering matter? self.assertEquals(set(dependency.installedDependents(ps, foo)), set([e, f])) self.assertEquals(set(dependency.installedRequirements(e, foo)), set([bb, ps])) self.assertEquals(list(dependency.installedRequirements(f, foo)), [ps]) dependency.uninstallFrom(e, foo) self.assertEquals(dependency.installedOn(ps), foo) dependency.uninstallFrom(f, foo) self.assertEquals(dependency.installedOn(ps), None)
def test_basicInstall(self): """ If a Toaster gets installed in a Kitchen, make sure that the required dependencies get instantiated and installed too. """ foo = Kitchen(store=self.store) e = Toaster(store=self.store) self.assertEquals(e.powerStrip, None) dependency.installOn(e, foo) e.toast() ps = self.store.findUnique(PowerStrip, default=None) bb = self.store.findUnique(Breadbox, default=None) self.failIfIdentical(ps, None) self.failIfIdentical(bb, None) self.assertEquals(e.powerStrip, ps) self.assertEquals(ps.voltage, 110) self.assertEquals(e.breadFactory, bb) self.assertEquals(set(dependency.installedRequirements(e, foo)), set([ps, bb])) self.assertEquals(list(dependency.installedDependents(ps, foo)), [e])