public void CreateInvoice_ReturnsNewInvoice() { var client = Api.ListClients().First(); _toDelete = Api.CreateInvoice(new InvoiceOptions() { ClientId = client.Id, Subject = "Test Create Invoice" }); Assert.Equal("Test Create Invoice", _toDelete.Subject); Assert.Equal(client.Id, _toDelete.ClientId); }
public void StateChangesApply() { var invoice = Api.CreateInvoice(InvoiceKind.FreeForm, GetTestId(TestId.ClientId), DateTime.Now, lineItems: new List<InvoiceItem>()); _toDeleteInvoice = invoice; Assert.Equal(InvoiceState.Draft, invoice.State); // test send var success = Api.MarkInvoiceSent(invoice.Id, "MARK AS SENT"); var messages = Api.ListInvoiceMessages(invoice.Id); invoice = Api.Invoice(invoice.Id); Assert.True(success); Assert.Contains("MARK AS SENT", messages.Select(m => m.Body)); Assert.Equal(InvoiceState.Open, invoice.State); // test draft success = Api.MarkInvoiceDraft(invoice.Id); invoice = Api.Invoice(invoice.Id); Assert.True(success); Assert.Equal(InvoiceState.Draft, invoice.State); // test close Api.MarkInvoiceSent(invoice.Id, null); success = Api.MarkInvoiceClosed(invoice.Id, "MARK AS CLOSED"); messages = Api.ListInvoiceMessages(invoice.Id); invoice = Api.Invoice(invoice.Id); Assert.True(success); Assert.Contains("MARK AS CLOSED", messages.Select(m => m.Body)); Assert.Equal(InvoiceState.Closed, invoice.State); // test reopen success = Api.ReopenInvoice(invoice.Id, "RE-OPEN"); messages = Api.ListInvoiceMessages(invoice.Id); invoice = Api.Invoice(invoice.Id); Assert.True(success); //Assert.Contains("RE-OPEN", messages.Select(m => m.Body)); I think there is a bug in Harvest. The body does not get saved on reopen. Assert.Equal(InvoiceState.Open, invoice.State); }
public void UpdateInvoice_ReturnsUpdatedInvoice() { var client = Api.ListClients().First(); var invoice = Api.CreateInvoice(new InvoiceOptions() { ClientId = client.Id, Subject = "Test Update Invoice", Notes = "Notes", IssuedAt = DateTime.Now.AddDays(-1), DueAtHumanFormat = InvoiceDateAtFormat.Net15 }); Assert.Equal(DateTime.Now.AddDays(14).ToString("yyyy-MM-dd"), invoice.DueAt.ToString("yyyy-MM-dd")); Assert.Equal(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"), invoice.IssuedAt.ToString("yyyy-MM-dd")); // REVIEW: Bugs in the api currently prevent setting the due-at date. // https://github.com/harvesthq/api/issues/66 var updated = Api.UpdateInvoice(invoice.Id, new InvoiceOptions() { Subject = "Tested", //DueAtHumanFormat = InvoiceDateAtFormat.Custom, //DueAt = DateTime.Now.AddDays(10) }); _toDelete = invoice; // fields that changed Assert.Equal("Tested", updated.Subject); //Assert.Equal(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"), updated.IssuedAt.ToString("yyyy-MM-dd")); //Assert.Equal(DateTime.Now.AddDays(10).ToString("yyyy-MM-dd"), updated.DueAt.ToString("yyyy-MM-dd")); // fields that didn't change Assert.Equal(invoice.ClientId, updated.ClientId); Assert.Equal(invoice.Notes, updated.Notes); }
public void CreateInvoice_WithItemsContainsItems() { var client = Api.ListClients().First(); var options = new InvoiceOptions() { ClientId = client.Id, Subject = "Test Items Invoice", Kind = InvoiceKind.FreeForm }; options.SetInvoiceItems(new List<InvoiceItem>() { new InvoiceItem() { Kind = "Product", Description = "Description 1", Quantity = 1, Amount = 10 }, new InvoiceItem() { Kind = "Product", Description = "Description 2", Quantity = 2, Amount = 10 } }); _toDelete = Api.CreateInvoice(options); Assert.Equal(2, _toDelete.ListLineItems().Count()); }