コード例 #1
0
    public void TestThatGetAllUsersDispatches()
    {
        var postRequest1   = Request.From(ConsumerByteBuffer(PostJohnDoeUserMessage));
        var postCompletes1 = new MockCompletesEventuallyResponse();

        var postCompletes1WithCalls = postCompletes1.ExpectWithTimes(1);

        Dispatcher.DispatchFor(new Context(postRequest1, postCompletes1));
        postCompletes1WithCalls.ReadFrom <int>("completed");

        Assert.NotNull(postCompletes1.Response);
        var postRequest2   = Request.From(ConsumerByteBuffer(PostJaneDoeUserMessage));
        var postCompletes2 = new MockCompletesEventuallyResponse();

        var postCompletes2WithCalls = postCompletes2.ExpectWithTimes(1);

        Dispatcher.DispatchFor(new Context(postRequest2, postCompletes2));
        postCompletes2WithCalls.ReadFrom <int>("completed");

        Assert.NotNull(postCompletes2.Response);

        var getUserMessage = "GET /users HTTP/1.1\nHost: vlingo.io\n\n";
        var getRequest     = Request.From(ConsumerByteBuffer(getUserMessage));
        var getCompletes   = new MockCompletesEventuallyResponse();

        var getCompletesWithCalls = getCompletes.ExpectWithTimes(1);

        Dispatcher.DispatchFor(new Context(getRequest, getCompletes));
        getCompletesWithCalls.ReadFrom <int>("completed");

        Assert.NotNull(getCompletes.Response);
        Assert.Equal(ResponseStatus.Ok, getCompletes.Response.Get().Status);
        var getUserData = JsonSerialization.DeserializedList <UserData>(getCompletes.Response.Get().Entity.Content, _settings);

        Assert.NotNull(getUserData);

        var johnUserData = UserData.UserAt(postCompletes1.Response.Get().HeaderOf(ResponseHeader.Location).Value, getUserData);

        Assert.Equal(JohnDoeUserData.NameData.Given, johnUserData.NameData.Given);
        Assert.Equal(JohnDoeUserData.NameData.Family, johnUserData.NameData.Family);
        Assert.Equal(JohnDoeUserData.ContactData.EmailAddress, johnUserData.ContactData.EmailAddress);
        Assert.Equal(JohnDoeUserData.ContactData.TelephoneNumber, johnUserData.ContactData.TelephoneNumber);

        var janeUserData = UserData.UserAt(postCompletes2.Response.Get().HeaderOf(ResponseHeader.Location).Value, getUserData);

        Assert.Equal(JaneDoeUserData.NameData.Given, janeUserData.NameData.Given);
        Assert.Equal(JaneDoeUserData.NameData.Family, janeUserData.NameData.Family);
        Assert.Equal(JaneDoeUserData.ContactData.EmailAddress, janeUserData.ContactData.EmailAddress);
        Assert.Equal(JaneDoeUserData.ContactData.TelephoneNumber, janeUserData.ContactData.TelephoneNumber);
    }