コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
ファイル: GetFixture.cs プロジェクト: aarce77/StakeHappy-Core
        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);
        }
コード例 #8
0
        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);
        }