Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. public interface IPage
  2. {
  3. Task<PromptResult> CountDialog(decimal previousCount);
  4. }
  5.  
  6. public class PageViewModel : ViewModelBase<ObservableRangeCollection<Detail>>
  7. {
  8. private readonly IPage _page;
  9. private readonly IService _service;
  10. private ICommand _editItemCommand;
  11.  
  12. public PageViewModel(IService service, IPage page)
  13. {
  14. _service = service;
  15. _page = page;
  16. Data = new ObservableRangeCollection<Detail>();
  17. }
  18.  
  19. public ICommand EditItemCommand
  20. {
  21. get => _editItemCommand ??
  22. (_editItemCommand = new Command<Detail>(async (o) => { await EditItem(o); }));
  23. set => _editItemCommand = value;
  24. }
  25.  
  26. public async Task EditItem(Detail detail)
  27. {
  28. if (detail == null) return;
  29. try
  30. {
  31. var result = await _page.CountDialog(detail.Count); // It should return PromptResult (from UserDialogs lib) but every time is null, in normal running app, it works and is Not null
  32. if (result == null) return; //in test is usually null
  33. if (!result.Ok || string.IsNullOrWhiteSpace(result.Text)) return;
  34. var newCount = Convert.ToInt32(result.Text);
  35. var res = await _service.EditItem(detail, newCount);
  36. if (res.Status)
  37. UpdatePageItem(detail, newCount);
  38. }
  39. catch (RestException exception)
  40. {
  41. // nothing
  42. }
  43. }
  44. }
  45.  
  46. public class ViewModelTest
  47. {
  48. Mock<IService> _service = new Mock<IService>();
  49. Mock<IPage> _page = new Mock<IPage>();
  50. private PageViewModel _viewModel;
  51.  
  52. public PageViewModelTest()
  53. {
  54. _viewModel = new PageViewModel(_service.Object, _page.Object);
  55. }
  56.  
  57. [Fact]
  58. public async Task EditItemTest_SuccessAsync()
  59. {
  60. var pageItems = GetItemsFake();
  61. var result = new PromptResult(true, "12"); // the result i wish to be returned (but is usually null)
  62. _page.Setup(x => x.CountDialog(It.IsAny<int>())).ReturnsAsync(result); // this is mock part that not work
  63. _service.Setup(x => x.GetItems(It.IsAny<int>())).ReturnsAsync(pageItems);// works
  64. _service.Setup(c => c.EditItem(It.IsAny<int>(), It.IsAny<Detail>(), It.IsAny<int>())).ReturnsAsync(
  65. new ActionResponse
  66. {
  67. Result = "OK"
  68. });//works
  69.  
  70. _viewModel.LoadDataCommand.Execute(true);
  71. await _viewModel.EditItem(pageItems .ElementAt(0)); // after this line code goes to _viewModel class and there is null
  72. // _viewModel.EditItemCommand.Execute(pageItems.ElementAt(0)); // Also checked this one too, but not work too
  73.  
  74. Assert.Equal(12, _viewModel.Data.ElementAt(0).Count); // not passed due to not working mock
  75. }
  76. }
  77.  
  78. _page.Setup(x => x.CountDialog(It.IsAny<decimal>())).ReturnsAsync(result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement