public static async Task CreateUniversity(TestContext _) { using (var context = new WarblerDbContext(Options)) { var repo = new SqlUniversityRepository(context); var nearbyResult = new NearByResult { Name = "Test", Geometry = new Geometry { Location = new Location(0.0, 0.0) } }; var templateService = new ChannelTemplateService(new SqlChannelTemplateRepository(context)); await templateService.CreateDefaultTemplatesAsync(); // Create a test university with default channels var testUniversity = await repo.CreateAsync(nearbyResult, await templateService.GetAsync()); Test = testUniversity; Bob = new User { UserName = "******" }; // Save it to the in-memory database for use in tests await repo.SaveAsync(); } }
public static async Task CreateUniversity(TestContext _) { using (var context = new WarblerDbContext(Options)) { var repo = new SqlUniversityRepository(context); var nearbyResult = new NearByResult { Name = "Test", Geometry = new Geometry { Location = new Location(0.0, 0.0) } }; var templateService = new ChannelTemplateService(new SqlChannelTemplateRepository(context)); await templateService.CreateDefaultTemplatesAsync(); // Create a test university with default channels var testUniversity = await repo.CreateAsync(nearbyResult, await templateService.GetAsync()); // Save a reference to one of the default channels and a new user General = testUniversity.Server.Channels.Single(ch => ch.Name == "general"); Bob = new User { UserName = "******" }; // Add a test user to it General.Memberships.Add(new Membership { User = Bob }); // Save it to the in-memory database for use in tests await repo.SaveAsync(); } }
/// <summary> /// Gets the university associated with the given /// Google Places result or creates it if nonexistent. /// </summary> /// <param name="uni">The Google Places search result to use.</param> /// <param name="templates"> /// The channel templates to use if the university needs to be created. /// </param> /// <returns>The related University object.</returns> public async Task <University> GetOrCreateAsync(NearByResult uni, IEnumerable <ChannelTemplate> templates) { try { return(await Repository.LookupAsync(uni.PlaceId)); } catch (UniversityNotFoundException) { return(await Repository.CreateAsync(uni, templates)); } }
private async Task SetUpSampleUniversity() { using (var context = new WarblerDbContext(Options)) { var repo = new SqlUniversityRepository(context); var nearbyResult = new NearByResult { Name = "Test", Geometry = new Geometry { Location = new Location(0.0, 0.0) } }; var templateService = new ChannelTemplateService(new SqlChannelTemplateRepository(context)); await templateService.CreateDefaultTemplatesAsync(); // Create a test university with default channels await repo.CreateAsync(nearbyResult, await templateService.GetAsync()); } }
public async Task GetOrCreateAsync_Should_Create_A_New_University() { using (var context = new WarblerDbContext(Options)) { var repo = new SqlUniversityRepository(context); var test = new UniversityService(repo); var nearbyResult = new NearByResult { Name = "NewUni", Geometry = new Geometry { Location = new Location(1.0, 1.0) } }; var templateService = new ChannelTemplateService(new SqlChannelTemplateRepository(context)); await templateService.CreateDefaultTemplatesAsync(); var uniTest = await test.GetOrCreateAsync(nearbyResult, await templateService.GetAsync()); //Assert.AreEqual(2, context.Universities.Count()); Assert.AreEqual("NewUni", uniTest.Name); } }
public async Task <string> Join([FromBody] NearByResult userChoice) { var user = await UserService.FindByNameAsync(User.Identity.Name); var university = await UniversityService.GetOrCreateAsync(userChoice, await ChannelTemplateService.GetAsync()); var isAlreadyMember = university.Server.Channels .Any(ch => ch.Memberships.Any(m => m.User.Equals(user))); if (isAlreadyMember) { return("/Chat"); } if (university.Server.IsAuthEnabled) { var partner = await AuthConfigService.GetConfigAsync(university); return($"/Account/SingleSignOn?partnerName={partner.Name}&relayState={user.Id},{university.Id}"); } await UniversityService.JoinAsync(user, university); return("/Chat"); }
/// <summary> /// Uses heuristics to determine if the given <paramref name="result"/> /// may refer to a university building or other subsidiary. /// </summary> public static bool IsDepartment(this NearByResult result) => result.Name.StartsWith("College of", StringComparison.OrdinalIgnoreCase) || result.Name.IndexOf("Department", StringComparison.OrdinalIgnoreCase) >= 0;
/// <summary> /// Returns true if the <paramref name="result"/>'s Types /// collection includes the provided <paramref name="type"/>. /// </summary> public static bool Is(this NearByResult result, PlaceLocationType type) => result.Types.Contains(type);