//this one returns a single quote. //the type of quote is indicate in the options parameters //public async Task DoOperationAsync() public async Task <QuoteCube> ReturnASingleQuote(OptionsSingleQuote optionsSingleQuote) { QuoteCube quoteCube = new QuoteCube(); if (optionsSingleQuote.enumSourceOfData == Enums.EnumSourceOfData.DataBaseInMemory) { //get quote from memory. quoteCube = await ReturnQuoteFromMemory(optionsSingleQuote); } else if (optionsSingleQuote.enumSourceOfData == Enums.EnumSourceOfData.DataBaseInContext) { if (optionsSingleQuote.bloggingContext == null) { quoteCube.DetailsAboutOperation = "db context is null"; quoteCube.OperationSuccessful = false; return(quoteCube); } //get quote from database context quoteCube = await ReturnQuoteFromDatabase(optionsSingleQuote); } else { quoteCube.DetailsAboutOperation = "optionsSingleQuote contains unknown data source."; quoteCube.OperationSuccessful = false; } return(quoteCube); }
public async Task TestIReturnSingleQuoteRandomAsync() { IReturnSingleQuote returnSingleQuote = new ReturnSingleQuote(); OptionsSingleQuote optionsSingleQuote = new OptionsSingleQuote(); //settign options //source is memory. optionsSingleQuote.enumSourceOfData = RandomStuffGeneratorPrivate.Enums.EnumSourceOfData.DataBaseInMemory; //quote is random optionsSingleQuote.RandomQuote = true; QuoteCube quoteCube = await returnSingleQuote.ReturnASingleQuote(optionsSingleQuote); var actual = quoteCube.OperationSuccessful; var expected = true; Assert.Equal(expected, actual); }
public async Task TestIReturnSingleQuoteRandomKnownIdentifierAsync() { IReturnSingleQuote returnSingleQuote = new ReturnSingleQuote(); OptionsSingleQuote optionsSingleQuote = new OptionsSingleQuote(); //settign options //source is memory. optionsSingleQuote.enumSourceOfData = RandomStuffGeneratorPrivate.Enums.EnumSourceOfData.DataBaseInMemory; //quote is specific optionsSingleQuote.RandomQuote = false; //provide identifier optionsSingleQuote.QuoteIdentifierCompadre = "1"; QuoteCube quoteCube = await returnSingleQuote.ReturnASingleQuote(optionsSingleQuote); var actual = quoteCube.OperationSuccessful; var expected = true; Assert.Equal(expected, actual); }
public async Task <ActionResult <QuoteCube> > GetASingleQuoteAsync() { var tempQuoteCube = new QuoteCube(); IReturnSingleQuote returnSingleQuote = new ReturnSingleQuote(); OptionsSingleQuote optionsSingleQuote = new OptionsSingleQuote(); //setting options optionsSingleQuote.enumSourceOfData = EnumSourceOfData.DataBaseInContext; //quote is random optionsSingleQuote.RandomQuote = true; //set the context. optionsSingleQuote.bloggingContext = _context; tempQuoteCube = await returnSingleQuote.ReturnASingleQuote(optionsSingleQuote); //add the general response var generalAPIResponse = new GeneralAPIResponse(); generalAPIResponse.dateTimeOfResponse = DateTime.Now; tempQuoteCube.generalAPIResponse = generalAPIResponse; return(tempQuoteCube); }
private async Task <QuoteCube> ReturnQuoteFromDatabase(OptionsSingleQuote optionsSingleQuote) { QuoteCube quoteCube = new QuoteCube(); OptionsCollectionOfQuotes optionsCollectionOfQuotes = new OptionsCollectionOfQuotes(); IQuoteCubeCollection quoteCubeCollection = new ReturnQuoteCubeCollection(); //now, look at options, if it is random, pick any one. //TODO - both the if and else have some common statements. //perhaps we can merge and keep only the unique things. if (optionsSingleQuote.RandomQuote == true) { //set up collection options. optionsCollectionOfQuotes.enumSourceOfData = optionsSingleQuote.enumSourceOfData; optionsCollectionOfQuotes.bloggingContext = optionsSingleQuote.bloggingContext; var TempCubeCollection = await quoteCubeCollection.GetQuoteCubeCollection(optionsCollectionOfQuotes); if (TempCubeCollection.OperationSuccessful == false) { quoteCube.DetailsAboutOperation = "There was a problem getting the source collection"; quoteCube.OperationSuccessful = false; } else { //our collection is good. try { //lets pick a random quote. // Instantiate random number generator using system-supplied value as seed. var rand = new Random(); var quoteRandomNumber = rand.Next(TempCubeCollection.numberOfQuotes); quoteCube = TempCubeCollection.quoteCubes[quoteRandomNumber]; } catch (Exception e) { quoteCube.DetailsAboutOperation = "Exception Error " + e.ToString(); quoteCube.OperationSuccessful = false; } } } //if it is specific, see if it is there in the list. else { if (String.IsNullOrEmpty(optionsSingleQuote.QuoteIdentifierCompadre) == true) { quoteCube.DetailsAboutOperation = "QuoteIdentifierCompadre is missing or empty"; quoteCube.OperationSuccessful = false; } else { //set up collection options. optionsCollectionOfQuotes.enumSourceOfData = optionsSingleQuote.enumSourceOfData; optionsCollectionOfQuotes.bloggingContext = optionsSingleQuote.bloggingContext; var TempCubeCollection = await quoteCubeCollection.GetQuoteCubeCollection(optionsCollectionOfQuotes); if (TempCubeCollection.OperationSuccessful == false) { quoteCube.DetailsAboutOperation = "There was a problem getting the source collection"; quoteCube.OperationSuccessful = false; } else { //our collection is good. try { //lets pick a specific quote var tempquoteCube = TempCubeCollection.quoteCubes.Select(x => x).Where(x => x.QuoteIdentifierCompadre == optionsSingleQuote.QuoteIdentifierCompadre).First(); if (tempquoteCube == null) { quoteCube.DetailsAboutOperation = "No quote with " + optionsSingleQuote.QuoteIdentifierCompadre + "exists in our system"; quoteCube.OperationSuccessful = false; } else { quoteCube = tempquoteCube; } } catch (Exception e) { quoteCube.DetailsAboutOperation = "Exception Error " + e.ToString(); quoteCube.OperationSuccessful = false; } } } } return(quoteCube); }