public void FailureWithPayments() { // data var id = Guid.NewGuid(); var invoice = new Core.Data.Model.Invoice { Id = id, Payments = new List <Core.Data.Model.Payment> { new Core.Data.Model.Payment { Id = Guid.NewGuid() } } }; // mocks var invoicePersistor = Mocks.StrictMock <Core.Data.Persistor.Invoice>(); var bll = Mocks.StrictMock <Core.Logic.InvoiceLogic>(invoicePersistor, null, null); bll.Expect(b => b.Delete(id)).CallOriginalMethod(OriginalCallOptions.NoExpectation); invoicePersistor.Expect(d => d.Get(id)).Return(invoice); // record Mocks.ReplayAll(); var ex = Assert.Throws <NotImplementedException>(() => bll.Delete(id)); Assert.Equal("an invoice that contains a payment can not be deleted", ex.Message); }
public void SuccessfulInsert() { var invoiceId = Guid.Empty; var invoice = new Core.Data.Model.Invoice { Id = invoiceId, Active = true, Client_Id = _clientId, Date = DateTime.Now, Number = "INV_00098", CreatedDate = DateTime.Now, LastModified = DateTime.Now, }; var repo = new Core.Data.Persistor.Invoice(); repo.Save(invoice); repo.Commit(); Assert.NotEqual(Guid.Empty, invoice.Id); const string sqlFormatter = "IF NOT EXISTS (" + "SELECT COUNT(*) FROM Invoices " + "WHERE Id = '{0}' " + "HAVING COUNT(*) = 1" + ") RAISERROR ('Error creating invoice.',16,1);"; var sql = string.Format(sqlFormatter, invoice.Id, _userId); repo.DbContext.Database.ExecuteSqlCommand(sql); }
public void SuccessfulUpdate() { // data var userId = Guid.NewGuid(); var invoice = new Core.Data.Model.Invoice { Id = Guid.NewGuid(), Client_Id = Guid.NewGuid(), Active = true, CreatedDate = DateTime.Now, Items = new List <Core.Data.Model.InvoiceItem> { new Core.Data.Model.InvoiceItem { Id = Guid.NewGuid() } } }; // mocks var invoicePersistor = Mocks.StrictMock <Core.Data.Persistor.Invoice>(); var bll = Mocks.StrictMock <Core.Logic.InvoiceLogic>(invoicePersistor, null, null); // record bll.Expect(b => b.Save(userId, invoice)).CallOriginalMethod(OriginalCallOptions.NoExpectation); invoicePersistor.Expect(u => u.Save(invoice)).Return(invoice); invoicePersistor.Expect(i => i.Commit()).Return(1); invoicePersistor.Expect(i => i.UpdateUserId(userId, invoice.Id)); Mocks.ReplayAll(); var result = bll.Save(userId, invoice); Assert.Equal(invoice.Id, result.Id); }
public void ClientIdEmpty() { var invoice = new Core.Data.Model.Invoice(); var ex = Assert.Throws <ArgumentException>(() => new Core.Logic.InvoiceLogic().Save(Guid.NewGuid(), invoice)); Assert.Equal("Client id most be specified to save an invoice", ex.Message); }
public void SuccessfulInsertWithUserIdLookup() { // data var userId = Guid.NewGuid(); var invoiceId = Guid.NewGuid(); var clientId = Guid.NewGuid(); var client = new Core.Data.Model.Client { Id = clientId, User_Id = userId }; var invoice = new Core.Data.Model.Invoice { Id = Guid.Empty, Client_Id = clientId, Active = true, CreatedDate = DateTime.Now, Items = new List <Core.Data.Model.InvoiceItem> { new Core.Data.Model.InvoiceItem { Id = Guid.NewGuid() }, new Core.Data.Model.InvoiceItem { Id = Guid.NewGuid() } } }; // mocks var invoicePersistor = Mocks.StrictMock <Core.Data.Persistor.Invoice>(); var invoiceItemPersistor = Mocks.StrictMock <Core.Data.Persistor.InvoiceItem>(); var clientPersistor = Mocks.StrictMock <Core.Data.Persistor.Client>(); var bll = Mocks.StrictMock <Core.Logic.InvoiceLogic>(invoicePersistor, invoiceItemPersistor, clientPersistor); // record bll.Expect(b => b.Save(invoice)).CallOriginalMethod(OriginalCallOptions.NoExpectation); clientPersistor.Expect(c => c.Get(invoice.Client_Id)).Return(client); bll.Expect(b => b.Save(userId, invoice)).Return(invoice); Mocks.ReplayAll(); var result = bll.Save(invoice); Assert.Equal(invoice.Id, result.Id); }
public void SuccessfulWithoutPayments() { // data var id = Guid.NewGuid(); var invoice = new Core.Data.Model.Invoice { Id = id }; // mocks var invoicePersistor = Mocks.StrictMock <Core.Data.Persistor.Invoice>(); var bll = Mocks.StrictMock <Core.Logic.InvoiceLogic>(invoicePersistor, null, null); bll.Expect(b => b.Delete(id)).CallOriginalMethod(OriginalCallOptions.NoExpectation); invoicePersistor.Expect(d => d.Get(id)).Return(invoice); invoicePersistor.Expect(d => d.Delete(id)); invoicePersistor.Expect(d => d.Commit()).Return(1); // record Mocks.ReplayAll(); bll.Delete(id); }
public void Successful() { // data var id = Guid.NewGuid(); var user = new Core.Data.Model.Invoice { Id = id }; // mocks var invoicePersistor = Mocks.StrictMock <Core.Data.Persistor.Invoice>(); var bll = Mocks.StrictMock <Core.Logic.InvoiceLogic>(invoicePersistor, null, null); bll.Expect(b => b.Get(user.Id)).CallOriginalMethod(OriginalCallOptions.NoExpectation); invoicePersistor.Expect(d => d.Get(user.Id)).Return(user); // record Mocks.ReplayAll(); var result = bll.Get(id); Assert.Equal(id, result.Id); }
public void SuccessfulUpdate() { var repo = new Core.Data.Persistor.Invoice(); var invoiceId = Guid.NewGuid(); var invoiceDate = DateTime.Now; var voidedDate = DateTime.Now; repo.DbContext.Database.ExecuteSqlCommand( Utils.Invoice.GetInsertScript(invoiceId, _clientId, invoiceDate, _userId, null, "INV_0098")); var invoice = new Core.Data.Model.Invoice { Id = invoiceId, Active = true, Client_Id = _clientId, Date = invoiceDate, Number = "INV_00981", Voided = true, VoidedDate = voidedDate, CreatedDate = DateTime.Now, LastModified = DateTime.Now, }; repo.Save(invoice); repo.Commit(); Assert.NotEqual(Guid.Empty, invoice.Id); const string sqlFormatter = "IF NOT EXISTS (" + "SELECT COUNT(*) FROM Invoices " + "WHERE Id = '{0}' AND Number = '{1}' AND Voided = 1 AND DATEDIFF(DAY, VoidedDate, '{2}') = 0 " + "HAVING COUNT(*) = 1" + ") RAISERROR ('Error updating invoice.',16,1);"; var sql = string.Format(sqlFormatter, invoice.Id, "INV_00981", voidedDate); repo.DbContext.Database.ExecuteSqlCommand(sql); }