public void Submit_CanUpdateOneCase()
        {
            const int expectedOperationResultsCount = 1;

            //Arrange
            var case1    = EphorteContext.Query <Case>().Where(c => c.Id > 1).First();
            var caseId   = case1.Id;
            var newTitle = "new title" + DateTime.Now.ToShortTimeString();

            SetTitle(case1, newTitle);

            //Act
            var changeEntries = new List <ChangeSetEntry>
            {
                new ChangeSetEntry {
                    Operation = EntryOperation.Update, Entity = case1
                }
            };

            var result = Submit(new ChangeSet {
                ChangeSetEntries = changeEntries
            });

            //Assert
            AssertOperationResultCountIs(expectedOperationResultsCount, result);

            var case1Updated = result.OperationResults.First().Entities.First() as Case;

            Assert.IsNotNull(case1Updated);
            Assert.AreEqual(newTitle, case1Updated.Title, "case1Updated.Title");

            //Fetch the case again and verify title
            Assert.AreEqual(newTitle, EphorteContext.Query <Case>().Where(x => x.Id == caseId).First().Title, "_ephorte.Query<Case>().Where(x => x.Id == caseId).First().Title");
        }
        private RegistryEntry GetRegistryEntry(RegistryEntry registryEntry)
        {
            var query = from o in EphorteContext.Query <RegistryEntry>()
                        where o.Id == registryEntry.Id
                        select o;

            return(query.FirstOrDefault());
        }
        public void CreateRegistryEntryWithDocument(bool addAttachment, string fileformatId)
        {
            var          mainCase            = GetMainCase();
            const string registryEntryTypeId = "U"; //Currently hardcoded

            //Add registry-entry to case
            var registryEntry = _ephorte.AddRegistryEntryToCase(mainCase, registryEntryTypeId, "One document - " + (addAttachment ? "ONE" : "NO") + " attachment (" + fileformatId + ")");

            if (registryEntryTypeId == "U")
            {
                //If type is U, then there MUST be an at least one external recipient
                _ephorte.AddRecipient(registryEntry, "FirstName1", "LastName1");
            }
            DocumentDescription documentDescription1;
            DocumentObject      documentObject1;

            AddMainDocument(registryEntry, out documentDescription1, out documentObject1);

            //Save changes (and attach uploaded document)
            EphorteContext.SaveChanges();

            LogEphorteWebLink(registryEntry);

            //The checksum is now updated:
            Assert.IsNotNull(documentObject1.Checksum, "documentObject1.Checksum");


            //---------------------------------------------------
            //Add a new version of the main document
            //---------------------------------------------------
            var documentObject2 = AddNewVersionOfDocument(documentDescription1, fileformatId);

            //Fetch the updated document-object to verify that the checsum is set.
            var documentObject2Reloaded = GetDocumentObject(documentObject2);

            Assert.IsNotNull(documentObject2Reloaded, "documentObject2Reloaded");
            Assert.IsNotNull(documentObject2Reloaded.Checksum, "documentObject2Reloaded.Checksum");

            //NOTE:
            //At this point we have a case, a registry-entry with ONE external recipient and ONE main-document. The main-document has two versions.
            Assert.AreEqual(0, GetRegistryEntry(registryEntry).NumberOfSubDocuments, "NumberOfSubDocuments");

            if (!addAttachment)
            {
                return;
            }
            //---------------------------------------------------
            //Add attachment
            var documentDescription2 = AddAttachment(registryEntry);

            EphorteContext.SaveChanges();

            //Verify that the FileFormatId has been resolved correctly: (.PDF -> RA-PDF)
            Assert.AreEqual(FileFormatId.RaPdf, GetDocumentObject(documentDescription2.Id, VariantFormatId.Production, 1).FileformatId, "FileformatId documentDescription2");

            //After the attachment is added, NumberOfSubDocuments should be 1:
            Assert.AreEqual(1, GetRegistryEntry(registryEntry).NumberOfSubDocuments, "NumberOfSubDocuments");
        }
        public void Ctor_WithoutObjectModelAdapterProvided_AnyStateManagementShouldThrow()
        {
            var functionsAdapterStub = MockRepository.GenerateStub <IFunctionsAdapter>();
            var ctx = new EphorteContext(functionsAdapter: functionsAdapterStub);

            Action act = () => ctx.Attach(new object());

            act.ShouldThrow <NotSupportedException>();
        }
        private DocumentObject GetDocumentObject(int documentDescriptionId, string variantFormatId, int versionNumber)
        {
            var query = from o in EphorteContext.Query <DocumentObject>()
                        where o.DocumentDescriptionId == documentDescriptionId &&
                        o.VariantFormatId == variantFormatId &&
                        o.VersionNumber == versionNumber
                        select o;

            return(query.FirstOrDefault());
        }
        private void DeleteAllRemarksOnCase(int caseId)
        {
            var remarks = EphorteContext.Query <Remarks>().Where(r => r.CaseId == caseId);

            Submit(new ChangeSet
            {
                ChangeSetEntries = new List <ChangeSetEntry>(remarks.Select(r => new ChangeSetEntry {
                    Operation = EntryOperation.Delete, Entity = r
                }))
            });
        }
        public void Submit_CanUpdateOneCaseAndInsertRemark()
        {
            var newCaseTitle  = "new title" + DateTime.Now.ToShortTimeString();
            var newRemarkText = "Some remarks regarding case " + newCaseTitle;

            const int expectedOperationResultsCount = 2;

            //Arrange
            var case1  = EphorteContext.Query <Case>().Where(c => c.Id > 1).First();
            var caseId = case1.Id;

            SetTitle(case1, newCaseTitle);

            var remark = new Remarks {
                CaseId = case1.Id, Text = newRemarkText
            };

            //Act
            var changeEntries = new List <ChangeSetEntry>
            {
                new ChangeSetEntry {
                    Operation = EntryOperation.Update, Entity = case1
                },
                new ChangeSetEntry {
                    Operation = EntryOperation.Insert, Entity = remark
                }
            };

            var result = Submit(new ChangeSet {
                ChangeSetEntries = changeEntries
            });

            //Assert
            AssertOperationResultCountIs(expectedOperationResultsCount, result);

            var case1Updated = result.OperationResults.First().Entities.First() as Case;

            Assert.IsNotNull(case1Updated);
            Assert.AreEqual(newCaseTitle, case1Updated.Title, "case1Updated.Title");

            //Fetch the last inserted remark on the case
            var q = from r in EphorteContext.Query <Remarks>()
                    .Include(x => x.Case)
                    where r.CaseId == caseId orderby r.CreatedDate descending
                    select r;
            var lastRemark = q.FirstOrDefault();

            Assert.IsNotNull(lastRemark, "lastRemark");
            Assert.AreEqual(newRemarkText, lastRemark.Text, "lastRemark.Text");
            Assert.IsNotNull(lastRemark.Case, "lastRemark.Case");
            Assert.AreEqual(newCaseTitle, lastRemark.Case.Title, "lastRemark.Text");
        }
        public void CreateTwoRegistryEntriesOfType(string registryEntryTypeId)
        {
            var mainCase = GetMainCase();

            const string moreThanOneRecipientExpectedPostfix = " m.fl.";

            var registryEntry1 = _ephorte.AddRegistryEntryToCase(mainCase, registryEntryTypeId, registryEntryTypeId + " - With one recipient ");
            var registryEntry2 = _ephorte.AddRegistryEntryToCase(mainCase, registryEntryTypeId, registryEntryTypeId + " - With two recipients ");

            if (registryEntryTypeId == "I")
            {
                _ephorte.AddSenderRecipient(registryEntry1, "SenderFN", "LN");

                _ephorte.AddSenderRecipient(registryEntry2, "SenderFN1", "LN1");
                _ephorte.AddSenderRecipient(registryEntry2, "SenderFN2", "LN2");
            }
            if (registryEntryTypeId == "U")
            {
                _ephorte.AddRecipient(registryEntry1, "RecipientFN", "LN");

                _ephorte.AddRecipient(registryEntry2, "RecipientFN1", "LN1");
                _ephorte.AddRecipient(registryEntry2, "RecipientFN2", "LN2");
            }

            if (registryEntryTypeId == "X")
            {
                var r1 = _ephorte.AddSenderRecipient(registryEntry1, "InternalFN", "LN");

                var r2 = _ephorte.AddSenderRecipient(registryEntry2, "InternalFN1", "LN1");
                var r3 = _ephorte.AddSenderRecipient(registryEntry2, "InternalFN2", "LN2");
                foreach (var recipient in new[] { r1, r2, r3 })
                {
                    //TODO: Fix hardcoded values
                    recipient.AdministrativeUnitId     = Configuration.RecipientXAdministrativeUnitId;
                    recipient.RegistryManagementUnitId = Configuration.RecipientXRegistryManagementUnitId;
                }
            }

            EphorteContext.SaveChanges();

            //First registry-entry has ONE recipient, so registryEntry.SenderRecipient must NOT end with " m.fl."

            string registryEntry1SenderRecipient = GetRegistryEntry(registryEntry1).SenderRecipient;

            Console.WriteLine("SenderRecipient: " + registryEntry1SenderRecipient);
            Assert.IsNotNull(registryEntry1SenderRecipient, "SenderRecipient must not be null");
            Assert.IsFalse(registryEntry1SenderRecipient.EndsWith(moreThanOneRecipientExpectedPostfix), "registryEntry.SenderRecipient (one recipient)");

            //Second registry-entry has two recipients, and registryEntry.SenderRecipient DOES end with " m.fl."
            Assert.IsTrue(GetRegistryEntry(registryEntry2).SenderRecipient.EndsWith(moreThanOneRecipientExpectedPostfix), "registryEntry.SenderRecipient (multiple)");
        }
Exemplo n.º 9
0
        public void QueryForClassificationThatIsInUse_DoesNotReturnsZeroRecords()
        {
            var firstClassification = EphorteContext.Query <Classification>().First(c => c.Description != null);

            Console.WriteLine(firstClassification.ClassId);

            var query1 = EphorteContext.Query <Classification>().Where(x => x.ClassId == firstClassification.ClassId);

            Assert.AreNotEqual(0, query1.Count(), "Query 1");

            //WILL Currently fail:
            //var query2 = EphorteContext.Query<Classification>().Where(x => x.Class.Id == firstClassification.ClassId);
            //Assert.AreNotEqual(0, query2.Count(), "Query 2");
        }
Exemplo n.º 10
0
        public void QueryForClassThatDoesNotExist_ReturnsZeroRecords()
        {
            //Norwegian
            //var query = context.Query<Klassering>().Where(x => x.Ordningsverdi.Tittel == "12345678910").Count();

            //var query = EphorteContext.Query<Classification>().Where(x => x.Class.Id == "DoesNotExist");

            //This query would give same result:
            var query = EphorteContext.Query <Classification>().Where(x => x.ClassId == "DoesNotExist");

            var count = query.Count();

            Assert.AreEqual(0, count);
        }
        private DocumentObject AddNewVersionOfDocument(DocumentDescription documentDescription1, string fileformatId)
        {
            var documentObject = _ephorte.AddDocumentObject(documentDescription1.Id, 2, VariantFormatId.Production, MainFileName, fileformatId);

            EphorteContext.SaveChanges();

            Assert.AreEqual(fileformatId, GetDocumentObject(documentDescription1.Id, VariantFormatId.Production, 2).FileformatId, "FileformatId documentDescription1");

            //This time we add a text-document to an existing document-description
            _ephorte.CheckinTextDocument(documentDescription1.Id, documentObject.VariantFormatId, documentObject.VersionNumber, TextFileContent + " - v2");

            //Note that the checksum is not yet calculated "locally".
            Assert.IsNull(documentObject.Checksum);

            return(GetDocumentObject(documentObject)); //Re-fetch document-object
        }
        public void Submit_CanInsertRemark()
        {
            var newRemarkText = "Some remarks regarding case. Current time: " + DateTime.Now;

            const int expectedOperationResultsCount = 1;

            //Arrange
            var case1  = EphorteContext.Query <Case>().Where(c => c.Id > 1).First();
            var caseId = case1.Id;

            var remarks = new Remarks {
                CaseId = caseId, Text = newRemarkText
            };

            //Act
            var changeEntries = new List <ChangeSetEntry>
            {
                new ChangeSetEntry {
                    Operation = EntryOperation.Insert, Entity = remarks
                }
            };

            var result = Submit(new ChangeSet {
                ChangeSetEntries = changeEntries
            });

            //Assert
            AssertOperationResultCountIs(expectedOperationResultsCount, result);

            var remarkUpdated = result.OperationResults.First().Entities.First() as Remarks;

            Assert.IsNotNull(remarkUpdated);
            Assert.AreEqual(newRemarkText, remarkUpdated.Text, "remarkUpdated.Text");

            //Fetch the last inserted remark on the case
            var q = from r in EphorteContext.Query <Remarks>()
                    //.Include(x => x.Case)
                    where r.CaseId == caseId
                    orderby r.CreatedDate descending
                    select r;
            var lastRemark = q.FirstOrDefault();

            Assert.IsNotNull(lastRemark, "lastRemark");
            Assert.AreEqual(newRemarkText, lastRemark.Text, "lastRemark.Text");
        }
        public void PredefinedSearchQuery()
        {
            var result = EphorteContext.Query <Query>().FirstOrDefault(q => q.Id == PredefinedQueryId);

            if (result != null)
            {
                var predefQueryResult = (from c in EphorteContext.Query <Case>()
                                         where QueryContext.Current.StoredQuery(c, PredefinedQueryId)
                                         select c as DataObject).Any();
                var regularQueryResult = (from c in EphorteContext.Query <Case>()
                                          where c.CaseDate < DateTime.Now
                                          select c).Any();
                Assert.AreEqual(predefQueryResult, regularQueryResult, "Expected predefined query {0} will return some Cases.", PredefinedQueryId);
            }
            else
            {
                Assert.Fail("Could not find predefined query for id={0}.", PredefinedQueryId);
            }
        }
 private Case GetMainCase()
 {
     try
     {
         if (_mainCase != null)
         {
             return(_mainCase);
         }
         _mainCase = _ephorte.AddCase("TestCase " + DateTime.Now);
         EphorteContext.SaveChanges();
         return(_mainCase);
     }
     finally
     {
         if (_mainCase != null)
         {
             LogEphorteWebLink(_mainCase);
         }
     }
 }
        public void Submit_DeleteUpdateAndAddRemarks()
        {
            var newRemarkText = "Some remarks regarding case. Current time: " + DateTime.Now;

            const int expectedOperationResultsCount = 3;

            //Arrange
            var case1  = EphorteContext.Query <Case>().Where(c => c.Id > 1).First();
            var caseId = case1.Id;

            //first delete all remarks on case
            DeleteAllRemarksOnCase(caseId.Value);

            //Add two remarks which can be changed and deleted
            var remark1 = new Remarks {
                CaseId = caseId, Text = newRemarkText + " 1"
            };
            var remark2 = new Remarks {
                CaseId = caseId, Text = newRemarkText + " 2"
            };

            var result = Submit(new ChangeSet {
                ChangeSetEntries
                    = new List <ChangeSetEntry>
                    {
                        new ChangeSetEntry {
                            Operation = EntryOperation.Insert, Entity = remark1
                        },
                        new ChangeSetEntry {
                            Operation = EntryOperation.Insert, Entity = remark2
                        }
                    }
            });
            var inserted = result.OperationResults.SelectMany(entryResult => entryResult.Entities).ToList();

            //Act

            var changedRemarkText = "Changed remark " + DateTime.Now;
            var insertRemarkText  = "Inserted remark" + DateTime.Now;

            var deleteRemark = (Remarks)inserted[0];
            var changeRemark = (Remarks)inserted[1]; changeRemark.Text = changedRemarkText;
            var insertRemark = new Remarks {
                CaseId = caseId, Text = insertRemarkText
            };

            result = Submit(new ChangeSet
            {
                ChangeSetEntries
                    = new List <ChangeSetEntry>
                    {
                        new ChangeSetEntry {
                            Operation = EntryOperation.Delete, Entity = deleteRemark
                        },
                        new ChangeSetEntry {
                            Operation = EntryOperation.Update, Entity = changeRemark
                        },
                        new ChangeSetEntry {
                            Operation = EntryOperation.Insert, Entity = insertRemark
                        },
                    }
            });
            //inserted = result.OperationResults.SelectMany(entryResult => entryResult.Entities).ToList();

            //Assert
            AssertOperationResultCountIs(expectedOperationResultsCount, result);

            //Fetch the remarks on the case
            var remarks = (from r in EphorteContext.Query <Remarks>()
                           where r.CaseId == caseId
                           orderby r.CreatedDate descending
                           select r).ToList();

            Assert.AreEqual(2, remarks.Count, "remarks.Count");
            Assert.AreEqual(1, remarks.Where(x => x.Text == changedRemarkText).Count());
            Assert.AreEqual(1, remarks.Where(x => x.Text == insertRemarkText).Count());
        }