add test case, enable listener for delete event
diff --git a/bundle.go b/bundle.go index 660bd53..a53f31c 100644 --- a/bundle.go +++ b/bundle.go
@@ -36,7 +36,7 @@ queueDownloadRequest(*DataDeployment) enqueueRequest(*DownloadRequest) makeDownloadRequest(string) *DownloadRequest - //deleteBundles([]DataDeployment) + deleteBundles([]DataDeployment) Close() }
diff --git a/listener.go b/listener.go index 701d3a1..8961bae 100644 --- a/listener.go +++ b/listener.go
@@ -135,7 +135,7 @@ if len(deletedDeployments) > 0 { log.Debugf("will delete %d old bundles", len(deletedDeployments)) //TODO delete bundles for deleted deployments - //h.bundleMan.deleteBundles(deletedDeployments) + h.bundleMan.deleteBundles(deletedDeployments) } }
diff --git a/listener_test.go b/listener_test.go index ad0b258..d82ce1c 100644 --- a/listener_test.go +++ b/listener_test.go
@@ -39,6 +39,7 @@ dummyBundleMan = &dummyBundleManager{ requestChan: make(chan *DownloadRequest), depChan: make(chan *DataDeployment), + delChan: make(chan *DataDeployment), } testHandler = &apigeeSyncHandler{ dbMan: dummyDbMan, @@ -124,11 +125,43 @@ apid.Events().Emit(APIGEE_SYNC_EVENT, changeList) + // verify for i := 0; i < len(changes); i++ { dep := <-dummyBundleMan.depChan Expect(reflect.DeepEqual(deployments[dep.ID], *dep)).Should(BeTrue()) delete(deployments, dep.ID) } + Expect(len(deployments)).Should(BeZero()) + }) + + It("Delete event shoud deliver to the bundle manager", func() { + // emit change event + changes := make([]common.Change, 0) + deployments := make(map[string]bool) + for i := 0; i < 1+rand.Intn(10); i++ { + dep := makeTestDeployment() + change := common.Change{ + Operation: common.Delete, + Table: CONFIG_METADATA_TABLE, + OldRow: rowFromDeployment(dep), + } + changes = append(changes, change) + deployments[dep.ID] = true + } + + changeList := &common.ChangeList{ + Changes: changes, + } + + apid.Events().Emit(APIGEE_SYNC_EVENT, changeList) + + // verify + for i := 0; i < len(changes); i++ { + dep := <-dummyBundleMan.delChan + Expect(deployments[dep.ID]).Should(BeTrue()) + delete(deployments, dep.ID) + } + Expect(len(deployments)).Should(BeZero()) }) }) }) @@ -136,6 +169,7 @@ type dummyBundleManager struct { requestChan chan *DownloadRequest depChan chan *DataDeployment + delChan chan *DataDeployment } func (bm *dummyBundleManager) initializeBundleDownloading() { @@ -156,6 +190,12 @@ } } +func (bm *dummyBundleManager) deleteBundles(deployments []DataDeployment) { + for i := range deployments { + bm.delChan <- &deployments[i] + } +} + func (bm *dummyBundleManager) Close() { }