public void AddRange_TwoValidStateProvinces_CountIncreasedByTwo()
        {
Start:
            var notExistsStateProvinceCode1 = PreDefinedData.GetNotExistsStateProvinceCode();
            var notExistsStateProvinceCode2 = PreDefinedData.GetNotExistsStateProvinceCode();

            if (notExistsStateProvinceCode1 == notExistsStateProvinceCode2)
            {
                goto Start;
            }

            var newStateProvinces = new Collection <ReferenceStateProvince>
            {
                new ReferenceStateProvince {
                    CountryId = 1, Code = notExistsStateProvinceCode1, LongName = ""
                },
                new ReferenceStateProvince {
                    CountryId = 1, Code = notExistsStateProvinceCode2, LongName = ""
                }
            };

            UnitOfWork.ReferenceStateProvinces.AddRange(newStateProvinces);
            UnitOfWork.Complete();

            var result = UnitOfWork.ReferenceStateProvinces.GetAll();

            Assert.That(result.Count, Is.EqualTo(PreDefinedData.ReferenceStateProvinces.Length + newStateProvinces.Count));
        }
        public void AddRange_TwoValidStateProvincesDuplicated_ThrowsInvalidOperationException()
        {
            var notExistsStateProvinceCode = PreDefinedData.GetNotExistsStateProvinceCode();
            var newStateProvinces          = new Collection <ReferenceStateProvince>
            {
                new ReferenceStateProvince {
                    Id = int.MaxValue, CountryId = 1, Code = notExistsStateProvinceCode, LongName = ""
                },
                new ReferenceStateProvince {
                    Id = int.MaxValue, CountryId = 1, Code = notExistsStateProvinceCode, LongName = ""
                }
            };

            Assert.That(() => UnitOfWork.ReferenceStateProvinces.AddRange(newStateProvinces),
                        Throws.InvalidOperationException);
        }
        public void Add_ValidStateProvinceNotExists_FetchNewStateProvince()
        {
            var notExistsStateProvinceCode = PreDefinedData.GetNotExistsStateProvinceCode();
            var newReferenceStateProvince  = new ReferenceStateProvince
            {
                CountryId = 1,
                Code      = notExistsStateProvinceCode,
                LongName  = notExistsStateProvinceCode
            };

            UnitOfWork.ReferenceStateProvinces.Add(newReferenceStateProvince);
            UnitOfWork.Complete();

            var result = UnitOfWork.ReferenceStateProvinces.Get(newReferenceStateProvince.Id);

            Assert.That(result, Is.Not.Null);

            AssertHelper.AreObjectsEqual(newReferenceStateProvince, result);
        }
        public async Task Update_InvalidStateProvince_HttpNotFound()
        {
            // Arrange
            var notExistsStateProvinceCode = PreDefinedData.GetNotExistsStateProvinceCode();
            var path = GetRelativePath(nameof(ReferenceStateProvincesController), int.MaxValue.ToString());
            var apiUpdatingStateProvince = new ReferenceStateProvinceDto
            {
                Id          = int.MaxValue,
                CountryCode = "US",
                Code        = notExistsStateProvinceCode,
                LongName    = "Update Test"
            };

            // Act
            var response = await Client.PutAsync(path, new StringContent(
                                                     JsonConvert.SerializeObject(apiUpdatingStateProvince),
                                                     Encoding.UTF8,
                                                     JsonMediaType));

            // Assert
            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
        }
        public async Task Create_ValidPayload_HttpCreatedAndReturnsNewStateProvince()
        {
            // Arrange
            var path = GetRelativePath(nameof(ReferenceStateProvincesController));
            var notExistsStateProvinceCode = PreDefinedData.GetNotExistsStateProvinceCode();
            var newStateProvinceDto        = new ReferenceStateProvinceDto
            {
                CountryCode  = "US",
                Code         = notExistsStateProvinceCode,
                LongName     = "New StateProvince",
                CreatedDate  = DateTime.UtcNow,
                CreatedBy    = CreatedModifiedBy,
                ModifiedDate = DateTime.UtcNow,
                ModifiedBy   = CreatedModifiedBy
            };

            // Act
            var response = await Client.PostAsync(path, new StringContent(
                                                      JsonConvert.SerializeObject(newStateProvinceDto),
                                                      Encoding.UTF8,
                                                      JsonMediaType));

            var responseString = await response.Content.ReadAsStringAsync();

            // Assert
            Assert.DoesNotThrow(
                () => response.EnsureSuccessStatusCode(),
                string.Format(HttpExceptionFormattedMessage, responseString));
            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.Created));

            var apiReturnedObject =
                JsonConvert.DeserializeObject <ReferenceStateProvinceDto>(responseString);

            Assert.That(apiReturnedObject.Id, Is.GreaterThan(0));

            newStateProvinceDto.Id = apiReturnedObject.Id;
            AssertHelper.AreObjectsEqual(apiReturnedObject, newStateProvinceDto);
        }