From 537270cceb563f11910806395b05a7b9a12a87d1 Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Sun, 14 Feb 2021 01:29:06 -0500 Subject: [PATCH] implement Delete TwitterUser by Id + tests --- .../TwitterUserPostgresDal.cs | 16 ++++++++++- .../Contracts/ITwitterUserDal.cs | 1 + .../TwitterUserPostgresDalTests.cs | 27 ++++++++++++++++++- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/TwitterUserPostgresDal.cs b/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/TwitterUserPostgresDal.cs index 714eb8f..855df5e 100644 --- a/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/TwitterUserPostgresDal.cs +++ b/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/TwitterUserPostgresDal.cs @@ -59,7 +59,7 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers return result; } } - + public async Task GetTwitterUsersCountAsync() { var query = $"SELECT COUNT(*) FROM {_settings.TwitterUserTableName}"; @@ -131,5 +131,19 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers await dbConnection.QueryAsync(query, new { acct }); } } + + public async Task DeleteTwitterUserAsync(int id) + { + if (id == default) throw new ArgumentException("id"); + + var query = $"DELETE FROM {_settings.TwitterUserTableName} WHERE id = @id"; + + using (var dbConnection = Connection) + { + dbConnection.Open(); + + await dbConnection.QueryAsync(query, new { id }); + } + } } } \ No newline at end of file diff --git a/src/DataAccessLayers/BirdsiteLive.DAL/Contracts/ITwitterUserDal.cs b/src/DataAccessLayers/BirdsiteLive.DAL/Contracts/ITwitterUserDal.cs index 4aa9eb6..cfa422a 100644 --- a/src/DataAccessLayers/BirdsiteLive.DAL/Contracts/ITwitterUserDal.cs +++ b/src/DataAccessLayers/BirdsiteLive.DAL/Contracts/ITwitterUserDal.cs @@ -13,6 +13,7 @@ namespace BirdsiteLive.DAL.Contracts Task GetAllTwitterUsersAsync(); Task UpdateTwitterUserAsync(int id, long lastTweetPostedId, long lastTweetSynchronizedForAllFollowersId, DateTime lastSync); Task DeleteTwitterUserAsync(string acct); + Task DeleteTwitterUserAsync(int id); Task GetTwitterUsersCountAsync(); } } \ No newline at end of file diff --git a/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/TwitterUserPostgresDalTests.cs b/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/TwitterUserPostgresDalTests.cs index b290735..0cf3ca1 100644 --- a/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/TwitterUserPostgresDalTests.cs +++ b/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/TwitterUserPostgresDalTests.cs @@ -128,7 +128,7 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers [TestMethod] public async Task CreateAndDeleteUser() { - var acct = "myid"; + var acct = "myacct"; var lastTweetId = 1548L; var dal = new TwitterUserPostgresDal(_settings); @@ -150,6 +150,31 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers await dal.DeleteTwitterUserAsync(string.Empty); } + [TestMethod] + public async Task CreateAndDeleteUser_byId() + { + var acct = "myacct"; + var lastTweetId = 1548L; + + var dal = new TwitterUserPostgresDal(_settings); + + await dal.CreateTwitterUserAsync(acct, lastTweetId); + var result = await dal.GetTwitterUserAsync(acct); + Assert.IsNotNull(result); + + await dal.DeleteTwitterUserAsync(result.Id); + result = await dal.GetTwitterUserAsync(acct); + Assert.IsNull(result); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public async Task DeleteUser_NotAcct_byId() + { + var dal = new TwitterUserPostgresDal(_settings); + await dal.DeleteTwitterUserAsync(default(int)); + } + [TestMethod] public async Task GetAllTwitterUsers_Top() {