示例#1
0
        public void Query_NullPassed_ArgumentNullExceptionThrown()
        {
            // Arrange
            var sut = this.CreateSut(_factory);

            // Act
            var result = sut.Query(this.ConvertNullToQuery());

            // Assert
            EAssert.IsLeft(result);
            Assert.Equal(typeof(ArgumentNotSet), result.LeftContent().GetType());
        }
示例#2
0
        public void Query_UnExpectedErrorOccurs_ErrorReturned()
        {
            // Arrange
            var sut = this.CreateSut(_factory);

            _connection.Close();

            // Act
            var result = sut.Query(this.ConvertWithPageAndSize(1, QueryConstants.MaxElements));

            // Assert
            EAssert.IsLeft(result);
            Assert.Equal(typeof(UnknownError), result.LeftContent().GetType());
        }
示例#3
0
        public void Query_MultipleElementsInDatabase_AllElementesReturned(int count)
        {
            // Arrange
            this.InitializeStorage(_factory, count);

            var sut = this.CreateSut(_factory);

            // Act
            var res = sut.Query(this.ConvertEmptyToQuery());

            // Assert
            EAssert.IsRight(res);
            var result = res.RightContent();

            Assert.Equal(count, result.Items.Count());
        }
示例#4
0
        public void GetById_ValidId_ValidResult(int count, int id)
        {
            // Arrange
            IEnumerable <TModel> data = this.SampleData.Take(count + 1).ToList();

            this.InitializeStorage(_factory, count);
            TModel queryData = data.ElementAt(id);

            var sut = this.CreateSut(_factory);

            // Act
            var res = sut.Query(this.ConvertToQuery(queryData));

            // Assert
            EAssert.IsRight(res);
        }
示例#5
0
        public void Query_QueryByIDId_NonExistingID(int id)
        {
            // Arrange
            this.InitializeStorage(_factory, 1);

            var sut = this.CreateSut(_factory);

            // Act
            var res = sut.Query(this.ConvertToQuery(id));

            // Assert
            EAssert.IsRight(res);
            var result = res.RightContent();

            Assert.Empty(result.Items);
        }
示例#6
0
        public void Query_ValidId_ValidResult(int count)
        {
            // Arrange
            this.InitializeStorage(_factory, count);
            var sut = this.CreateSut(_factory);

            // Act
            var res = sut.Query(this.ConvertWithPageAndSize(1, QueryConstants.MaxElements));

            // Assert
            EAssert.IsRight(res);
            var result = res.RightContent();

            Assert.Equal(count, result.Total);
            Assert.Equal(count, result.Items.Count());
        }
示例#7
0
        public void Insert_UnexpectedErrorOccur_ErrorReturned()
        {
            // Arrange
            IEnumerable <TModel> data = this.SampleData.Take(2).ToList();

            this.InitializeStorage(_factory, 1);
            TModel newObj = data.ElementAt(0);

            IDatabaseCommandRepository <TId, TInput, TUpdate> repo = this.CreateSut(_factory);

            // Act
            var res = repo.Insert(this.ConvertToInvalidInput(newObj));

            // Assert
            EAssert.IsLeft(res);
        }
示例#8
0
        public void Insert_ObjectAdded_IdBecomesPositiveAfterSave(int count)
        {
            // Arrange
            IEnumerable <TModel> data = this.SampleData.Take(count + 1).ToList();

            this.InitializeStorage(_factory, count);
            TModel newObj = data.ElementAt(count);

            IDatabaseCommandRepository <TId, TInput, TUpdate> repo = this.CreateSut(_factory);

            // Act
            var insertedId = repo.Insert(this.ConvertToInput(newObj));

            // Assert
            EAssert.IsRight(insertedId);
            Assert.True(this.GetId(insertedId) > 0);
        }
示例#9
0
        public void Update_UnExistingObjectUpdate_ErrorReturned()
        {
            // Arrange
            IEnumerable <TModel> data = this.SampleData.Take(4).ToList();

            this.InitializeStorage(_factory, 0);
            TModel updateObject = data.ElementAt(3);

            IDatabaseCommandRepository <TId, TInput, TUpdate> repo = this.CreateSut(_factory);

            // Act
            var result = repo.Update(this.GetUnExistingId(), this.ConvertToUpdate(updateObject));

            // Assert
            EAssert.IsLeft(result);
            Assert.Equal(typeof(RecordNotFound), result.LeftContent().GetType());
        }
示例#10
0
        public void Delete_InsertThenDelete_DeleteWasSuccessfulExecutedReturnedTrue(int initialCount)
        {
            // Arrange
            IEnumerable <TModel> data = this.SampleData.Take(initialCount + 1).ToList();

            this.InitializeStorage(_factory, initialCount);
            TModel newObj = data.ElementAt(initialCount);

            IDatabaseCommandRepository <TId, TInput, TUpdate> repo = this.CreateSut(_factory);
            var insertedRecordId = repo.Insert(this.ConvertToInput(newObj));

            // Act
            var result = repo.Delete(insertedRecordId.RightContent());

            // Assert
            EAssert.IsRight(result);
            Assert.True(result.RightContent());
        }
示例#11
0
        public void Update_InvalidUpdateObject_ArgumentNotSetErrorReturned()
        {
            // Arrange
            IEnumerable <TModel> data = this.SampleData.Take(2).ToList();

            this.InitializeStorage(_factory, 0);
            TModel insertObject = data.ElementAt(1);
            TModel updateObject = data.ElementAt(1);

            IDatabaseCommandRepository <TId, TInput, TUpdate> repo = this.CreateSut(_factory);
            var insertedRecordId = repo.Insert(this.ConvertToInput(insertObject));

            // Act
            var result = repo.Update(insertedRecordId.RightContent(), this.ConvertToInvalidUpdate(updateObject));

            // Assert
            EAssert.IsLeft(result);
            Assert.Equal(typeof(ArgumentNotSet), result.LeftContent().GetType());
        }
示例#12
0
        public void Update_ExistingObjectModified_UpdateDoneSuccessfullTrueReturned(int storageCount, int targetIndex)
        {
            // Arrange
            IEnumerable <TModel> data = this.SampleData.Take(storageCount + 1).ToList();

            this.InitializeStorage(_factory, storageCount);
            TModel insertObject = data.ElementAt(storageCount);
            TModel updateObject = data.ElementAt(targetIndex + 1);

            IDatabaseCommandRepository <TId, TInput, TUpdate> repo = this.CreateSut(_factory);
            var insertedRecordId = repo.Insert(this.ConvertToInput(insertObject));

            // Act
            var result = repo.Update(insertedRecordId.RightContent(), this.ConvertToUpdate(updateObject));

            // Assert
            EAssert.IsRight(result);
            Assert.True(result.RightContent());
        }
示例#13
0
        public void Delete_DeleteAlreadyDeletedRecord_RecordIsNotDeletedFalseReturned()
        {
            // Arrange
            IEnumerable <TModel> data = this.SampleData.Take(1).ToList();

            this.InitializeStorage(_factory, 0);
            TModel newObj = data.ElementAt(0);

            IDatabaseCommandRepository <TId, TInput, TUpdate> repo = this.CreateSut(_factory);
            var insertedRecordId = repo.Insert(this.ConvertToInput(newObj));

            repo.Delete(insertedRecordId.RightContent());

            // Act
            var result = repo.Delete(insertedRecordId.RightContent());

            // Assert
            EAssert.IsLeft(result);
            Assert.Equal(typeof(RecordNotFound), result.LeftContent().GetType());
        }
示例#14
0
        public void Delete_UnExpectedErrorOccurs_ErrorReturned()
        {
            // Arrange
            IEnumerable <TModel> data = this.SampleData.Take(2).ToList();

            this.InitializeStorage(_factory, 0);
            TModel insertObject = data.ElementAt(1);

            IDatabaseCommandRepository <TId, TInput, TUpdate> repo = this.CreateSut(_factory);
            var insertedRecordId = repo.Insert(this.ConvertToInput(insertObject));

            // this should make update to throw unexpected error
            _connection.Close();

            // Act
            var result = repo.Delete(insertedRecordId.RightContent());

            // Assert
            EAssert.IsLeft(result);
            Assert.Equal(typeof(UnknownError), result.LeftContent().GetType());
        }
示例#15
0
        public void Query_QueryByIDId_ValidId()
        {
            // Arrange
            const int            validId = 1;
            IEnumerable <TModel> data    = this.SampleData.Take(1).ToList();

            this.InitializeStorage(_factory, 1);
            TModel queryData = data.ElementAt(0);

            var sut = this.CreateSut(_factory);

            // Act
            var res = sut.Query(this.ConvertToQuery(queryData));

            // Assert
            EAssert.IsRight(res);
            var result = res.RightContent();

            Assert.Single(result.Items);
            var item = result.Items.FirstOrDefault();

            Assert.Equal(validId, this.GetId(item));
        }