Example #1
0
        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();
            }
        }
Example #2
0
        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();
            }
        }
Example #3
0
 /// <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));
     }
 }
Example #4
0
        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());
            }
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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");
        }
Example #7
0
 /// <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;
Example #8
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);