| Index: components/translate/core/common/translation_logging_helper_unittest.cc
|
| diff --git a/components/translate/core/common/translation_logging_helper_unittest.cc b/components/translate/core/common/translation_logging_helper_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d25247bba7b1dfe1803879d6b85793fc00de1a1a
|
| --- /dev/null
|
| +++ b/components/translate/core/common/translation_logging_helper_unittest.cc
|
| @@ -0,0 +1,87 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "components/translate/core/common/translation_logging_helper.h"
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/logging.h"
|
| +#include "components/metrics/proto/translate_event.pb.h"
|
| +#include "components/sync/protocol/user_event_specifics.pb.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +using metrics::TranslateEventProto;
|
| +using sync_pb::Translation;
|
| +
|
| +void EqualTranslationProto(const Translation& first,
|
| + const Translation& second) {
|
| + EXPECT_EQ(first.from_language_code(), second.from_language_code());
|
| + EXPECT_EQ(first.to_language_code(), second.to_language_code());
|
| + EXPECT_EQ(first.interaction(), second.interaction());
|
| +}
|
| +
|
| +namespace translate {
|
| +
|
| +// Tests that UserEventSpecifics is correctly built.
|
| +TEST(TranslationLoggingHelperTest, ConstructUserEventSpecifics) {
|
| + // The event we have.
|
| + TranslateEventProto translation_event;
|
| + translation_event.set_source_language("ja");
|
| + translation_event.set_target_language("en");
|
| + translation_event.set_event_type(TranslateEventProto::USER_DECLINE);
|
| + // Expected user_event.
|
| + Translation user_translation_event;
|
| + user_translation_event.set_from_language_code("ja");
|
| + user_translation_event.set_to_language_code("en");
|
| + user_translation_event.set_interaction(Translation::DECLINE);
|
| + // The user event.
|
| + sync_pb::UserEventSpecifics user_specifics;
|
| + const int64_t navigation_id = 1000000000000000LL;
|
| + const bool needs_logging = ConstructTranslateEvent(
|
| + navigation_id, translation_event, &user_specifics);
|
| + EXPECT_TRUE(needs_logging);
|
| + EXPECT_EQ(user_specifics.navigation_id(), navigation_id);
|
| + EqualTranslationProto(user_translation_event, user_specifics.translation());
|
| +}
|
| +
|
| +// Tests that if user change the target language, the event is MANUAL.
|
| +TEST(TranslationLoggingHelperTest, UserManualEvent) {
|
| + // The event we have.
|
| + TranslateEventProto translation_event;
|
| + translation_event.set_source_language("ja");
|
| + translation_event.set_target_language("en");
|
| + translation_event.set_modified_target_language("fr");
|
| + translation_event.set_event_type(TranslateEventProto::USER_ACCEPT);
|
| + // Expected user_event.
|
| + Translation user_translation_event;
|
| + user_translation_event.set_from_language_code("ja");
|
| + user_translation_event.set_to_language_code("fr");
|
| + user_translation_event.set_interaction(Translation::MANUAL);
|
| + // The user event.
|
| + sync_pb::UserEventSpecifics user_specifics;
|
| + const int64_t navigation_id = 100;
|
| + const bool needs_logging = ConstructTranslateEvent(
|
| + navigation_id, translation_event, &user_specifics);
|
| + EXPECT_TRUE(needs_logging);
|
| + EXPECT_EQ(user_specifics.navigation_id(), navigation_id);
|
| + EqualTranslationProto(user_translation_event, user_specifics.translation());
|
| +}
|
| +
|
| +// Tests that we don't build unnecessary events.
|
| +TEST(TranslationLoggingHelperTest, DontBuildUnnecessaryEvent) {
|
| + // The event we have.
|
| + TranslateEventProto translation_event;
|
| + translation_event.set_source_language("ja");
|
| + translation_event.set_target_language("en");
|
| + // The event we don't care.
|
| + translation_event.set_event_type(TranslateEventProto::DISABLED_BY_RANKER);
|
| + // The user event.
|
| + sync_pb::UserEventSpecifics user_specifics;
|
| + const bool needs_logging =
|
| + ConstructTranslateEvent(100, translation_event, &user_specifics);
|
| + // We don't expect the event to be logged.
|
| + EXPECT_FALSE(needs_logging);
|
| +}
|
| +
|
| +} // namespace translate
|
|
|