FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

GitHub Viewer

// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #include #include "ValidationMock.h" #include "graphqlservice/JSONResponse.h" #include #include using namespace graphql; using namespace std::literals; class ValidationExamplesCase : public ::testing::Test { public: static void SetUpTestCase() { _service = std::make_shared(std::make_shared(), std::make_shared()); } static void TearDownTestCase() { _service.reset(); } protected: static std::shared_ptr _service; }; std::shared_ptr ValidationExamplesCase::_service; TEST_F(ValidationExamplesCase, CounterExample102) { // https://spec.graphql.org/October2021/#example-12752 auto query = R"(query getDogName { dog { name color } } extend type Dog { color: String })"_graphql; auto errors = service::buildErrorValues(_service->validate(query)).release(); ASSERT_EQ(errors.size(), std::size_t { 2 }); EXPECT_EQ( R"js({"message":"Undefined field type: Dog name: color","locations":[{"line":4,"column":5}]})js", response::toJSON(std::move(errors[0]))) validate(query)).release(); ASSERT_EQ(errors.size(), std::size_t { 1 }); EXPECT_EQ( R"js({"message":"Duplicate operation name: getName","locations":[{"line":7,"column":3}]})js", response::toJSON(std::move(errors[0]))) validate(query)).release(); ASSERT_EQ(errors.size(), std::size_t { 1 }); EXPECT_EQ( R"js({"message":"Duplicate operation name: dogOperation","locations":[{"line":7,"column":3}]})js", response::toJSON(std::move(errors[0]))) validate(query); ASSERT_TRUE(errors.empty()); } TEST_F(ValidationExamplesCase, CounterExample107) { // https://spec.graphql.org/October2021/#example-44b85 auto query = R"({ dog { name } } query getName { dog { owner { name } } })"_graphql; auto errors = service::buildErrorValues(_service->validate(query)).release(); ASSERT_EQ(errors.size(), std::size_t { 1 }); EXPECT_EQ( R"js({"message":"Anonymous operation not alone","locations":[{"line":1,"column":1}]})js", response::toJSON(std::move(errors[0]))) validate(query); ASSERT_TRUE(errors.empty()); } TEST_F(ValidationExamplesCase, Example109) { // https://spec.graphql.org/October2021/#example-13061 auto query = R"(subscription sub { ...newMessageFields } fragment newMessageFields on Subscription { newMessage { body sender } })"_graphql; auto errors = _service->validate(query); ASSERT_TRUE(errors.empty()); } TEST_F(ValidationExamplesCase, CounterExample110) { // https://spec.graphql.org/October2021/#example-3997d auto query = R"(subscription sub { newMessage { body sender } disallowedSecondRootField })"_graphql; auto errors = service::buildErrorValues(_service->validate(query)).release(); ASSERT_EQ(errors.size(), std::size_t { 1 }); EXPECT_EQ( R"js({"message":"Subscription with more than one root field name: sub","locations":[{"line":1,"column":1}]})js", response::toJSON(std::move(errors[0]))) validate(query)).release(); ASSERT_EQ(errors.size(), std::size_t { 1 }); EXPECT_EQ( R"js({"message":"Subscription with more than one root field name: sub","locations":[{"line":1,"column":1}]})js", response::toJSON(std::move(errors[0]))) validate(query)).release(); ASSERT_EQ(errors.size(), std::size_t { 1 }); EXPECT_EQ( R"js({"message":"Subscription with Introspection root field name: sub","locations":[{"line":1,"column":1}]})js", response::toJSON(std::move(errors[0]))) validate(query)).release(); EXPECT_EQ(errors.size(), std::size_t { 4 })

Back | FazBrowse Home | New Git URL