// 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); }
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; }