Exemplo n.º 1
0
        public async Task UserService_GetUsersAsync_Returns_Correct_Users()
        {
            //assemble
            var contextOptions = new DbContextOptionsBuilder <InterviewContext>()
                                 .UseInMemoryDatabase("correct-users-returned")
                                 .Options;
            var user = new User
            {
                Id        = Guid.NewGuid(),
                CreatedOn = DateTime.Now,
                Email     = "*****@*****.**",
                FirstName = "tester",
                LastName  = "test"
            };

            using var context = new InterviewContext(contextOptions);
            context.Users.Add(user);
            context.SaveChanges();
            var service = new UserService(context);

            //act
            var users = await service.GetUsersAsync();

            //assert
            Assert.IsNotNull(users.FirstOrDefault(u => u.Id == user.Id));
        }
Exemplo n.º 2
0
        public static void Seed(this InterviewContext context)
        {
            AddUser(new User {
                Id = new Guid("844e71eb-684b-466e-af4d-1a7b86d4f5b6"), FirstName = "Dick", LastName = "Richard", CreatedOn = new DateTime(1968, 1, 1), Email = "*****@*****.**"
            }, context);
            AddUser(new User {
                Id = new Guid("59efd189-8306-41d0-a3fc-381d6fb0adfe"), FirstName = "Rocky", LastName = "Balboa", CreatedOn = new DateTime(2016, 3, 1), Email = "*****@*****.**"
            }, context);
            AddUser(new User {
                Id = new Guid("5293847f-24b7-47f9-8ca0-596dbe1777d6"), FirstName = "Johnny", LastName = "Cash", CreatedOn = new DateTime(1989, 1, 1), Email = "*****@*****.**"
            }, context);
            AddUser(new User {
                Id = new Guid("682131e0-bfcd-4d7f-99a8-9408a64ce825"), FirstName = "Georges", LastName = "Washington", CreatedOn = new DateTime(1796, 1, 1), Email = "*****@*****.**"
            }, context);
            AddUser(new User {
                Id = new Guid("94c74f99-427a-43d1-a822-cf0fe25d6834"), FirstName = "Arnold", LastName = "Schwarzenegger", CreatedOn = new DateTime(1796, 1, 1), Email = "*****@*****.**"
            }, context);
            AddUser(new User {
                Id = new Guid("10caa521-18ef-425a-ba3a-d133651f6c3b"), FirstName = "Donald", LastName = "Trump", CreatedOn = new DateTime(2016, 2, 1), Email = "*****@*****.**"
            }, context);

            foreach (var index in Enumerable.Range(1, 100))
            {
                AddUser(new User {
                    Id = Guid.NewGuid(), FirstName = $"Test-{index}", LastName = "Tester", CreatedOn = DateTime.Now, Email = $"test{index}"
                }, context);
            }

            context.SaveChanges();
        }
Exemplo n.º 3
0
        public async Task UserService_GetUsersAsync_Returns_Correct_Number_Of_Users()
        {
            //assemble
            var contextOptions = new DbContextOptionsBuilder <InterviewContext>()
                                 .UseInMemoryDatabase("correct-number-of-users")
                                 .Options;

            var user = new User
            {
                Id        = Guid.NewGuid(),
                CreatedOn = DateTime.Now,
                Email     = "*****@*****.**",
                FirstName = "tester",
                LastName  = "test"
            };

            using var context = new InterviewContext(contextOptions);
            context.Users.Add(user);
            context.SaveChanges();
            var service = new UserService(context);

            //act
            var users = await service.GetUsersAsync();

            //assert
            Assert.AreEqual(users.Count(), 1);
        }
Exemplo n.º 4
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, InterviewContext interviewContext)
        {
            if (env.IsDevelopment())
            {
                interviewContext.Seed();
                app.UseDeveloperExceptionPage();
            }
            else
            {
                //app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
Exemplo n.º 5
0
        private static void AddUser(User user, InterviewContext context)
        {
            var dbUser = context.Users.FirstOrDefault(u => u.FirstName == user.FirstName && u.LastName == user.LastName);

            if (dbUser == null)
            {
                context.Users.Add(user);
            }
        }
Exemplo n.º 6
0
        public async Task <IActionResult> ReportAdsChange()
        {
            InterviewContext context = new InterviewContext();
            var item = context.Products.ToList();


            await _mailer.SendEmailAsync("*****@*****.**", "Change", "Change Ads" + priceChange);

            return(NoContent());
        }
Exemplo n.º 7
0
        public async Task UserService_AddUser_Returns_Correct_Id()
        {
            //assemble
            var contextOptions = new DbContextOptionsBuilder <InterviewContext>()
                                 .UseInMemoryDatabase("correct-id-returned")
                                 .Options;
            var user = new User
            {
                Id        = Guid.NewGuid(),
                CreatedOn = DateTime.Now,
                Email     = "*****@*****.**",
                FirstName = "tester",
                LastName  = "test"
            };

            using var context = new InterviewContext(contextOptions);
            var service = new UserService(context);

            //act
            var id = await service.AddUser(user);

            //assert
            Assert.IsTrue(user.Id == id);
        }
Exemplo n.º 8
0
        public async Task UserService_AddUser_Adds_To_Context()
        {
            //assemble
            var contextOptions = new DbContextOptionsBuilder <InterviewContext>()
                                 .UseInMemoryDatabase("correct-users-returned")
                                 .Options;
            var user = new User
            {
                Id        = Guid.NewGuid(),
                CreatedOn = DateTime.Now,
                Email     = "*****@*****.**",
                FirstName = "tester",
                LastName  = "test"
            };

            using var context = new InterviewContext(contextOptions);
            var service = new UserService(context);

            //act
            await service.AddUser(user);

            //assert
            Assert.IsNotNull(context.Users.FirstOrDefault());
        }
Exemplo n.º 9
0
 public ProductsController(InterviewContext context)
 {
     _context = context;
 }
Exemplo n.º 10
0
 public DevLossService(InterviewContext context)
 {
     _context = context;
 }
Exemplo n.º 11
0
 public UserService(InterviewContext context)
 {
     _context = context;
 }
Exemplo n.º 12
0
        public async void ProductScrape()
        {
            string price  = "7.250 TL";
            string price1 = "100 TL";
            string price2 = "350 TL";

            string Url =
                "https://www.arabam.com/ilan/rent-a-car-dan-kiralik-skoda-superb/skoda-superb-2018-dizel-otomatik-avansis-oto-kiralama/15772963";
            string Url1   = "https://www.arabam.com/ilan/rent-a-car-dan-kiralik-citroen-c-elysee/dedeoglu-dan-kiralik-dizel-araclar/13058389";
            string Url2   = "https://www.arabam.com/ilan/rent-a-car-dan-kiralik-bmw-3-serisi/ador-motors-bmw-320-m-plus-otomatik-gunluk-350-tl/14951347";
            string XPath  = "//*[@id='wrapper']/div[5]/div[3]/div/div[1]/p";
            string XPath1 = "//*[@id='js-hook-for-observer-detail']/div[2]/ul/li[1]/span[2]";
            string XPath2 = "//*[@id='js-hook-for-observer-detail']/div[2]/div[1]/div/span";

            url  = new Uri(Url);
            url1 = new Uri(Url1);
            url2 = new Uri(Url2);
            WebClient client = new WebClient();

            client.Encoding = Encoding.UTF8;
            html            = client.DownloadString(url);
            html1           = client.DownloadString(url1);
            html2           = client.DownloadString(url2);
            HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
            document.LoadHtml(html);
            var firstAdsName   = document.DocumentNode.SelectSingleNode(XPath).InnerText;
            var firstAdsNumber = document.DocumentNode.SelectSingleNode(XPath1).InnerText;
            var firstAdsPrice  = document.DocumentNode.SelectSingleNode(XPath2).InnerText;

            document.LoadHtml(html1);
            var secondAdsName   = document.DocumentNode.SelectSingleNode(XPath).InnerText;
            var secondAdsNumber = document.DocumentNode.SelectSingleNode(XPath1).InnerText;
            var secondAdsPrice  = document.DocumentNode.SelectSingleNode(XPath2).InnerText;

            document.LoadHtml(html2);
            var     thirdAdsName   = document.DocumentNode.SelectSingleNode(XPath).InnerText;
            var     thirdAdsNumber = document.DocumentNode.SelectSingleNode(XPath1).InnerText;
            var     thirdAdsPrice  = document.DocumentNode.SelectSingleNode(XPath2).InnerText;
            Product adsProduct     = new Product
            {
                Name      = firstAdsName,
                AdsNumber = Convert.ToInt32(firstAdsNumber),
                Price     = firstAdsPrice,

                Date = DateTime.Now
            };
            Product adsProduct1 = new Product
            {
                Name      = secondAdsName,
                AdsNumber = Convert.ToInt32(secondAdsNumber),
                Price     = secondAdsPrice,
                Date      = DateTime.Now
            };
            Product adsProduct2 = new Product
            {
                Name      = thirdAdsName,
                AdsNumber = Convert.ToInt32(thirdAdsNumber),
                Price     = thirdAdsPrice,
                Date      = DateTime.Now
            };
            InterviewContext context = new InterviewContext();

            if (adsProduct.Price != price)
            {
                priceChange = price + "" + adsProduct.Price;
                await _mailer.SendEmailAsync("*****@*****.**", "Change", "ChangeAdsProduct" + priceChange);
            }

            if (adsProduct1.Price != price1)
            {
                priceChange = price + "" + adsProduct1.Price;
                await _mailer.SendEmailAsync("*****@*****.**", "Change", "ChangeAdsProduct" + priceChange);
            }

            if (adsProduct2.Price != price2)
            {
                priceChange = price + "" + adsProduct2.Price;
                await _mailer.SendEmailAsync("*****@*****.**", "Change", "ChangeAdsProduct" + priceChange);
            }
            await context.Products.AddAsync(adsProduct);

            await context.Products.AddAsync(adsProduct1);

            await context.Products.AddAsync(adsProduct2);

            await context.SaveChangesAsync();
        }