public void UpsertTagCommandHandler_EmptyDbUpsertList_ListSaved()
        {
            //given
            var tags = new[]
            {
                new Tag {
                    Name = "test1"
                },
                new Tag {
                    Name = "test2"
                }
            };

            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertTagsCommandHandler(repository);
            var command    = new UpsertTagsCommand(tags);

            //when
            handler.Execute(command);

            //then
            var orderedTagsInDatabase = repository.Database.Query <Tag>().OrderBy(x => x.Id);

            Assert.Equal(tags.OrderBy(x => x.Id), orderedTagsInDatabase);
        }
        public void UpsertTagCommandHandler_NullEmptyDb_EmptyDb()
        {
            //given
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertTagsCommandHandler(repository);
            var command    = new UpsertTagsCommand(null);

            //when
            handler.Execute(command);

            //then
            Assert.Empty(repository.Database.Query <Tag>());
        }
        public void UpsertTagCommandHandler_NotEmptyDbUpsertList_ListUpdated()
        {
            //given
            var tags = new[]
            {
                new Tag {
                    Name = "test1"
                },
                new Tag {
                    Name = "test2"
                }
            };

            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertTagsCommandHandler(repository);
            var command    = new UpsertTagsCommand(tags);

            repository.Database.UpsertBulk(tags);
            foreach (var tag in tags)
            {
                tag.Name += " - updated";
            }

            //when
            handler.Execute(command);

            //then
            var orderedTagsInDatabase = repository.Database.Query <Tag>().OrderBy(x => x.Id).ToArray();

            tags = tags.OrderBy(x => x.Id).ToArray();
            Assert.Equal(tags, orderedTagsInDatabase);
            for (int i = 0; i < tags.Length; i++)
            {
                Assert.Equal(tags[i].Name, orderedTagsInDatabase[i].Name);
            }
        }