public void Match_SingleOptions() { var candidate1 = new Candidate() { CandidateId = 1, Name = "Chan Bravo", SkillTags = "reliable, reliable, ms-office, xcode, detail" }; var candidate2 = new Candidate() { CandidateId = 2, Name = "Thomasine To", SkillTags = "illustrator, oration, sterilisation, kotlin, outlook" }; var candidate3 = new Candidate() { CandidateId = 3, Name = "Lester Scheidt", SkillTags = "placements, iOS, entertainment, mobile, xcode" }; var candidate4 = new Candidate() { CandidateId = 4, Name = "Pandora Hubble", SkillTags = "aphra-registration, sales, ms-office, xcode, outlook" }; var candidates = new[] { candidate1, candidate2, candidate3, candidate4 }; var job = new Job() { Company = "Surile", JobId = 2, Name = "Reception", Skills = "word, placements, data-entry, communication" }; var service = new MatchingService(); var bestCandidate = service.Match(job, candidates); Assert.NotNull(bestCandidate); Assert.AreEqual(3, bestCandidate.CandidateId); }
public async Task MatchPairs_MaxPairSettingIsZero_NoPairsGenerated() { // Arrange this.dataProvider.Setup(x => x.GetInstalledTeamsAsync()) .Returns(() => Task.FromResult <IList <TeamInstallInfo> >(new List <TeamInstallInfo> { new TeamInstallInfo { TeamId = Guid.NewGuid().ToString() }, })); // No user opted-out this.dataProvider.Setup(x => x.GetAllUsersOptInStatusAsync()) .Returns(() => Task.FromResult(new Dictionary <string, bool>())); // 2 members exist in each team this.conversationHelper.Setup(x => x.GetTeamMembers(this.botAdapter, It.IsAny <TeamInstallInfo>())) .Returns(() => Task.FromResult <IList <ChannelAccount> >(new List <ChannelAccount> { new TeamsChannelAccount { Id = Guid.NewGuid().ToString(), AadObjectId = Guid.NewGuid().ToString(), UserPrincipalName = string.Empty, Email = string.Empty, }, new TeamsChannelAccount { Id = Guid.NewGuid().ToString(), AadObjectId = Guid.NewGuid().ToString(), UserPrincipalName = string.Empty, Email = string.Empty, }, })); var maxPairUpsPerTeam = ConfigurationManager.AppSettings[this.maxPairsSettingsKey]; ConfigurationManager.AppSettings[this.maxPairsSettingsKey] = "0"; var sut = new MatchingService(this.dataProvider.Object, this.conversationHelper.Object, new TelemetryClient(), this.botAdapter); // Act // Send the message activity to the bot. var pairsNotifiedCount = await sut.MakePairsAndNotifyAsync(); // Set original value back ConfigurationManager.AppSettings[this.maxPairsSettingsKey] = maxPairUpsPerTeam; // Assert GetInstalledTeamsAsync is called once this.dataProvider.Verify(m => m.GetInstalledTeamsAsync(), Times.Once); // Assert GetAllUsersOptInStatusAsync is called once this.dataProvider.Verify(m => m.GetAllUsersOptInStatusAsync(), Times.Once); // 1 calls to GetTeamNameByIdAsync since we have 1 team this.conversationHelper.Verify(m => m.GetTeamNameByIdAsync(this.botAdapter, It.IsAny <TeamInstallInfo>()), Times.Once); // 1 calls to GetTeamMembers since we have 1 team this.conversationHelper.Verify(m => m.GetTeamMembers(this.botAdapter, It.IsAny <TeamInstallInfo>()), Times.Once); // No pairs since max limit is reached Assert.Equal(0, pairsNotifiedCount); }
public bool IsPartialMatch(string input) { return(MatchingService.IsPartialMatch(MatchingRegex, input)); }
public bool IsFullMatch(string input) { return(!MatchingService.IsFullMatch(ReservedWords, input) && char.IsLetter(input[0]) && input.All(ch => (char.IsLetter(ch) || char.IsDigit(ch)) && !char.IsWhiteSpace(ch))); }