public async Task ServiceTest_CheckAddOne_ExpectOk() { var date = DateTime.Now; var newShow = new ShowModel { id = 1, name = "test", updated = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }; var factory = SetupUpsertShowRepository(null); _showRepository.Setup(s => s.Add(It.IsAny <IEnumerable <Show> >())).Callback <IEnumerable <Show> >(u => { Assert.AreEqual(1, u.Count()); Assert.AreEqual(newShow.name, u.First().Name); Assert.AreEqual(newShow.id, u.First().ExternalId); Assert.AreEqual(newShow.updated, u.First().Updated); }).Returns(Task.FromResult(true)); var service = new ShowsService(factory, SetupTvMazeServer(new Dictionary <string, int> { { "1", (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() } }, new[] { newShow })); await service.Sync(); _showRepository.Verify(s => s.GetAll(), Times.Once); _showRepository.Verify(s => s.Add(It.IsAny <IEnumerable <Show> >()), Times.Once); _showRepository.Verify(s => s.Update(It.IsAny <IEnumerable <Show> >()), Times.Never); _showRepository.Verify(s => s.Remove(It.IsAny <IEnumerable <Show> >()), Times.Never); }
public async Task ServiceTest_CheckUpsertLastUpdatedExistDeleteOthers_ExpectOk() { var existShows = new[] { new Show { ExternalId = 1, Name = "OldName", Updated = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, new Show { ExternalId = 2, Name = "OldName", Updated = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, new Show { ExternalId = 4, Name = "OldName", Updated = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() } }; var service = new ShowsService(SetupUpsertShowRepository(existShows), SetupTvMazeServer(new Dictionary <string, int> { { "1", (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() } })); await service.Sync(); _showRepository.Setup(s => s.Remove(It.IsAny <IEnumerable <Show> >())).Callback <IEnumerable <Show> >(elements => { Assert.AreEqual(existShows.Length, elements.Count()); foreach (var s in existShows.Where(s => s.ExternalId != 1)) { Assert.AreEqual(1, elements.Count(u => u.Id == s.Id)); } }).Returns(Task.FromResult(true)); _showRepository.Verify(s => s.Add(It.IsAny <IEnumerable <Show> >()), Times.Never); _showRepository.Verify(s => s.Update(It.IsAny <IEnumerable <Show> >()), Times.Never); _showRepository.Verify(s => s.Remove(It.IsAny <IEnumerable <Show> >()), Times.Once); }
public async Task ServiceTest_CheckUpdateMany_ExpectOk() { var newShows = new[] { new ShowModel { id = 1, name = "test", updated = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, new ShowModel { id = 2, name = "test2", updated = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, new ShowModel { id = 3, name = "test3", updated = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, new ShowModel { id = 4, name = "test4", updated = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, }; var newShowsUpdates = new Dictionary <string, int> { { "1", (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, { "2", (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, { "3", (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() }, { "4", (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() } }; var factory = SetupUpsertShowRepository( new[] { new Show { ExternalId = 1, Name = "OldName", Updated = (int)DateTimeOffset.Now.AddDays(-1).ToUnixTimeSeconds() }, new Show { ExternalId = 2, Name = "OldName", Updated = (int)DateTimeOffset.Now.AddDays(-1).ToUnixTimeSeconds() }, new Show { ExternalId = 3, Name = "OldName", Updated = (int)DateTimeOffset.Now.AddDays(-1).ToUnixTimeSeconds() }, new Show { ExternalId = 4, Name = "OldName", Updated = (int)DateTimeOffset.Now.AddDays(-1).ToUnixTimeSeconds() } }); _showRepository.Setup(s => s.Update(It.IsAny <IEnumerable <Show> >())).Callback <IEnumerable <Show> >(elements => { Assert.AreEqual(newShows.Length, elements.Count()); foreach (var s in newShows) { Assert.AreEqual(s.name, elements.First(u => u.ExternalId == s.id).Name); Assert.AreEqual(s.updated, elements.First(u => u.ExternalId == s.id).Updated); } }).Returns(Task.FromResult(true)); var service = new ShowsService(factory, SetupTvMazeServer(newShowsUpdates, newShows)); await service.Sync(); _showRepository.Verify(s => s.GetAll(), Times.Once); _showRepository.Verify(s => s.Add(It.IsAny <IEnumerable <Show> >()), Times.Never); _showRepository.Verify(s => s.Update(It.IsAny <IEnumerable <Show> >()), Times.Once); _showRepository.Verify(s => s.Remove(It.IsAny <IEnumerable <Show> >()), Times.Never); }
public async Task ServiceTest_CheckUpsertNull_ExpectOk() { var service = new ShowsService(SetupUpsertShowRepository(null), SetupTvMazeServer(null)); await service.Sync(); _showRepository.Verify(s => s.GetAll(), Times.Never); _showRepository.Verify(s => s.Add(It.IsAny <IEnumerable <Show> >()), Times.Never); _showRepository.Verify(s => s.Update(It.IsAny <IEnumerable <Show> >()), Times.Never); _showRepository.Verify(s => s.Remove(It.IsAny <IEnumerable <Show> >()), Times.Never); }
public async Task ServiceTest_CheckUpsertLastUpdatedExist_ExpectOk() { var service = new ShowsService(SetupUpsertShowRepository(new [] { new Show { ExternalId = 1, Updated = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() } }), SetupTvMazeServer(new Dictionary <string, int> { { "1", (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds() } })); await service.Sync(); _showRepository.Verify(s => s.Add(It.IsAny <IEnumerable <Show> >()), Times.Never); _showRepository.Verify(s => s.Update(It.IsAny <IEnumerable <Show> >()), Times.Never); _showRepository.Verify(s => s.Remove(It.IsAny <IEnumerable <Show> >()), Times.Never); }