// POST api/records
        public HistoryRecordViewModel Post([FromBody] HistoryRecordViewModel viewModelHistoryRecord)
        {
            if (ModelState.IsValid)
            {
                HistoryRecord historyRecord = Mapper.Map <HistoryRecordViewModel, HistoryRecord>(viewModelHistoryRecord);
                try
                {
                    historyRecord.CreateDate = DateTime.Now; //todo настроить в EF автогенерацию
                    historyRecordService.CreateHistoryRecord(historyRecord);
                    historyRecordService.SaveHistoryRecord();
                }
                catch (Exception ex)
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
                }



                ConverterUrl converter = new ConverterUrl(10); //todo вынести в настройки 10
                string       hash      = converter.Encode(historyRecord.Id);

                //historyRecord.UrlShort = $"{Request.RequestUri.Authority}api/values/{hash}"; //to do Или проще так?
                historyRecord.UrlShort = $"{Request.RequestUri.Authority}/Home/Record/{hash}";
                historyRecordService.UpdateHistoryRecord(historyRecord);
                historyRecordService.SaveHistoryRecord();
                viewModelHistoryRecord = Mapper.Map <HistoryRecord, HistoryRecordViewModel>(historyRecord);
            }
            return(viewModelHistoryRecord);
        }
Beispiel #2
0
        public void Add_Url_Sucsess()
        {
            // Arrange
            List <HistoryRecord> historyRecords = new List <HistoryRecord> {
                new HistoryRecord {
                    Id         = 5,
                    UrlShort   = "http://localhost:5864/Home/Record/60ral78pv5",
                    UrlLong    = "https://fake/page/1",
                    CreateDate = DateTime.Now,
                    HitCount   = 0
                },
                new HistoryRecord {
                    Id         = 6,
                    UrlShort   = "http://localhost:5864/Home/Record/70y856ilox",
                    UrlLong    = "https://fake/page/1",
                    CreateDate = DateTime.Now,
                    HitCount   = 0
                },
            };
            Mock <IHistoryRecordService> mock = new Mock <IHistoryRecordService>();

            mock.Setup(m => m.CreateHistoryRecord(It.IsAny <HistoryRecord>()))
            .Callback <HistoryRecord>(c =>
            {
                c.Id         = 7;
                c.CreateDate = DateTime.Now;
                historyRecords.Add(c);
            });

            mock.Setup(m => m.UpdateHistoryRecord(It.IsAny <HistoryRecord>()))
            .Callback <HistoryRecord>(u =>
            {
                var original      = historyRecords.Single(q => q.Id == u.Id);
                original.Id       = u.Id;
                original.UrlShort = u.UrlShort;
            }).Verifiable();
            var historyRecordService = mock.Object;

            AutoMapperConfiguration.Configure();
            HistoryRecordViewModel viewModelHistoryRecord = new HistoryRecordViewModel
            {
                UrlLong = "https://fake/page/1"
            };

            var controller = new RecordsController(historyRecordService);

            SetupControllerForTests(controller);

            // Act
            controller.Post(viewModelHistoryRecord);

            // Assert
            Assert.AreEqual(3, historyRecords.Count());
        }
 public HistoryRecordPage()
 {
     InitializeComponent();
     BindingContext = viewModel = new HistoryRecordViewModel();
 }
 public HistoryRecordPage(HistoryRecordViewModel viewModel)
 {
     InitializeComponent();
     BindingContext = this.viewModel = viewModel;
 }