public static ChaseOutcome Probe(IRatingDetailsDto ratingDetailsDto, ExtensionDetailsDto extensionDetailsDto) { var chaser = new Chaser(); var chaseOutcome = chaser.Chase(ratingDetailsDto, extensionDetailsDto); return(chaseOutcome); }
internal ChaseOutcome Validate(ExtensionDetailsDto extensionDetailsDto) { //TODO validate name & author > 3 long var outcome = ChaseOutcome.Unknown; if (string.IsNullOrWhiteSpace(extensionDetailsDto?.AuthorName)) { outcome = ChaseOutcome.InvalidCallAsAuthorNameCannotBeBlank; } else { if (string.IsNullOrWhiteSpace(extensionDetailsDto?.ExtensionName)) { outcome = ChaseOutcome.InvalidCallAsExtensionNameCannotBeBlank; } else { if (string.IsNullOrWhiteSpace(extensionDetailsDto?.MarketPlaceUrl)) { outcome = ChaseOutcome.InvalidCallAsMarketplaceUrlCannotBeBlank; } else { if (!extensionDetailsDto.MarketPlaceUrl.ToLower() .StartsWith(ChaseSettings.MarketplaceUrlPrefix.ToLower())) { outcome = ChaseOutcome.InvalidCallAsMarketplaceUrlIsNotTheVisualStudioMarketplaceDomain; } } } } return(outcome); }
/// <summary> /// Validates the request and conditionally displays a pop-up to user asking for an online rating / review /// </summary> /// <param name="ratingDetailsDto">Parameter data related to the request for ratings</param> /// <param name="extensionDetailsDto">Parameter data related to the Visual Studio extension</param> /// <returns>The result of the package invocation</returns> public ChaseOutcome Chase(IRatingDetailsDto ratingDetailsDto, ExtensionDetailsDto extensionDetailsDto) { var outcome = Validate(extensionDetailsDto); if (outcome == ChaseOutcome.Unknown) { InaugrualInvocation(ratingDetailsDto); outcome = ValidateRatingDetailsDto(ratingDetailsDto.RatingRequestCount, ratingDetailsDto.PreviousRatingRequest); if (outcome == ChaseOutcome.Unknown) { var ratingDecider = new RatingDecider(); var shouldShowDialog = ratingDecider.ShouldShowDialog(ratingDetailsDto); if (shouldShowDialog) { ShowDialog(ratingDetailsDto, extensionDetailsDto); outcome = _ratingHyperLinkClicked ? ChaseOutcome.SuccessfullCallAndDialogShownToUserUrlClicked : ChaseOutcome.SuccessfullCallAndDialogShownToUserUrlNotClicked; } else { outcome = ChaseOutcome.SuccessfullCallButDialogNotShownToUser; } } } return(outcome); }
private void ShowDialog(IRatingDetailsDto ratingDetailsDto, ExtensionDetailsDto extensionDetailsDto) { ratingDetailsDto.RatingRequestCount++; var ratingDialog = new RatingDialog(extensionDetailsDto, ratingDetailsDto.RatingRequestCount); ratingDialog.Show(); _ratingHyperLinkClicked = ratingDialog.RatingHyperLinkClicked; PersistRatingDetails(ratingDetailsDto); }
private ChaseOutcome ValidateTest(ExtensionDetailsDto extensionDetailsDto) { //Arrange var sut = new Chaser(); //Act var actual = sut.Validate(extensionDetailsDto); return(actual); }
public void Hunt(IRatingDetailsDto ratingDetailsDto) { var extensionDetailsDto = new ExtensionDetailsDto { AuthorName = Vsix.Author, ExtensionName = Vsix.Name, MarketPlaceUrl = "https://marketplace.visualstudio.com/items?itemName=GregTrevellick.DrainTheSwamp" }; Probe(ratingDetailsDto, extensionDetailsDto); }
public void Hunt(IRatingDetailsDto ratingDetailsDto) { var extensionDetailsDto = new ExtensionDetailsDto { AuthorName = Vsix.Author, ExtensionName = Vsix.Name, MarketPlaceUrl = "https://marketplace.visualstudio.com/items?itemName=GregTrevellick.SolutionOpenPopUp" }; ChaserGateway.Probe(ratingDetailsDto, extensionDetailsDto); }
internal RatingDialog(ExtensionDetailsDto extensionDetailsDto, int ratingRequestCount) { InitializeComponent(); _extensionDetailsDto = extensionDetailsDto; InitializeRatingRequest(ratingRequestCount); }