Skip to content

Commit

Permalink
Fixes ads received this month not visually incremented after viewing …
Browse files Browse the repository at this point in the history
…an ad
  • Loading branch information
tmancey committed Nov 30, 2020
1 parent d650c2d commit 1f856f0
Show file tree
Hide file tree
Showing 6 changed files with 159 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,36 @@ uint64_t AdRewards::GetAdsReceivedThisMonth() const {

uint64_t AdRewards::GetAdsReceivedForMonth(
const base::Time& time) const {
const PaymentInfo payment = payments_->GetForThisMonth(time);
return payment.transaction_count;
const TransactionList transactions =
ConfirmationsState::Get()->get_transactions();

uint64_t ads_received_this_month = 0;

base::Time::Exploded exploded;
time.LocalExplode(&exploded);

for (const auto& transaction : transactions) {
if (transaction.timestamp == 0) {
// Workaround for Windows crash when passing 0 to UTCExplode
continue;
}

const base::Time transaction_time =
base::Time::FromDoubleT(transaction.timestamp);

base::Time::Exploded transaction_time_exploded;
transaction_time.LocalExplode(&transaction_time_exploded);

if (transaction_time_exploded.year == exploded.year &&
transaction_time_exploded.month == exploded.month &&
transaction.estimated_redemption_value > 0.0 &&
ConfirmationType(transaction.confirmation_type) ==
ConfirmationType::kViewed) {
ads_received_this_month++;
}
}

return ads_received_this_month;
}

double AdRewards::GetEarningsForThisMonth() const {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

#include "bat/ads/internal/account/statement/statement.h"

#include "base/time/time.h"
#include "bat/ads/internal/account/ad_rewards/ad_rewards.h"
#include "bat/ads/internal/account/transactions/transactions.h"
#include "bat/ads/statement_info.h"
Expand All @@ -32,7 +31,7 @@ StatementInfo Statement::Get(

statement.next_payment_date = ad_rewards_->GetNextPaymentDate();

statement.ads_received_this_month = ad_rewards_->GetAdsReceivedThisMonth();
statement.ads_received_this_month = GetAdsReceivedThisMonth();

statement.earnings_this_month = GetEarningsForThisMonth();

Expand All @@ -46,6 +45,8 @@ StatementInfo Statement::Get(
return statement;
}

///////////////////////////////////////////////////////////////////////////////

double Statement::GetEarningsForThisMonth() const {
return ad_rewards_->GetEarningsForThisMonth();
}
Expand All @@ -68,4 +69,9 @@ double Statement::GetEarningsForLastMonth() const {
return ad_rewards_->GetEarningsForMonth(last_month);
}

uint64_t Statement::GetAdsReceivedThisMonth() const {
const base::Time now = base::Time::Now();
return transactions::GetCountForMonth(now);
}

} // namespace ads
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

#include <stdint.h>

#include "base/time/time.h"

namespace ads {

class AdRewards;
Expand All @@ -28,6 +30,8 @@ class Statement {
double GetEarningsForThisMonth() const;
double GetEarningsForLastMonth() const;

uint64_t GetAdsReceivedThisMonth() const;

AdRewards* ad_rewards_; // NOT OWNED
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
#include "net/http/http_status_code.h"
#include "bat/ads/internal/account/ad_rewards/ad_rewards.h"
#include "bat/ads/internal/account/ad_rewards/ad_rewards_delegate_mock.h"
#include "bat/ads/internal/account/transactions/transactions.h"
#include "bat/ads/internal/account/wallet/wallet.h"
#include "bat/ads/internal/account/wallet/wallet_info.h"
#include "bat/ads/internal/unittest_base.h"
#include "bat/ads/internal/unittest_util.h"

Expand Down Expand Up @@ -45,6 +45,16 @@ class BatAdsStatementTest : public UnitTestBase {
return wallet.Get();
}

void AddTransactions(
const int count) {
for (int i = 0; i < count; i++) {
ConfirmationInfo confirmation;
confirmation.type = ConfirmationType::kViewed;

transactions::Add(0.05, confirmation);
}
}

std::unique_ptr<AdRewards> ad_rewards_;
std::unique_ptr<AdRewardsDelegateMock> ad_rewards_delegate_mock_;
std::unique_ptr<Statement> statement_;
Expand Down Expand Up @@ -94,7 +104,8 @@ TEST_F(BatAdsStatementTest,
const WalletInfo wallet = GetWallet();
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("18 November 2020"));
AddTransactions(7);

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -107,8 +118,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 7;
expected_statement.earnings_this_month = 0.35;
expected_statement.earnings_last_month = 0.0;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -140,7 +152,7 @@ TEST_F(BatAdsStatementTest,
const WalletInfo wallet = GetWallet();
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("18 November 2020"));

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -153,8 +165,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 0;
expected_statement.earnings_this_month = 0.0;
expected_statement.earnings_last_month = 0.0;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -186,7 +199,7 @@ TEST_F(BatAdsStatementTest,
const WalletInfo wallet = GetWallet();
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("18 November 2020"));

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -199,8 +212,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 0;
expected_statement.earnings_this_month = 0.0;
expected_statement.earnings_last_month = 0.0;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -249,7 +263,8 @@ TEST_F(BatAdsStatementTest,
const WalletInfo wallet = GetWallet();
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("18 November 2020"));
AddTransactions(7);

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -262,8 +277,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 7;
expected_statement.earnings_this_month = 0.35;
expected_statement.earnings_last_month = 0.0;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -312,7 +328,8 @@ TEST_F(BatAdsStatementTest,
const WalletInfo wallet = GetWallet();
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("18 November 2020"));
AddTransactions(7);

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -325,8 +342,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 7;
expected_statement.earnings_this_month = 0.35;
expected_statement.earnings_last_month = 0.0;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -380,7 +398,10 @@ TEST_F(BatAdsStatementTest,
const WalletInfo wallet = GetWallet();
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("31 October 2020"));
AddTransactions(14);
AdvanceClock(TimeFromDateString("18 November 2020"));
AddTransactions(7);

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -393,8 +414,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 7;
expected_statement.earnings_this_month = 0.35;
expected_statement.earnings_last_month = 0.7;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -448,7 +470,10 @@ TEST_F(BatAdsStatementTest,
const WalletInfo wallet = GetWallet();
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("25 December 2019"));
AddTransactions(14);
AdvanceClock(TimeFromDateString("1 January 2020"));
AddTransactions(7);

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -461,8 +486,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 7;
expected_statement.earnings_this_month = 0.35;
expected_statement.earnings_last_month = 0.7;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -521,7 +547,12 @@ TEST_F(BatAdsStatementTest,
const WalletInfo wallet = GetWallet();
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("12 September 2020"));
AddTransactions(9);
AdvanceClock(TimeFromDateString("31 October 2020"));
AddTransactions(14);
AdvanceClock(TimeFromDateString("18 November 2020"));
AddTransactions(7);

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -534,8 +565,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 7;
expected_statement.earnings_this_month = 0.35;
expected_statement.earnings_last_month = 0.7;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -600,7 +632,12 @@ TEST_F(BatAdsStatementTest,
const WalletInfo wallet = GetWallet();
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("12 September 2020"));
AddTransactions(9);
AdvanceClock(TimeFromDateString("31 October 2020"));
AddTransactions(14);
AdvanceClock(TimeFromDateString("18 November 2020"));
AddTransactions(7);

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -613,8 +650,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 7;
expected_statement.earnings_this_month = 0.35;
expected_statement.earnings_last_month = 0.7;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -672,7 +710,10 @@ TEST_F(BatAdsStatementTest,
ad_rewards_->MaybeReconcile(wallet);
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("31 October 2020"));
AddTransactions(35);
AdvanceClock(TimeFromDateString("18 November 2020"));
AddTransactions(7);

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -685,8 +726,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 7;
expected_statement.earnings_this_month = 0.35;
expected_statement.earnings_last_month = 1.75;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down Expand Up @@ -766,7 +808,10 @@ TEST_F(BatAdsStatementTest,
ad_rewards_->MaybeReconcile(wallet);
ad_rewards_->MaybeReconcile(wallet);

AdvanceClock(TimeFromDateString("11 November 2020"));
AdvanceClock(TimeFromDateString("31 October 2020"));
AddTransactions(35);
AdvanceClock(TimeFromDateString("18 November 2020"));
AddTransactions(7);

// Act
const StatementInfo statement = statement_->Get(DistantPast(), Now());
Expand All @@ -779,8 +824,9 @@ TEST_F(BatAdsStatementTest,
expected_statement.ads_received_this_month = 7;
expected_statement.earnings_this_month = 0.35;
expected_statement.earnings_last_month = 1.75;
expected_statement.transactions = {};
expected_statement.uncleared_transactions = {};
expected_statement.transactions =
transactions::GetCleared(DistantPast(), Now());
expected_statement.uncleared_transactions = transactions::GetUncleared();

EXPECT_EQ(expected_statement, statement);
}
Expand Down
Loading

0 comments on commit 1f856f0

Please sign in to comment.