예제 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            ValueResource <int>     testResource = new ValueResource <int>(3, "http://127.0.0.1:3333/int/");
            ValueResource <XmlBool> test2        = new ValueResource <XmlBool>(new XmlBool(true), "http://127.0.0.1:3333/bool/");

            WebsocketSubscription      wsSubscription = new WebsocketSubscription("ws://stuff");
            WebHookSubscription        whSubscription = new WebHookSubscription("http://test");
            ObservableCollection <int> c = new ObservableCollection <int>();
            CollectionResource <ObservableCollection <int>, int> r = new CollectionResource <ObservableCollection <int>, int>(c, "http://localhost:12345/c/");

            testResource.Subscribe(whSubscription);
            testResource.Subscribe(wsSubscription);

            Console.WriteLine("Any key to change int to 12 ...");
            Console.ReadKey();
            testResource.Value = 12;

            r.Subscribe(whSubscription);
            r.Subscribe(wsSubscription);

            Console.WriteLine("Any key to add 12 to Collection...");
            Console.ReadKey();
            r.Value.Add(12);

            Console.WriteLine("Any key to close application...");
            Console.ReadKey();
        }
        public void FormattingADisputeCollectionAsHal_SettingHalForceTrue_ConfiguresForceHalTrue()
        {
            // Arrange
            const int numberOfItemsInCollection = 1000;
            const int numberOfPagesInCollection = 100;
            const int currentPage = 20;

            var mockedRequestReader   = new Mock <IRequestReader>();
            var mockedAddressResolver = new Mock <IAddressResolver>();
            var mockedPagingLinks     = new Mock <IPagingLinks>();
            var responseObject        =
                new DisputeCollectionResponse(
                    mockedAddressResolver.Object,
                    mockedPagingLinks.Object,
                    mockedRequestReader.Object);

            mockedPagingLinks
            .Setup(pagingLinks => pagingLinks.GetPagingLinks(It.IsAny <Uri>(), currentPage, numberOfPagesInCollection))
            .Returns(new List <Link>());

            var disputes           = new List <DisputeModel>();
            var disputesCollection =
                new CollectionResource <DisputeModel>(
                    new CollectionResourceInfo(numberOfItemsInCollection, numberOfPagesInCollection, currentPage),
                    disputes);

            // Act
            var halResponse = responseObject.FormatForHal(disputesCollection);

            // Assert
            Assert.IsTrue(halResponse.Config.ForceHAL);
        }
        public void ConfiguringAnInsolvencyCollectionAsHal_WithNullUriProvided_ThrowsArgumentNullException()
        {
            // Arrange
            const int numberOfItemsInCollection = 1000;
            const int numberOfPagesInCollection = 100;
            const int currentPage = 20;

            var addressResolverMock = new Mock <IAddressResolver>();
            var pagingLinksMock     = new Mock <IPagingLinks>();
            var requestReaderMock   = new Mock <IRequestReader>();
            var includeReader       = new Mock <IIncludeReader>();

            var responseObject =
                new InsolvencyOrderCollectionResponse(
                    addressResolverMock.Object,
                    pagingLinksMock.Object,
                    requestReaderMock.Object,
                    includeReader.Object);

            var insolvencyOrders = new List <InsolvencyOrderModel>();

            var insolvencyCollection = new CollectionResource <InsolvencyOrderModel>(
                new CollectionResourceInfo(numberOfItemsInCollection, numberOfPagesInCollection, currentPage), insolvencyOrders);

            // Act
            void CreateHalResponse() => responseObject.FormatForHal(insolvencyCollection);

            // Assert
            Assert.ThrowsException <ArgumentNullException>((Action)CreateHalResponse);
        }
        public void FormattingADisputeCollectionAsHal_WithACallToGetALinkToTheParentRecordInTheConfiguration_CallsGetLink()
        {
            // Arrange
            const int    numberOfItemsInCollection = 1000;
            const int    numberOfPagesInCollection = 100;
            const int    currentPage = 20;
            const string routeName   = DomainResources.Disputes;
            const string linkName    = CommonLinks.Parent;

            var mockedRequestReader   = new Mock <IRequestReader>();
            var mockedAddressResolver = new Mock <IAddressResolver>();
            var mockedPagingLinks     = new Mock <IPagingLinks>();
            var responseObject        =
                new DisputeCollectionResponse(
                    mockedAddressResolver.Object,
                    mockedPagingLinks.Object,
                    mockedRequestReader.Object);

            mockedPagingLinks
            .Setup(pagingLinks => pagingLinks.GetPagingLinks(It.IsAny <Uri>(), currentPage, numberOfPagesInCollection))
            .Returns(new List <Link>());

            var disputes           = new List <DisputeModel>();
            var disputesCollection = new CollectionResource <DisputeModel>(
                new CollectionResourceInfo(numberOfItemsInCollection, numberOfPagesInCollection, currentPage), disputes);

            // Act
            responseObject.FormatForHal(disputesCollection);

            // Assert
            mockedAddressResolver.Verify(mock => mock.GetLink(routeName, linkName), Times.Once);
        }
        public void FormattingADisputeCollectionAsHal_WithDataProvided_CreatesHalResponseModelEqualToTheCollectionInformation()
        {
            // Arrange
            const int numberOfItemsInCollection = 1000;
            const int numberOfPagesInCollection = 100;
            const int currentPage = 20;

            var mockedRequestReader   = new Mock <IRequestReader>();
            var mockedAddressResolver = new Mock <IAddressResolver>();
            var mockedPagingLinks     = new Mock <IPagingLinks>();
            var responseObject        =
                new DisputeCollectionResponse(
                    mockedAddressResolver.Object,
                    mockedPagingLinks.Object,
                    mockedRequestReader.Object);

            mockedPagingLinks
            .Setup(pagingLinks => pagingLinks.GetPagingLinks(It.IsAny <Uri>(), currentPage, numberOfPagesInCollection))
            .Returns(new List <Link>());

            var disputes           = new List <DisputeModel>();
            var disputesCollection = new CollectionResource <DisputeModel>(
                new CollectionResourceInfo(numberOfItemsInCollection, numberOfPagesInCollection, currentPage), disputes);

            // Act
            var halResponse = responseObject.FormatForHal(disputesCollection);

            // Assert
            halResponse.ShouldHaveModel(disputesCollection.Information);
        }
        public void FormattingADisputeCollectionAsHal_WithValidDisputesModelCollection_ReturnsExpectedCollection()
        {
            // Arrange
            const int numberOfItemsInCollection = 1000;
            const int numberOfPagesInCollection = 100;
            const int currentPage = 20;

            var collectionKey         = DomainResources.Disputes.ToLowerInvariant();
            var mockedRequestReader   = new Mock <IRequestReader>();
            var mockedAddressResolver = new Mock <IAddressResolver>();
            var mockedPagingLinks     = new Mock <IPagingLinks>();

            var disputes           = new List <DisputeModel>();
            var disputesCollection = new CollectionResource <DisputeModel>(
                new CollectionResourceInfo(numberOfItemsInCollection, numberOfPagesInCollection, currentPage), disputes);

            mockedPagingLinks
            .Setup(pagingLinks => pagingLinks.GetPagingLinks(It.IsAny <Uri>(), currentPage, numberOfPagesInCollection))
            .Returns(new List <Link>());

            var responseObject =
                new DisputeCollectionResponse(
                    mockedAddressResolver.Object,
                    mockedPagingLinks.Object,
                    mockedRequestReader.Object);

            var resultsToFormat = DisputeTestData.CreateDisputeActuals();

            // Act
            var halFormattedResponse = responseObject.FormatForHal(disputesCollection);

            // Assert
            halFormattedResponse.ShouldHaveEmbeddedCollection(collectionKey, resultsToFormat);
        }
예제 #7
0
        public void GetAllInsolvencyRecords_WhereThereAreSome_ReturnsOkStatusCode200()
        {
            // Arrange
            const int expectedStatusCode = 200;

            var collectionResourceInfo = new CollectionResourceInfo(0, 10, 1);
            var collectionResource     =
                new CollectionResource <InsolvencyOrderModel>(collectionResourceInfo, TestFixture.CreateMany <InsolvencyOrderModel>(10).ToList());

            mockDataAccessCradle
            .Setup(cradle =>
                   cradle.GetPagedDataSetAsync(
                       It.IsAny <Func <Task <IEnumerable <InsolvencyOrderModel> > > >(),
                       It.IsAny <Func <Task <int> > >()))
            .Returns(Task.FromResult(collectionResource));

            var controller =
                new InsolvencyOrdersController(
                    mockDataAccessCradle.Object,
                    mockInsolvencyOrdersRepository.Object,
                    mockInsolvencyOrdersFlattenedRepository.Object,
                    mockIncludeReader.Object,
                    mockPageInformationReader.Object,
                    mockInsolvenciesHalFormatter.Object,
                    mockInsolvenciesHalCollectionFormatter.Object,
                    mockTelemetryClient.Object);

            // Act
            var result = controller.GetAllInsolvencyOrders().GetAwaiter().GetResult();

            // Assert
            Assert.IsInstanceOfType(result, typeof(OkObjectResult));
            Assert.AreEqual(expectedStatusCode, ((OkObjectResult)result).StatusCode);
        }
        public void ConfiguringAnInsolvencyCollectionAsHal_WithNullDataProvided_HasCorrectParameterNameInException()
        {
            // Arrange
            const string expectedParameterName = "collection";

            CollectionResource <InsolvencyOrderModel> insolvencyCollection = null;
            var addressResolverMock = new Mock <IAddressResolver>();
            var pagingLinksMock     = new Mock <IPagingLinks>();
            var requestReaderMock   = new Mock <IRequestReader>();
            var includeReader       = new Mock <IIncludeReader>();

            var responseObject =
                new InsolvencyOrderCollectionResponse(
                    addressResolverMock.Object,
                    pagingLinksMock.Object,
                    requestReaderMock.Object,
                    includeReader.Object);

            // Act
            void CreateHalResponse() => responseObject.FormatForHal(insolvencyCollection);

            // Assert
            ExceptionAssert.HasCorrectParameterNameForArgumentException(
                CreateHalResponse,
                expectedParameterName);
        }
예제 #9
0
        public void GettingPersonsByInsolvencyOrderId_WhenThereAreNoneToReturn_ReturnsOkStatusCode200()
        {
            // Arrange
            const int insolvencyOrderId  = 7654321;
            const int expectedStatusCode = 200;

            var collectionResourceInfo = new CollectionResourceInfo(0, 10, 1);
            var collectionResource     =
                new CollectionResource <InsolvencyOrderPersonModel>(collectionResourceInfo, new List <InsolvencyOrderPersonModel>());

            mockDataAccessCradle
            .Setup(cradle =>
                   cradle.GetPagedDataSetAsync(
                       It.IsAny <Func <Task <IEnumerable <InsolvencyOrderPersonModel> > > >(),
                       It.IsAny <Func <Task <int> > >()))
            .Returns(Task.FromResult(collectionResource));

            var controller =
                new InsolvencyOrderPersonsController(
                    mockDataAccessCradle.Object,
                    mockPersonsRepository.Object,
                    mockIncludeReader.Object,
                    mockPageInformationProvider.Object,
                    mockHalFormatter.Object,
                    mockHalCollectionFormatter.Object,
                    mockTelemetryClient.Object);

            // Act
            var result = controller.GetPersonsByInsolvencyIdAsync(insolvencyOrderId).GetAwaiter().GetResult();

            // Assert
            Assert.IsInstanceOfType(result, typeof(OkObjectResult));
            Assert.AreEqual(expectedStatusCode, ((OkObjectResult)result).StatusCode);
        }
        public void contains_profile()
        {
            var collectionResource = new CollectionResource<FooResource>();

            var jToken = _mediaFormatter.Format(collectionResource);

            jToken.SelectToken("_links.profile.href").Value<string>().ShouldEqual(Profiles.Collection);
        }
 public HttpResponseMessage Get()
 {
     var collectionResource = new CollectionResource<BarResource>();
     collectionResource.Links.Add(new Link("self", "/BarCollection"));
     var resource = new BarResource();
     resource.Links.Add(new Link("self", "/Bar/1"));
     collectionResource.Items.Add(resource);
     return Request.CreateResponse(collectionResource);
 }
        public void items_element_is_json_array()
        {
            var collectionResource = new CollectionResource<FooResource>();

            var jToken = _mediaFormatter.Format(collectionResource);

            jToken
                .SelectToken("_items")
                .Type
                .ShouldEqual(JTokenType.Array);
        }
        public void items_array_contains_resources()
        {
            var collectionResource = new CollectionResource<FooResource>();
            var resource = new FooResource { Bar = "Foo" };
            resource.Links.Add(new Link("self", "/foo"));
            collectionResource.Items.Add(resource);

            var jToken = _mediaFormatter.Format(collectionResource);

            jToken
                .SelectToken("_items[0].bar")
                .Value<string>()
                .ShouldEqual("Foo");
        }
예제 #14
0
        public async Task <IActionResult> GetAuthors([FromQuery] TablesResourceParameters tableResourceParameters)
        {
            if (string.IsNullOrEmpty(tableResourceParameters?.TableName))
            {
                return(BadRequest());
            }

            var rows = await _dapperRepository.GetTableAsync(tableResourceParameters.TableName, tableResourceParameters.PageSize, tableResourceParameters.PageNumber);

            var rowCount = await _dapperRepository.GetTableCountAsync(tableResourceParameters.TableName);

            int currentPage = tableResourceParameters.PageNumber + 1;
            int pageSize    = tableResourceParameters.PageSize;
            int totalCount  = rowCount;

            return(Ok(CollectionResource.Create(rows, currentPage, pageSize, totalCount)));
        }
        public void FormattingADisputeCollectionAsHal_WithNullDataProvided_ThrowsArgumentNullException()
        {
            // Arrange
            var mockedRequestReader   = new Mock <IRequestReader>();
            var mockedAddressResolver = new Mock <IAddressResolver>();
            var mockedPagingLinks     = new Mock <IPagingLinks>();
            var responseObject        = new DisputeCollectionResponse(
                mockedAddressResolver.Object,
                mockedPagingLinks.Object,
                mockedRequestReader.Object);

            CollectionResource <DisputeModel> disputesCollection = null;

            // Act
            void CreateHalResponse() => responseObject.FormatForHal(disputesCollection);

            // Assert
            Assert.ThrowsException <ArgumentNullException>((Action)CreateHalResponse);
        }
        public void ConfiguringAnInsolvencyCollectionAsHal_WithNullDataProvided_ThrowsArgumentNullException()
        {
            // Arrange
            CollectionResource <InsolvencyOrderModel> insolvencyCollection = null;
            var addressResolverMock = new Mock <IAddressResolver>();
            var pagingLinksMock     = new Mock <IPagingLinks>();
            var requestReaderMock   = new Mock <IRequestReader>();
            var includeReader       = new Mock <IIncludeReader>();

            var responseObject =
                new InsolvencyOrderCollectionResponse(
                    addressResolverMock.Object,
                    pagingLinksMock.Object,
                    requestReaderMock.Object,
                    includeReader.Object);

            // Act
            void CreateHalResponse() => responseObject.FormatForHal(insolvencyCollection);

            // Assert
            Assert.ThrowsException <ArgumentNullException>((Action)CreateHalResponse);
        }
        public void FormattingADisputeCollectionAsHal_WithNullDataProvided_HasCorrectParameterNameInException()
        {
            // Arrange
            const string expectedParameterName = "collection";

            var mockedRequestReader   = new Mock <IRequestReader>();
            var mockedAddressResolver = new Mock <IAddressResolver>();
            var mockedPagingLinks     = new Mock <IPagingLinks>();
            var responseObject        =
                new DisputeCollectionResponse(
                    mockedAddressResolver.Object,
                    mockedPagingLinks.Object,
                    mockedRequestReader.Object);

            CollectionResource <DisputeModel> disputesCollection = null;

            // Act
            void CreateHalResponse() => responseObject.FormatForHal(disputesCollection);

            // Assert
            ExceptionAssert.HasCorrectParameterNameForArgumentException(CreateHalResponse, expectedParameterName);
        }
        public void GettingDisputesByInsolvencyId_WhenThereAreSome_ReturnsOkStatusCode200()
        {
            // Arrange
            const int insolvencyOrderId  = 1234567;
            const int expectedStatusCode = 200;

            var collectionResourceInfo = new CollectionResourceInfo(0, 10, 1);
            var collectionResource     =
                new CollectionResource <DisputeModel>(
                    collectionResourceInfo,
                    TestFixture.CreateMany <DisputeModel>(10).ToList());

            mockDataAccessCradle
            .Setup(dataAccessCradle =>
                   dataAccessCradle.GetPagedDataSetAsync(
                       It.IsAny <Func <Task <IEnumerable <DisputeModel> > > >(),
                       It.IsAny <Func <Task <int> > >()))
            .Returns(Task.FromResult(collectionResource));

            var controller =
                new DisputesController(
                    mockDataAccessCradle.Object,
                    mockDisputeRepository.Object,
                    mockIncludeReader.Object,
                    mockPageInformationProvider.Object,
                    mockDisputeFormatter.Object,
                    mockDisputeCollectionFormatter.Object,
                    mockTelemetryClient.Object);

            // Act
            var result = controller.GetDisputesByInsolvencyIdAsync(insolvencyOrderId).GetAwaiter().GetResult();

            // Assert
            Assert.IsInstanceOfType(result, typeof(OkObjectResult));
            Assert.AreEqual(expectedStatusCode, ((OkObjectResult)result).StatusCode);
        }
        /// <summary>
        /// Format HAL collection
        /// </summary>
        /// <param name="collection">collection to format</param>
        /// <returns>HAL json</returns>
        public HALResponse FormatForHal(CollectionResource <InsolvencyOrderAddressModel> collection)
        {
            Requires.NotNull(collection, nameof(collection));

            var uri = requestReader.GetRequestUri();

            Link[] links =
            {
                addressResolver.GetLink(DomainResources.InsolvencyOrderAddress,   CommonLinks.Self),
                addressResolver.GetLink(DomainResources.InsolvencyOrderAddresses, CommonLinks.Parent)
            };

            var collectionResponse =
                new HALResponse(collection.Information, new HALModelConfig {
                ForceHAL = true
            })
                .AddLinks(pagingLinks.GetPagingLinks(uri, collection.Information.CurrentPage, collection.Information.NumberOfPages))
                .AddEmbeddedCollection(
                    collectionName: DomainResources.InsolvencyOrderAddresses_camelCase,
                    model: collection.Resources,
                    links: links);

            return(collectionResponse);
        }