public void PostsToTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new PersonFieldsClient(connection);

                var newPersonField = new NewPersonField("name", FieldType.org);

                client.Create(newPersonField);

                connection.Received().Post <PersonField>(Arg.Is <Uri>(u => u.ToString() == "personFields"),
                                                         Arg.Is <NewPersonField>(df => df.Name == "name" &&
                                                                                 df.FieldType == FieldType.org));
            }
            public async Task CanDelete()
            {
                var pipedrive = Helper.GetAuthenticatedClient();
                var fixture   = pipedrive.PersonField;

                var newPersonField = new NewPersonField("new-name", FieldType.varchar_auto);
                var personField    = await fixture.Create(newPersonField);

                var createdPersonField = await fixture.Get(personField.Id.Value);

                Assert.NotNull(createdPersonField);

                await fixture.Delete(createdPersonField.Id.Value);

                await Assert.ThrowsAsync <NotFoundException>(() => fixture.Get(createdPersonField.Id.Value));
            }
            public async Task CanCreate()
            {
                var pipedrive = Helper.GetAuthenticatedClient();
                var fixture   = pipedrive.PersonField;

                var newPersonField = new NewPersonField("name", FieldType.time);

                var personField = await fixture.Create(newPersonField);

                Assert.NotNull(personField);

                var retrieved = await fixture.Get(personField.Id.Value);

                Assert.NotNull(retrieved);

                // Cleanup
                await fixture.Delete(personField.Id.Value);
            }
            public async Task CanEdit()
            {
                var pipedrive = Helper.GetAuthenticatedClient();
                var fixture   = pipedrive.PersonField;

                var newPersonField = new NewPersonField("new-name", FieldType.varchar);
                var personField    = await fixture.Create(newPersonField);

                var editPersonField = personField.ToUpdate();

                editPersonField.Name = "updated-name";

                var updatedPersonField = await fixture.Edit(personField.Id.Value, editPersonField);

                Assert.Equal("updated-name", updatedPersonField.Name);
                Assert.Equal(FieldType.varchar, updatedPersonField.FieldType);

                // Cleanup
                await fixture.Delete(updatedPersonField.Id.Value);
            }