Esempio n. 1
0
        // GET: HalFeed
        public async Task <ActionResult> Index(int page = 1)
        {
            var messageService = new HalJsonMessageService <Message>(
                new SqlServerMessageRepository("server=.;database=scratchpad;trusted_connection=true;", "usp_StoreMessage", "usp_GetPageOfMessages", 10),
                new HalResourceAttributeExtrator(),
                new PageLinkBuilder());
            var halPage = await messageService.GetPageAsync(page);

            var contentType = halPage.Headers["Content-Type"].DefaultIfEmpty("application/hal+json").FirstOrDefault();

            return(Content(halPage.Content, contentType));
        }
        public void Arrange()
        {
            _messageRepository = new Mock <IMessageRepository>();
            _messageRepository.Setup(r => r.RetreivePageAsync <TestMessage>(It.IsAny <int>()))
            .Returns(Task.FromResult(new SyndicationPage <TestMessage>
            {
                Messages = new[]
                {
                    new TestMessage()
                },
                PageNumber            = 2,
                TotalNumberOfMessages = 100,
                TotalNumberOfPages    = 10
            }));

            _halResourceAttributeExtrator = new Mock <IHalResourceAttributeExtrator <TestMessage> >();
            _halResourceAttributeExtrator.Setup(x => x.Extract(It.IsAny <TestMessage>()))
            .Returns(new HalResourceAttributes
            {
                Links = new Dictionary <string, string>
                {
                    { "self", "me" }
                },
                Properties = new Dictionary <string, string>
                {
                    { "Id", "some-id" }
                }
            });

            _halPageLinkBuilder = new Mock <IHalPageLinkBuilder>();
            _halPageLinkBuilder.Setup(x => x.NextPage(It.IsAny <int>())).Returns("/nextpage");
            _halPageLinkBuilder.Setup(x => x.PreviousPage(It.IsAny <int>())).Returns("/prevpage");
            _halPageLinkBuilder.Setup(x => x.FirstPage(It.IsAny <int>())).Returns("/first");
            _halPageLinkBuilder.Setup(x => x.LastPage(It.IsAny <int>())).Returns("/last");

            _messageService = new HalJsonMessageService <TestMessage>(_messageRepository.Object, _halResourceAttributeExtrator.Object, _halPageLinkBuilder.Object);
        }