}) }) Describe("destroying a redis instance", func() { Context("when the instance exists", func() { BeforeEach(func() { localInstanceCreator.Create(instanceID) }) It("calls lock before stopping redis", func() { Ω(fakeLocalRepository.LockedInstances).To(BeEmpty()) fakeProcessController.DoOnInstanceStop = func() { Ω(fakeLocalRepository.LockedInstances).To(HaveLen(1)) Ω(fakeLocalRepository.LockedInstances[0].ID).To(Equal(instanceID)) } err := localInstanceCreator.Destroy(instanceID) Ω(err).ShouldNot(HaveOccurred()) }) It("kills the instance", func() { err := localInstanceCreator.Destroy(instanceID) Ω(err).ShouldNot(HaveOccurred()) Ω(len(fakeProcessController.KilledInstances)).To(Equal(1)) Ω(fakeProcessController.KilledInstances[0].ID).To(Equal(instanceID)) }) It("deletes the instance data directory", func() { localInstanceCreator.Destroy(instanceID) Ω(fakeLocalRepository.DeletedInstanceIds).To(Equal([]string{ instanceID, }))