{"action":"created","issue":{"url":"https://api.github.com/repos/ebeigarts/exchanger/issues/17","repository_url":"https://api.github.com/repos/ebeigarts/exchanger","labels_url":"https://api.github.com/repos/ebeigarts/exchanger/issues/17/labels{/name}","comments_url":"https://api.github.com/repos/ebeigarts/exchanger/issues/17/comments","events_url":"https://api.github.com/repos/ebeigarts/exchanger/issues/17/events","html_url":"https://github.com/ebeigarts/exchanger/pull/17","id":153538946,"number":17,"title":"Calendar Item Updates","user":{"login":"chadrschroeder","id":5098851,"avatar_url":"https://avatars.githubusercontent.com/u/5098851?v=3","gravatar_id":"","url":"https://api.github.com/users/chadrschroeder","html_url":"https://github.com/chadrschroeder","followers_url":"https://api.github.com/users/chadrschroeder/followers","following_url":"https://api.github.com/users/chadrschroeder/following{/other_user}","gists_url":"https://api.github.com/users/chadrschroeder/gists{/gist_id}","starred_url":"https://api.github.com/users/chadrschroeder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chadrschroeder/subscriptions","organizations_url":"https://api.github.com/users/chadrschroeder/orgs","repos_url":"https://api.github.com/users/chadrschroeder/repos","events_url":"https://api.github.com/users/chadrschroeder/events{/privacy}","received_events_url":"https://api.github.com/users/chadrschroeder/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-05-06T21:10:51Z","updated_at":"2016-05-09T16:12:29Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ebeigarts/exchanger/pulls/17","html_url":"https://github.com/ebeigarts/exchanger/pull/17","diff_url":"https://github.com/ebeigarts/exchanger/pull/17.diff","patch_url":"https://github.com/ebeigarts/exchanger/pull/17.patch"},"body":"The CalendarView support in this gem has been very helpful!\r\n\r\nThis pull request addresses some issues I ran into with updating calendar items.  Please let me know if these would be OK to bring into master.\r\n\r\n#### 1. VCR Version Bump\r\nThe VCR version was bumped up to 3.0.1 because version 2.2.5 was producing blank YAML files.\r\n\r\n#### 2. VCR Password Filter Update\r\nThe VCR `filter_sensitive_data` use was updated to handle passwords with sensitive characters.  For example, a password of `secret!` would get encoded as `secret%21` and would remain in the cassette file.\r\n\r\n#### 3. Contact Test Updates\r\nWhen running the `contact_spec` on a fresh cassette, this failure occurred:\r\n\r\n```\r\nExchanger::Operation::ResponseError:\r\nThe request failed schema validation: The 'SendMeetingInvitations' attribute is invalid - The value '' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:CalendarItemCreateOrDeleteOperationType' - The Enumeration constraint failed.\r\n```\r\n\r\nThis appears to be because the `SendMeetingInvitations` attribute was added to the `CreateItem` operation for `CalendarItem#create` but this unintentionally affected `Item#create`.\r\n\r\n#### 4. Return ID for New CalendarItem\r\nA newly created Item would return its `id` but a CalendarItem would not.   CalendarItem needed to be able to use this code:\r\n\r\n```ruby\r\nresponse = UpdateItem.run(:items => [self])\r\nmove_changes\r\n```\r\n\r\n#### 5. Fix CalendarItem Destroy\r\nRunning `destroy` on a CalendarItem was resulting in:\r\n\r\n```\r\nExchanger::Operation::ResponseError:\r\nSendMeetingCancellations attribute is required for Calendar items.\r\n```\r\n\r\nI've added this attribute.\r\n\r\n#### 6. Allow Body for New CalendarItem\r\nWhen attempting to create a new calendar item with a `body` value, the request was failing on:\r\n\r\n```\r\nExchanger::Operation::ResponseError:\r\nThe request failed schema validation: The required attribute 'BodyType' is missing.\r\n```\r\n\r\nI've created a new Body element to allow the `BodyType` to be sent.\r\n\r\n#### 7. Fix CalendarItem Update\r\nRunning `save` on an existing CalendarItem was resulting in:\r\n\r\n```\r\nExchanger::Operation::ResponseError:\r\nThe SendMeetingInvitationsOrCancellations attribute is required for calendar items.\r\n```\r\n\r\nI've added this attribute.\r\n\r\n----\r\nNote: The `calendar_item_spec.rb` is passing on my machine.  I'm not sure why it is failing in the Travis CI build."},"comment":{"url":"https://api.github.com/repos/ebeigarts/exchanger/issues/comments/217910998","html_url":"https://github.com/ebeigarts/exchanger/pull/17#issuecomment-217910998","issue_url":"https://api.github.com/repos/ebeigarts/exchanger/issues/17","id":217910998,"user":{"login":"chadrschroeder","id":5098851,"avatar_url":"https://avatars.githubusercontent.com/u/5098851?v=3","gravatar_id":"","url":"https://api.github.com/users/chadrschroeder","html_url":"https://github.com/chadrschroeder","followers_url":"https://api.github.com/users/chadrschroeder/followers","following_url":"https://api.github.com/users/chadrschroeder/following{/other_user}","gists_url":"https://api.github.com/users/chadrschroeder/gists{/gist_id}","starred_url":"https://api.github.com/users/chadrschroeder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chadrschroeder/subscriptions","organizations_url":"https://api.github.com/users/chadrschroeder/orgs","repos_url":"https://api.github.com/users/chadrschroeder/repos","events_url":"https://api.github.com/users/chadrschroeder/events{/privacy}","received_events_url":"https://api.github.com/users/chadrschroeder/received_events","type":"User","site_admin":false},"created_at":"2016-05-09T16:12:29Z","updated_at":"2016-05-09T16:12:29Z","body":"Thanks.  Yes, that was it.  When `VCR.use_cassette` is called, it compares the currently configured URI with the cassette URI to decide if it can use the previous recording or if it has to create a new one.  As suggested, I've added a filter to make sure that `amsprd0710.outlook.com` is assigned as the endpoint when new cassette files are created.  CI will then use the cassette files for its tests."}}