Exemple #1
0
        public void should_be_able_to_find_pawns_if_sort_parameter_is_supplied()
        {
            // Setup
            var basicPawnContainer = new BlGraphContainer
            {
                BlContainerName      = "BasicPawn",
                StorageContainerName = "BasicPawn",
                Properties           = new List <BlContainerProp>()
            };
            var containerList = new List <BlGraphContainer> {
                basicPawnContainer
            };
            var graphMock = new Mock <IBlGraph>();

            graphMock.Setup(graph => graph.GetStorageContainerNameForPawn(It.IsAny <BasicPawn>())).Returns("BasicPawn");
            graphMock.Setup(graph => graph.CompiledCollections).Returns(containerList);

            var cursor = new StorageCursor <BasicPawn>();
            var storageProviderMock = new Mock <IBlStorageProvider>();

            storageProviderMock
            .Setup(provider => provider.FindInContainer <BasicPawn>(It.IsAny <string>(), null, "Name", "Asc", 200))
            .Returns(cursor).Verifiable();

            var bls = new Bls(storageProviderMock.Object, graphMock.Object);

            bls.RegisterBlPawns(new BasicPawn());

            // Act
            var resultCursor = bls.Find <BasicPawn>(filter: null, sortProperty: p => p.Name);

            // Assert
            Assert.NotNull(resultCursor);
            storageProviderMock.Verify();
        }
Exemple #2
0
        public void should_not_be_able_to_get_pawn_by_id_if_its_not_registered()
        {
            // Setup
            var basicPawn = new BasicPawn {
                Name = "Name"
            };

            var basicPawnContainer = new BlGraphContainer
            {
                BlContainerName = "BasicPawn", StorageContainerName = "BasicPawn"
            };
            var containerList = new List <BlGraphContainer> {
                basicPawnContainer
            };
            var graphMock = new Mock <IBlGraph>();

            graphMock.Setup(graph => graph.CompiledCollections).Returns(containerList);

            var storageProviderMock = new Mock <IBlStorageProvider>();

            storageProviderMock
            .Setup(provider => provider.GetById <BasicPawn>(It.IsAny <string>(), null))
            .Returns(basicPawn);

            var bls = new Bls(storageProviderMock.Object, graphMock.Object);

            // Act & Assert
            Assert.Throws <PawnNotRegisteredError>(() =>
            {
                bls.GetById <BasicPawn>("123");
            });
        }
Exemple #3
0
        public void should_spawn_new_pawn()
        {
            // Setup
            var graphContainer = new BlGraphContainer
            {
                BlContainerName      = "BasicPawn",
                StorageContainerName = "BasicPawn"
            };
            var containerList = new List <BlGraphContainer> {
                graphContainer
            };

            var graphMock = new Mock <IBlGraph>();

            graphMock.Setup(graph => graph.CompiledCollections).Returns(containerList);

            // Act
            Bls bls = new Bls(null, graphMock.Object);

            bls.RegisterBlPawns(new BasicPawn());

            BasicPawn basicPawn = bls.SpawnNew <BasicPawn>();

            // Assert
            Assert.NotNull(basicPawn);
            Assert.Single(bls.ToAddBuffer);
        }
Exemple #4
0
        public void should_remove_in_memory_connection()
        {
            // Setup
            var storedFirm = new LawFirm {
                Name = "LLP"
            };

            storedFirm.SetId("firm_id");

            var storageProviderMock = new Mock <IBlStorageProvider>();

            storageProviderMock
            .Setup(pr => pr.GetById <LawFirm>("law_firm_id", "LawFirm"))
            .Returns(storedFirm);

            var bls = new Bls(storageProviderMock.Object);

            bls.RegisterBlPawns(new LawFirm(), new Lawyer(), new Assistant(), new Matter(), new Client());

            // Act
            LawFirm firm = bls.GetById <LawFirm>("law_firm_id");

            Lawyer lawyer = bls.SpawnNew <Lawyer>();

            lawyer.FirstName = "George";
            firm.Lawyers.Connect(lawyer);

            firm.Lawyers.Disconnect(lawyer);

            // Assert
            Assert.Empty(firm.SystemRef.ToConnect);
        }
Exemple #5
0
        public async Task <Bls> DeleteBl(int blId)
        {
            try
            {
                if (blId == 0)
                {
                    throw new KeyNotFoundException("Bl");
                }

                Bls bls = await this.FindBlByBlId(blId);

                using (var context = this._context)
                {
                    context.Bls.Remove(bls);
                    context.SaveChanges();
                    return(bls);
                }
            }
            catch (KeyNotFoundException key)
            {
                throw new Exception("Um campo necessário para essa ação não foi informado: " + key.Message);
            }
            catch (Exception ex)
            {
                throw new Exception("Houve um erro ao tentar deletar o registro: " + ex.Message);
            }
        }//DELETAR
Exemple #6
0
        public void should_fail_to_persist_if_no_storage_provider_is_set()
        {
            // Setup
            var bls = new Bls(null, null);

            // Act & Assert
            Assert.Throws <NoStorageProviderRegisteredError>(() => { bls.PersistChanges(); });
        }
Exemple #7
0
        public void should_fail_spawning_new_pawn_if_no_pawns_are_registered()
        {
            // Setup
            Bls bls = new Bls(null);

            // Act & Assert
            Assert.Throws <PawnNotRegisteredError>(() =>
            {
                bls.SpawnNew <BasicPawn>();
            });
        }
Exemple #8
0
        public void should_find_related_pawns_in_bls_buffer_with_filter_no_soft_delete()
        {
            // Setup
            var cursor     = new StorageCursor <Lawyer>();
            var storedFirm = new LawFirm {
                Name = "LLP"
            };

            storedFirm.SetId("firm_id");

            var storageProviderMock = new Mock <IBlStorageProvider>();

            storageProviderMock.Setup(pr => pr.GetById <LawFirm>(
                                          "law_firm_id",
                                          "LawFirm"))
            .Returns(storedFirm);

            storageProviderMock
            .Setup(pr => pr.GetByRelation <Lawyer>(It.IsAny <string>(),
                                                   It.IsAny <string>(), It.IsAny <string>(), It.IsAny <BlBinaryExpression>(), null, Sort.Asc, 200))
            .Returns(cursor);


            var bls = new Bls(storageProviderMock.Object);

            bls.RegisterBlPawns(new LawFirm(), new Lawyer(), new Assistant(), new Matter(), new Client());

            // Act
            LawFirm firm = bls.GetById <LawFirm>("law_firm_id");

            Lawyer lawyer = bls.SpawnNew <Lawyer>();

            lawyer.FirstName = "George";
            firm.Lawyers.Connect(lawyer);

            Lawyer lawyer2 = bls.SpawnNew <Lawyer>();

            lawyer2.FirstName = "Mark";
            cursor.BlsInMemoryCursorBuffer.Add(lawyer2);
            firm.Lawyers.Connect(lawyer2);

            Lawyer lawyer3 = bls.SpawnNew <Lawyer>();

            lawyer2.FirstName = "Robert";
            cursor.BlsInMemoryCursorBuffer.Add(lawyer3);
            firm.Lawyers.Connect(lawyer3);

            StorageCursor <Lawyer> cr    = firm.Lawyers.Find(l => l.FirstName == "George");
            List <Lawyer>          pawns = cr.GetAll();

            // Assert
            Assert.NotEmpty(pawns);
            Assert.Equal("George", pawns[0].FirstName);
        }
Exemple #9
0
        public void should_fail_on_find_if_single_filter_property_is_incorrectly_formatted()
        {
            // There is some strange lambda syntax here which people would probably never use but it's
            // still a good idea to guard against these types of error

            // Setup
            var basicPawnContainer = new BlGraphContainer
            {
                BlContainerName = "BasicPawn", StorageContainerName = "BasicPawn"
            };
            var containerList = new List <BlGraphContainer> {
                basicPawnContainer
            };
            var graphMock = new Mock <IBlGraph>();

            graphMock.Setup(graph => graph.GetStorageContainerNameForPawn(It.IsAny <BasicPawn>())).Returns("BasicPawn");
            graphMock.Setup(graph => graph.CompiledCollections).Returns(containerList);

            var cursor = new StorageCursor <BasicPawn>();
            var storageProviderMock = new Mock <IBlStorageProvider>();

            storageProviderMock
            .Setup(provider =>
                   provider.FindInContainer <BasicPawn>(It.IsAny <string>(), It.IsAny <BlBinaryExpression>(), null,
                                                        "Asc", 200))
            .Returns(cursor);
            var bls = new Bls(storageProviderMock.Object, graphMock.Object);

            bls.RegisterBlPawns(new BasicPawn());

            // Act & Assert
            Assert.Throws <IncorrectFilterArgumentStructureError>(() =>
            {
                // ReSharper disable once EqualExpressionComparison
                bls.Find <BasicPawn>(filter: (pawn => "" == ""));
            });
            Assert.Throws <IncorrectFilterArgumentStructureError>(() =>
            {
                bls.Find <BasicPawn>(filter: (pawn => "" == pawn.Name));
            });
            Assert.Throws <IncorrectFilterArgumentStructureError>(() =>
            {
                bls.Find <BasicPawn>(filter: (pawn => string.Empty == ""));
            });
            Assert.Throws <IncorrectFilterArgumentStructureError>(() =>
            {
                bls.Find <BasicPawn>(filter: (pawn => true));
            });
        }
Exemple #10
0
 public async Task <Bls> InsertBl(Bls bls)
 {
     try
     {
         using (var context = this._context)
         {
             context.Bls.Add(bls);
             context.SaveChanges();
             return(bls);
         }
     }
     catch (Exception ex)
     {
         throw new Exception("Houve um erro ao incluir Bl: " + ex.Message);
     }
 }
Exemple #11
0
        public void should_be_able_to_find_pawns_based_on_single_literal_filter()
        {
            // Setup
            var basicPawnContainer = new BlGraphContainer
            {
                BlContainerName      = "BasicPawn",
                StorageContainerName = "BasicPawn",
                Properties           = new List <BlContainerProp>()
            };
            var containerList = new List <BlGraphContainer> {
                basicPawnContainer
            };
            var graphMock = new Mock <IBlGraph>();

            graphMock.Setup(graph => graph.GetStorageContainerNameForPawn(It.IsAny <BasicPawn>())).Returns("BasicPawn");
            graphMock.Setup(graph => graph.CompiledCollections).Returns(containerList);

            var cursor = new StorageCursor <BasicPawn>();
            var storageProviderMock = new Mock <IBlStorageProvider>();

            BlBinaryExpression filterExpression = null;

            storageProviderMock
            .Setup(provider =>
                   provider.FindInContainer <BasicPawn>(It.IsAny <string>(), It.IsAny <BlBinaryExpression>(), null,
                                                        "Asc", 200))
            .Callback <string, BlBinaryExpression, string, string, int>((container, exp, sort, order, batchSize) =>
                                                                        filterExpression = exp)
            .Returns(cursor);
            var bls = new Bls(storageProviderMock.Object, graphMock.Object);

            bls.RegisterBlPawns(new BasicPawn());

            // Act
            var resultCursor = bls.Find <BasicPawn>(filter: (bp) => bp.Name == "some name");

            // Assert
            Assert.NotNull(resultCursor);
            Assert.NotNull(filterExpression);

            Assert.Equal("Name", filterExpression.PropName);
            Assert.Equal(BlOperator.Eq, filterExpression.Operator);
            Assert.Equal("some name", filterExpression.Value);
            Assert.Null(filterExpression.Left);
            Assert.Null(filterExpression.Right);
            Assert.True(filterExpression.IsLeaf);
        }
Exemple #12
0
 public async Task <Bls> UpdateBl(Bls bl)
 {
     try
     {
         if (bl.BlId == 0)
         {
             throw new KeyNotFoundException("BlId");
         }
         this._context.Update(bl);
         this._context.SaveChanges();
         return(bl);
     }
     catch (KeyNotFoundException key)
     {
         throw new Exception("Um campo necessário para essa ação não foi informado: " + key.Message);
     }
     catch (Exception ex)
     {
         throw new Exception("Houve um erro ao tentar editar o registro: " + ex.Message);
     }
 }
Exemple #13
0
        public void should_not_find_pawn_in_bls_buffer_if_it_has_been_disconnected()
        {
            // Setup
            var cursor     = new StorageCursor <Lawyer>();
            var storedFirm = new LawFirm {
                Name = "LLP"
            };

            storedFirm.SetId("firm_id");

            var storageProviderMock = new Mock <IBlStorageProvider>();

            storageProviderMock.Setup(pr => pr.GetById <LawFirm>(
                                          "law_firm_id",
                                          "LawFirm"))
            .Returns(storedFirm);

            storageProviderMock
            .Setup(pr => pr.GetByRelation <Lawyer>(It.IsAny <string>(),
                                                   It.IsAny <string>(), It.IsAny <string>(), null, null, Sort.Asc, 200))
            .Returns(cursor);

            var bls = new Bls(storageProviderMock.Object);

            bls.RegisterBlPawns(new LawFirm(), new Lawyer(), new Assistant(), new Matter(), new Client());

            // Act
            LawFirm firm   = bls.GetById <LawFirm>("law_firm_id");
            Lawyer  lawyer = bls.SpawnNew <Lawyer>();

            lawyer.FirstName = "George";
            firm.Lawyers.Connect(lawyer);
            firm.Lawyers.Disconnect(lawyer);

            StorageCursor <Lawyer> cr    = firm.Lawyers.Find();
            List <Lawyer>          pawns = cr.GetAll();

            // Assert
            Assert.Empty(pawns);
        }
Exemple #14
0
        public void should_be_able_to_get_pawn_by_id()
        {
            // Setup
            var basicPawn = new BasicPawn {
                Name = "Name"
            };

            basicPawn.SetId("123_id");

            var basicPawnContainer = new BlGraphContainer
            {
                BlContainerName      = "BasicPawn",
                StorageContainerName = "BasicPawn",
                Properties           = new List <BlContainerProp>()
            };
            var containerList = new List <BlGraphContainer> {
                basicPawnContainer
            };
            var graphMock = new Mock <IBlGraph>();

            graphMock.Setup(graph => graph.GetStorageContainerNameForPawn(It.IsAny <BasicPawn>())).Returns("BasicPawn");
            graphMock.Setup(graph => graph.CompiledCollections).Returns(containerList);

            var storageProviderMock = new Mock <IBlStorageProvider>();

            storageProviderMock.Setup(provider
                                      => provider.GetById <BasicPawn>(It.IsAny <string>(), It.IsAny <string>())).Returns(basicPawn);
            var bls = new Bls(storageProviderMock.Object, graphMock.Object);

            bls.RegisterBlPawns(new BasicPawn());

            // Act
            var found = bls.GetById <BasicPawn>("123");

            // Assert
            Assert.NotNull(found);
            storageProviderMock.Verify(provider => provider.GetById <BasicPawn>("123", "BasicPawn"), Times.Once());
        }
Exemple #15
0
        public void should_find_related_pawns_in_storage_no_filter_no_soft_delete()
        {
            // Setup
            var cursor     = new StorageCursor <Lawyer>();
            var storedFirm = new LawFirm {
                Name = "LLP"
            };

            // setting the ID so it looks like the object is coming from storage
            storedFirm.SetId("law_firm_id");

            var storageProviderMock = new Mock <IBlStorageProvider>();

            storageProviderMock.Setup(pr => pr.GetByRelation <Lawyer>(
                                          It.IsAny <string>(),
                                          It.IsAny <string>(),
                                          It.IsAny <string>(),
                                          null,
                                          null,
                                          Sort.Asc,
                                          200))
            .Returns(cursor)
            .Verifiable();

            storageProviderMock.Setup(pr => pr.GetById <LawFirm>(
                                          "law_firm_id",
                                          "LawFirm"))
            .Returns(storedFirm);


            var bls = new Bls(storageProviderMock.Object);

            bls.RegisterBlPawns(new LawFirm(), new Lawyer(), new Assistant(), new Matter(), new Client());

            // Act
            LawFirm firm   = bls.GetById <LawFirm>("law_firm_id");
            Lawyer  lawyer = bls.SpawnNew <Lawyer>();

            lawyer.FirstName = "George";
            firm.Lawyers.Connect(lawyer);

            var existingLawyerInStorage = new Lawyer();

            existingLawyerInStorage.SetId("lawyer_id");
            existingLawyerInStorage.FirstName = "Peter";
            var traceableLawyer = existingLawyerInStorage.AsTrackable();

            cursor.StorageObjectBuffer.Add(traceableLawyer);
            bls.ToUpdate.Add(traceableLawyer);

            StorageCursor <Lawyer> cr = firm.Lawyers.Find();

            storageProviderMock.Verify();

            List <Lawyer> pawns = cr.GetAll();

            // Assert
            Assert.NotEmpty(pawns);
            Assert.Equal("George", pawns[0].FirstName);
            Assert.Equal("Peter", pawns[1].FirstName);
        }
Exemple #16
0
 public async Task <ActionResult <Bls> > UpdateBl([FromServices] BlServico blServico, Bls Bl)
 {
     try
     {
         return(Ok(await blServico.UpdateBl(Bl)));
     }
     catch (Exception ex)
     {
         return(UnprocessableEntity(ex.Message));
     }
 }