Beispiel #1
0
        public void LinqFirstOrDefault_NoSuchRecord(bool async)
        {
            var randomStr = ConstantReturningHelper.FromObj(Randomm.RandomAlphaNum(10));

            TestCluster.PrimeFluent(
                b => b.WhenQuery(
                    "SELECT \"director\", \"list\", \"mainGuy\", \"movie_maker\", \"unique_movie_title\", \"yearMade\" " +
                    $"FROM \"{Movie.TableName}\" WHERE \"director\" = ? LIMIT ? ALLOW FILTERING",
                    rows => rows.WithParams("non_existant_" + randomStr.Get(), 1))
                .ThenRowsSuccess(Movie.GetColumns()));

            var firstQuery = _movieTable.FirstOrDefault(m => m.Director == "non_existant_" + randomStr.Get());
            var first      = async ? firstQuery.ExecuteAsync().Result : firstQuery.Execute();

            Assert.IsNull(first);
        }
Beispiel #2
0
        public void DeleteIf_NotAllKeysRestricted_PartitionKeyOmitted()
        {
            var random = ConstantReturningHelper.FromObj(Guid.NewGuid());
            var table  = new Table <AllDataTypesEntity>(Session, new MappingConfiguration());
            AllDataTypesEntity entityToDelete = _entityList[0];

            TestCluster.PrimeFluent(
                b => b.WhenQuery($"DELETE FROM \"{AllDataTypesEntity.TableName}\" WHERE \"guid_type\" = ? IF \"int_type\" = ?",
                                 when => when.WithParams(random.Get(), entityToDelete.IntType))
                .ThenServerError(ServerError.Invalid, "msg"));

            // Test
            var selectQuery   = table.Select(m => m).Where(m => m.GuidType == random.Get());
            var deleteIfQuery = selectQuery.DeleteIf(m => m.IntType == entityToDelete.IntType);

            Assert.Throws <InvalidQueryException>(() => deleteIfQuery.Execute());
        }
Beispiel #3
0
        public void DeleteIf_ConditionFails()
        {
            var   random      = ConstantReturningHelper.FromObj(Randomm.RandomAlphaNum(16));
            var   table       = new Table <Movie>(Session, new MappingConfiguration());
            Movie actualMovie = Movie.GetRandomMovie();

            TestCluster.PrimeFluent(
                b => b.WhenQuery(
                    $"DELETE FROM \"{Movie.TableName}\" WHERE \"unique_movie_title\" = ? AND \"movie_maker\" = ? AND \"director\" = ? IF \"mainGuy\" = ?",
                    when => when.WithParams(actualMovie.Title, actualMovie.MovieMaker, actualMovie.Director, random.Get()))
                .ThenRowsSuccess(actualMovie.CreateAppliedInfoRowsResult()));

            var deleteIfStatement = table
                                    .Where(m => m.Title == actualMovie.Title && m.MovieMaker == actualMovie.MovieMaker && m.Director == actualMovie.Director)
                                    .DeleteIf(m => m.MainActor == random.Get());

            var appliedInfo = deleteIfStatement.Execute();

            Assert.False(appliedInfo.Applied);
            Assert.NotNull(appliedInfo.Existing);
            Assert.AreEqual(actualMovie.MainActor, appliedInfo.Existing.MainActor);
        }
Beispiel #4
0
        public void DeleteIf_NoMatchingRecord()
        {
            var random     = ConstantReturningHelper.FromObj(Randomm.RandomAlphaNum(10));
            var randomGuid = ConstantReturningHelper.FromObj(Guid.NewGuid());
            var table      = new Table <AllDataTypesEntity>(Session, new MappingConfiguration());
            AllDataTypesEntity entityToDelete = _entityList[0];

            TestCluster.PrimeFluent(
                b => b.WhenQuery($"DELETE FROM \"{AllDataTypesEntity.TableName}\" WHERE \"string_type\" = ? AND \"guid_type\" = ? IF \"int_type\" = ?",
                                 when => when.WithParams(entityToDelete.StringType + random.Get(), randomGuid.Get(), entityToDelete.IntType))
                .ThenRowsSuccess(new [] { "[applied]" }, rows => rows.WithRow(false)));

            // Test
            var selectQuery = table.Select(m => m)
                              .Where(m => m.StringType == entityToDelete.StringType + random.Get() &&
                                     m.GuidType == randomGuid.Get());
            var deleteIfQuery = selectQuery.DeleteIf(m => m.IntType == entityToDelete.IntType);

            var appliedInfo = deleteIfQuery.Execute();

            Assert.False(appliedInfo.Applied);
            Assert.IsNull(appliedInfo.Existing);
        }