func initRepository(t *testing.T) (repo eventRepository) { dbServiceURI, err := cftools.GetVCAPServiceProperty("mongo-eventrollup", "url", appEnv) if err != nil || len(dbServiceURI) == 0 { t.Errorf("\nError retreieving database configuration: %v\n", err) } else { telemetryCollection := cfmgo.Connect(cfmgo.NewCollectionDialer, dbServiceURI, "telemetry") positionsCollection := cfmgo.Connect(cfmgo.NewCollectionDialer, dbServiceURI, "positions") alertsCollection := cfmgo.Connect(cfmgo.NewCollectionDialer, dbServiceURI, "alerts") repo = mongo.NewEventRollupRepository(positionsCollection, alertsCollection, telemetryCollection) } return }
func TestGetMatchRetrievesProperMatchFromMongo(t *testing.T) { fakes.TargetCount = 1 var fakeMatches = []matchRecord{} var matchesCollection = cfmgo.Connect( fakes.FakeNewCollectionDialer(fakeMatches), fakeDBURI, MatchesCollectionName) repo := newMongoMatchRepository(matchesCollection) match := gogo.NewMatch(19, "bob", "alfred") err := repo.addMatch(match) if err != nil { t.Errorf("Error adding match to mongo: %v", err) } targetID := match.ID foundMatch, err := repo.getMatch(targetID) if err != nil { t.Errorf("Unable to find match with ID: %v... %s", targetID, err) } if foundMatch.GridSize != 19 || foundMatch.PlayerBlack != "bob" { t.Errorf("Unexpected match results: %v", foundMatch) } }
func initRepository() (repo eventRepository) { appEnv, _ := cfenv.Current() dbServiceURI, err := cftools.GetVCAPServiceProperty("mongo-eventrollup", "url", appEnv) if err != nil || len(dbServiceURI) == 0 { if err != nil { fmt.Printf("\nError retreieving database configuration: %v\n", err) } fmt.Println("MongoDB was not detected, using fake repository (THIS IS BAD)...") repo = newFakeRepository() } else { telemetryCollection := cfmgo.Connect(cfmgo.NewCollectionDialer, dbServiceURI, "telemetry") positionsCollection := cfmgo.Connect(cfmgo.NewCollectionDialer, dbServiceURI, "positions") alertsCollection := cfmgo.Connect(cfmgo.NewCollectionDialer, dbServiceURI, "alerts") repo = mongo.NewEventRollupRepository(positionsCollection, alertsCollection, telemetryCollection) } return }
func initRepository(appEnv *cfenv.App) (repo matchRepository) { dbServiceURI, err := cftools.GetVCAPServiceProperty(dbServiceName, "url", appEnv) if err != nil || dbServiceURI == "" { if err != nil { fmt.Printf("\nError retrieving database configuration: %v\n", err) } fmt.Println("MongoDB was not detected; configuring inMemoryRepository...") repo = newInMemoryRepository() return } matchCollection := cfmgo.Connect(cfmgo.NewCollectionDialer, dbServiceURI, MatchesCollectionName) fmt.Printf("Connecting to MongoDB service: %s...\n", dbServiceName) repo = newMongoMatchRepository(matchCollection) return }
func TestGetNonExistentMatchReturnsError(t *testing.T) { fakes.TargetCount = 0 var fakeMatches = []matchRecord{} var matchesCollection = cfmgo.Connect( fakes.FakeNewCollectionDialer(fakeMatches), fakeDBURI, MatchesCollectionName) repo := newMongoMatchRepository(matchesCollection) _, err := repo.getMatch("bad_id") if err == nil { t.Errorf("Expected getMatch to error with incorrect match details") } if err.Error() != "Match not found" { t.Errorf("Expected 'Match not found' error; received: '%v'", err) } }
func TestAddMatchShowsUpInMongoRepository(t *testing.T) { var fakeMatches = []matchRecord{} var matchesCollection = cfmgo.Connect( fakes.FakeNewCollectionDialer(fakeMatches), fakeDBURI, MatchesCollectionName) repo := newMongoMatchRepository(matchesCollection) match := gogo.NewMatch(19, "bob", "alfred") err := repo.addMatch(match) if err != nil { t.Errorf("Error adding match to mongo: %v", err) } matches, err := repo.getMatches() if err != nil { t.Errorf("Got an error retrieving matches: %v", err) } if len(matches) != 1 { t.Errorf("Expected matches length to be 1; received %d", len(matches)) } }