Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(417)

Unified Diff: components/translate/core/common/translation_logging_helper_unittest.cc

Issue 2913593002: Implementation of translation event logging. (Closed)
Patch Set: fix Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698