Expect(err).NotTo(HaveOccurred())
			})

			It("calls lock before stopping redis", func() {
				Expect(fakeLocalRepository.LockCallCount()).To(Equal(1))
				Expect(fakeLocalRepository.LockArgsForCall(0).ID).To(Equal(instanceID))
			})

			It("kills the instance", func() {
				Ω(len(fakeProcessController.KilledInstances)).To(Equal(1))
				Ω(fakeProcessController.KilledInstances[0].ID).To(Equal(instanceID))
			})

			It("deletes the instance data directory", func() {
				Expect(fakeLocalRepository.DeleteCallCount()).To(Equal(1))
				Expect(fakeLocalRepository.DeleteArgsForCall(0)).To(Equal(instanceID))
			})
		})

		Context("When the instance does not exist", func() {
			var destroyErr error

			BeforeEach(func() {
				fakeLocalRepository.FindByIDReturns(nil, errors.New("instance not found"))
			})

			JustBeforeEach(func() {
				destroyErr = localInstanceCreator.Destroy("missingInstanceID")
			})

			It("returns an error", func() {