// Copyright (c) 2023 Proton AG // // This file is part of Proton Mail Bridge. // // Proton Mail Bridge is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Proton Mail Bridge is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Proton Mail Bridge. If not, see . #include "TestBugReportFlow.h" #include using namespace bridgepp; //**************************************************************************************************************************************************** // //**************************************************************************************************************************************************** BugReportFlowFixture::BugReportFlowFixture() : testing::Test() , flow_() , file_(){ } //**************************************************************************************************************************************************** // //**************************************************************************************************************************************************** void BugReportFlowFixture::SetUp() { Test::SetUp(); } //**************************************************************************************************************************************************** // //**************************************************************************************************************************************************** void BugReportFlowFixture::TearDown() { Test::TearDown(); } //**************************************************************************************************************************************************** // //**************************************************************************************************************************************************** void BugReportFlowFixture::feedTempFile(const QString& json) { QJsonDocument doc = QJsonDocument().fromJson(json.toUtf8()); file_.open(); file_.write(doc.toJson()); file_.close(); } //**************************************************************************************************************************************************** // //**************************************************************************************************************************************************** TEST_F(BugReportFlowFixture, noFile) { EXPECT_FALSE(flow_.parse("")); EXPECT_EQ(flow_.categories(), QStringList()); EXPECT_EQ(flow_.questions(), QVariantList()); } //**************************************************************************************************************************************************** // //**************************************************************************************************************************************************** TEST_F(BugReportFlowFixture, emptyFile) { feedTempFile(""); EXPECT_TRUE(flow_.parse(file_.fileName())); EXPECT_EQ(flow_.categories(), QStringList()); EXPECT_EQ(flow_.questions(), QVariantList()); } //**************************************************************************************************************************************************** // //**************************************************************************************************************************************************** TEST_F(BugReportFlowFixture, validFile) { feedTempFile("{" " \"metadata\": {" " \"version\": \"1.0.0\"" " }," " \"data_v1.0.0\": {" " \"categories\": [" " {" " \"id\": 0," " \"name\": \"I can't receive mail\"," " \"questions\": [0]" " }" " ]," " \"questions\": [" " {" " \"id\": 0," " \"text\": \"What happened?\"," " \"tips\": \"Expected behavior\"," " \"type\": 1" " }" " ]" " }" "}"); EXPECT_TRUE(flow_.parse(file_.fileName())); QStringList categories = flow_.categories(); QVariantList questions = flow_.questions(); EXPECT_EQ(categories.count(), 1); EXPECT_EQ(categories[0], "I can't receive mail"); EXPECT_EQ(questions.count(), 1); QVariantMap q1 = questions[0].toMap(); EXPECT_EQ(q1.value("id").toInt(), 0); EXPECT_EQ(q1.value("text").toString(), "What happened?"); EXPECT_EQ(q1.value("tips").toString(), "Expected behavior"); EXPECT_EQ(q1.value("type").toInt(), 1); QVariantList questionSet = flow_.questionSet(0); EXPECT_EQ(questionSet.count(), 1); EXPECT_EQ(questionSet[0].toInt(), 0); QVariantList questionSetBad = flow_.questionSet(1); EXPECT_EQ(questionSetBad.count(), 0); EXPECT_TRUE(flow_.setAnswer(0, "pwet")); EXPECT_FALSE(flow_.setAnswer(1, "pwet")); qDebug() << flow_.collectAnswers(0); EXPECT_EQ(flow_.collectAnswers(0), "Category: I can't receive mail\n\r - What happened?\n\rpwet\n\r"); EXPECT_EQ(flow_.collectAnswers(1), ""); flow_.clearAnswers(); EXPECT_EQ(flow_.collectAnswers(0), "Category: I can't receive mail\n\r"); } //**************************************************************************************************************************************************** // //**************************************************************************************************************************************************** TEST_F(BugReportFlowFixture, badVersionFile) { feedTempFile("{" " \"metadata\": {" " \"version\": \"1.0.1\"" " }," " \"data_v1.0.1\": {" " \"categories\": [" " {" " \"id\": 0," " \"name\": \"I can't receive mail\"," " \"questions\": [0]" " }" " ]," " \"questions\": [" " {" " \"id\": 0," " \"text\": \"What happened?\"," " \"tips\": \"Expected behavior\"," " \"type\": 1" " }" " ]" " }" "}"); EXPECT_TRUE(flow_.parse(file_.fileName())); EXPECT_EQ(flow_.categories(), QStringList()); EXPECT_EQ(flow_.questions(), QVariantList()); }