public async Task SavePublisherUpdateSuccess_Test()
        {
            Publishers publisher1 = new Publishers()
            {
                Id      = 1,
                Name    = "abc",
                Address = "123",
                Phone   = "123456789",
                Email   = "*****@*****.**"
            };

            _dbContext.Set <Publishers>().Add(publisher1);

            PublisherViewModel model = new PublisherViewModel()
            {
                Id      = 1,
                Name    = "abc123",
                Address = "123",
                Phone   = "123456789",
                Email   = "*****@*****.**"
            };

            await _dbContext.SaveChangesAsync();

            var efRepository         = new EfRepository <Publishers>(_dbContext);
            var savePublisherCommand = new SavePublisherCommand(efRepository);
            var result = await savePublisherCommand.ExecuteAsync(model);

            var getListPublisher = new GetListPublisherQuery(efRepository);
            var Publisher        = (await getListPublisher.ExecuteAsync()).FirstOrDefault();

            Assert.Equal(result.Data, model.Id);
            Assert.Equal(model.Name, Publisher.Name);
        }
        public async Task SavePublisherInsertSuccess_Test()
        {
            PublisherViewModel model = new PublisherViewModel()
            {
                Id      = 0,
                Name    = "abc",
                Address = "123",
                Phone   = "123456789",
                Email   = "*****@*****.**",
                Enabled = true
            };

            var efRepository         = new EfRepository <Publishers>(_dbContext);
            var savePublisherCommand = new SavePublisherCommand(efRepository);
            var result = await savePublisherCommand.ExecuteAsync(model);

            var getListPublisher = new GetListPublisherQuery(efRepository);
            var publisher        = (await getListPublisher.ExecuteAsync()).FirstOrDefault();

            Assert.Equal(result.Data, model.Id);
            Assert.Equal(model.Name, publisher.Name);
            Assert.Equal(model.Address, publisher.Address);
            Assert.Equal(model.Phone, publisher.Phone);
            Assert.Equal(model.Email, publisher.Email);
            Assert.Equal(model.Enabled, publisher.Enabled);
        }
        public async Task SavePublisherUpdateFail_Test()
        {
            PublisherViewModel publisher = new PublisherViewModel()
            {
                Id      = 1,
                Name    = "abc",
                Address = "123",
                Phone   = "123456789",
                Email   = "*****@*****.**"
            };

            var efRepository         = new EfRepository <Publishers>(_dbContext);
            var savePublisherCommand = new SavePublisherCommand(efRepository);

            var result = await savePublisherCommand.ExecuteAsync(publisher);

            Assert.Equal((int)HttpStatusCode.NotFound, result.GetFirstErrorCode());
        }
        public async Task SavePublisherNull_Test()
        {
            PublisherViewModel publisher1 = null;

            PublisherViewModel publisher2 = new PublisherViewModel()
            {
                Id      = 0,
                Name    = "",
                Address = "123",
                Phone   = "123456789",
                Email   = "*****@*****.**",
                Enabled = true
            };

            var efRepository         = new EfRepository <Publishers>(_dbContext);
            var savePublisherCommand = new SavePublisherCommand(efRepository);

            var result1 = await savePublisherCommand.ExecuteAsync(publisher1);

            var result2 = await savePublisherCommand.ExecuteAsync(publisher2);

            Assert.Equal((int)HttpStatusCode.NotAcceptable, result1.GetFirstErrorCode());
            Assert.Equal((int)HttpStatusCode.NotAcceptable, result2.GetFirstErrorCode());
        }