public void Can_Retrieve_Request_LatestDocument()
        {
            // arrange
            var keys    = new string[] { "Query", "ID", "Request" }; // keys in response
            var length  = keys.Length;
            var handler = new QueryHandler(Fixture.Context);
            var builder = new RequestFromJsonBuilder(null); // no logger

            // act
            var requestId = Fixture.Context.RequestDocuments.First().ID;
            var args      = new Dictionary <string, string>()
            {
                { "ID", requestId.ToString() }
            };
            var result     = handler.QueryFor(Queries.Request, args);
            var resultDict = JsonSerializer.Deserialize <Dictionary <string, string> >(result);
            var jsonDoc    = JsonDocument.Parse(resultDict["Request"]);
            var request    = builder.GetRequest(jsonDoc.RootElement);

            // assert
            foreach (var s in keys)
            {
                resultDict.Should().ContainKey(s);
            }

            request.Should().NotBeNull();
            request.Applicant.Should().NotBeNull();
            request.Contract.Should().NotBeNull();
            request.Remarks.Should().NotBeNull();
            request.Contract.Products.Count.Should().BeGreaterThan(0);
        }
예제 #2
0
        public RequestBase CreateDeepCopy(RequestBase model)
        {
            var json     = model.SerializeToJson();
            var document = JsonDocument.Parse(json);
            var builder  = new RequestFromJsonBuilder(null);

            return(builder.GetRequest(document.RootElement));
        }
        public void CanRetrieve_Command_FromJsonDocument()
        {
            // arrange
            var model        = _requestModelFactory.CreateRequest();
            var expected     = model.Command;
            var jsonDocument = SerializeAndCreateJsonDocmuent(model);
            var builder      = new RequestFromJsonBuilder(null);

            // act
            Commands command = builder.GetCommand(jsonDocument.RootElement.GetProperty("Command"));

            // assert
            command.Should().Be(expected);
        }
        public void GetProductsThrowsWithWrongArgument()
        {
            // arrange
            var model        = _requestModelFactory.CreateRequest();
            var jsonDocument = SerializeAndCreateJsonDocmuent(model);
            var builder      = new RequestFromJsonBuilder(null);

            // act
            var    jsonElement = jsonDocument.RootElement.GetProperty("Contract");
            Action act         = () => builder.GetProducts(jsonElement);

            // assert
            act.Should().Throw <ArgumentException>();
        }
예제 #5
0
        private byte[] HasRequestStatus(Guid requestID, Dictionary <string, string> args, params RequestStatus[] status)
        {
            IList <RequestDocument> selectedDocuments = GetRequestHistory(requestID);
            var  json          = JsonDocument.Parse(selectedDocuments.Last().SerializedRequest);
            var  builder       = new RequestFromJsonBuilder(null); // no logger
            var  currentStatus = builder.GetRequest(json.RootElement).Status;
            bool hasStatus     = (currentStatus == status[0]);
            var  responseDict  = args;

            responseDict.Add("Result", hasStatus ? "true" : "false");
            var response = _responseBuilder.Create(Queries.HasStatus, responseDict);

            return(response.AsUTF8Bytes);
        }
        public void CanRetrieve_Contract_FromJsonDocument()
        {
            // arrange
            var model        = _requestModelFactory.CreateRequest();
            var expected     = model.Contract;
            var jsonDocument = SerializeAndCreateJsonDocmuent(model);
            var builder      = new RequestFromJsonBuilder(null);

            // act
            var      jsonElement = jsonDocument.RootElement.GetProperty("Contract");
            Contract contract    = builder.GetContract(jsonElement);

            // assert
            contract.ID.Should().Be(expected.ID);
        }
예제 #7
0
        private byte[] GetCurrentStatusForRequest(Guid requestID, Dictionary <string, string> args, params RequestStatus[] status)
        {
            IList <RequestDocument> selectedDocuments = GetRequestHistory(requestID);

            var json        = JsonDocument.Parse(selectedDocuments.Last().SerializedRequest);
            var builder     = new RequestFromJsonBuilder(null);
            var request     = builder.GetRequest(json.RootElement);
            var resultsDict = new Dictionary <string, string>()
            {
                { "ID", requestID.ToString() },
                { "Status", request.Status.ToString("g") }
            };
            var response = _responseBuilder.Create(Queries.CurrentStatus, resultsDict);

            return(response.AsUTF8Bytes);
        }
        public void CanRetrieve_Organisation_FromJsonDocument()
        {
            // arrange
            var model        = _requestModelFactory.CreateRequest();
            var expected     = model.Contract.Organisation;
            var jsonDocument = SerializeAndCreateJsonDocmuent(model);
            var builder      = new RequestFromJsonBuilder(null);

            // act
            var jsonElement  = jsonDocument.RootElement.GetProperty("Contract").GetProperty("Organisation");
            var organisation = builder.GetOrganisation(jsonElement);

            // assert
            organisation.ID.Should().Be(expected.ID);
            organisation.Name.Should().Be(expected.Name);
            organisation.Description.Should().Be(expected.Description);
        }
        public void CanRetrieve_Products_FromDocument()
        {
            // arrange
            var model        = _requestModelFactory.CreateRequest();
            var jsonDocument = SerializeAndCreateJsonDocmuent(model);
            var builder      = new RequestFromJsonBuilder(null);

            // act
            var             jsonElement = jsonDocument.RootElement.GetProperty("Contract").GetProperty("Products");
            IList <Product> products    = builder.GetProducts(jsonElement);

            // assert
            products.Count.Should().BeGreaterThan(0);
            products[0].ID.Should().NotBe(0);
            products[0].Name.Should().NotBeNullOrEmpty();
            products[0].Description.Should().NotBeNullOrEmpty();
        }
        public void CanRetrieve_Applicant_FromJsonDocument()
        {
            // arrange
            var model        = _requestModelFactory.CreateRequest();
            var expected     = model.Applicant;
            var jsonDocument = SerializeAndCreateJsonDocmuent(model);
            var builder      = new RequestFromJsonBuilder(null);

            // act
            var    jsonElement = jsonDocument.RootElement.GetProperty("Applicant");
            Person applicant   = builder.GetApplicant(jsonElement);

            // assert
            applicant.FirstName.Should().BeEquivalentTo(expected.FirstName);
            applicant.LastName.Should().BeEquivalentTo(expected.LastName);
            applicant.Salutation.Should().BeEquivalentTo(expected.Salutation);
            applicant.ID.Should().Be(expected.ID);
        }
        public void CanRetrieve_Request_FromJsonDocument()
        {
            // arrange
            var model    = _requestModelFactory.CreateRequest();
            var expected = model;

            var jsonDocument = SerializeAndCreateJsonDocmuent(model);
            var builder      = new RequestFromJsonBuilder(null);

            // act
            var request = builder.GetRequest(jsonDocument.RootElement);

            // assert
            request.ID.Should().Be(expected.ID);
            request.DateCreated.Should().Be(expected.DateCreated);
            request.DateLastUpdated.Should().Be(expected.DateLastUpdated);
            request.Status.Should().Be(expected.Status);
            request.Contract.ID.Should().Be(expected.Contract.ID);
            request.Applicant.ID.Should().Be(expected.Applicant.ID);
        }