Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }