rock_rms 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -3
  3. data/lib/rock_rms/client.rb +3 -0
  4. data/lib/rock_rms/error.rb +1 -1
  5. data/lib/rock_rms/resources/group.rb +35 -0
  6. data/lib/rock_rms/resources/group_member.rb +32 -0
  7. data/lib/rock_rms/resources/person.rb +16 -6
  8. data/lib/rock_rms/resources/phone_number.rb +15 -0
  9. data/lib/rock_rms/responses/campus.rb +34 -0
  10. data/lib/rock_rms/responses/group.rb +42 -0
  11. data/lib/rock_rms/responses/group_location.rb +34 -0
  12. data/lib/rock_rms/responses/location.rb +37 -0
  13. data/lib/rock_rms/responses/person.rb +29 -17
  14. data/lib/rock_rms/responses/phone_number.rb +27 -0
  15. data/lib/rock_rms/version.rb +1 -1
  16. data/spec/rock_rms/client_spec.rb +3 -3
  17. data/spec/rock_rms/resources/group_member_spec.rb +67 -0
  18. data/spec/rock_rms/resources/group_spec.rb +111 -0
  19. data/spec/rock_rms/resources/person_spec.rb +50 -0
  20. data/spec/rock_rms/resources/phone_number_spec.rb +34 -0
  21. data/spec/rock_rms/responses/campus_spec.rb +30 -0
  22. data/spec/rock_rms/responses/group_location_spec.rb +36 -0
  23. data/spec/rock_rms/responses/group_spec.rb +52 -0
  24. data/spec/rock_rms/responses/location_spec.rb +33 -0
  25. data/spec/rock_rms/responses/phone_number_spec.rb +25 -0
  26. data/spec/spec_helper.rb +5 -0
  27. data/spec/support/client_factory.rb +12 -0
  28. data/spec/support/fixtures/campuses.json +23 -0
  29. data/spec/support/fixtures/create_group_member.json +1 -0
  30. data/spec/support/fixtures/families.json +45 -0
  31. data/spec/support/fixtures/group.json +43 -0
  32. data/spec/support/fixtures/group_locations.json +60 -0
  33. data/spec/support/fixtures/groups.json +32 -0
  34. data/spec/support/fixtures/groups_with_campus.json +53 -0
  35. data/spec/support/fixtures/groups_with_locations.json +92 -0
  36. data/spec/support/fixtures/groups_with_members.json +454 -0
  37. data/spec/support/fixtures/locations.json +42 -0
  38. data/spec/support/fixtures/people_search.json +36 -0
  39. data/spec/support/fixtures/phone_numbers.json +28 -0
  40. data/spec/support/fixtures_helper.rb +5 -0
  41. data/spec/support/rock_mock.rb +41 -0
  42. metadata +33 -2
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RockRMS::Client::PhoneNumber, type: :model do
4
+ include_context 'resource specs'
5
+
6
+ describe '#list_phone_numbers(options = {})' do
7
+ subject(:resource) { client.list_phone_numbers }
8
+
9
+ it 'returns a array of hashes' do
10
+ expect(resource).to be_a(Array)
11
+ expect(resource.first).to be_a(Hash)
12
+ end
13
+
14
+ it 'queries phone numbers' do
15
+ expect(client).to receive(:get).with('PhoneNumbers', {})
16
+ .and_call_original
17
+ resource
18
+ end
19
+
20
+ it 'passes options' do
21
+ expect(client).to receive(:get)
22
+ .with('PhoneNumbers', { option1: '1' })
23
+ .and_return([])
24
+ client.list_phone_numbers(option1: '1')
25
+ end
26
+
27
+ it 'formats with PhoneNumber' do
28
+ response = double
29
+ expect(RockRMS::Responses::PhoneNumber).to receive(:format).with(response)
30
+ allow(client).to receive(:get).and_return(response)
31
+ resource
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RockRMS::Responses::Campus, type: :model do
4
+ let(:parsed) { JSON.parse(FixturesHelper.read('campuses.json')) }
5
+
6
+ describe '.format' do
7
+ subject(:result) { described_class.format(parsed) }
8
+
9
+ context 'when response is array' do
10
+ it 'returns an array' do
11
+ expect(described_class.format([])).to be_a(Array)
12
+ end
13
+ end
14
+
15
+ it 'translates keys' do
16
+ result.zip(parsed) do |r, p|
17
+ expect(r[:id]).to eq(p['Id'])
18
+ expect(r[:name]).to eq(p['Name'])
19
+ expect(r[:is_active]).to eq(p['IsActive'])
20
+ expect(r[:description]).to eq(p['Description'])
21
+ expect(r[:short_code]).to eq(p['ShortCode'])
22
+ expect(r[:url]).to eq(p['Url'])
23
+ expect(r[:location_id]).to eq(p['LocationId'])
24
+ expect(r[:phone_number]).to eq(p['PhoneNumber'])
25
+ expect(r[:service_times]).to eq(p['ServiceTimes'])
26
+ expect(r[:guid]).to eq(p['Guid'])
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RockRMS::Responses::GroupLocation, type: :model do
4
+ let(:parsed) { JSON.parse(FixturesHelper.read('group_locations.json')) }
5
+
6
+ describe '.format' do
7
+ subject(:result) { described_class.format(parsed) }
8
+
9
+ context 'when response is array' do
10
+ it 'returns an array' do
11
+ expect(described_class.format([])).to be_a(Array)
12
+ end
13
+ end
14
+
15
+ it 'translates keys' do
16
+ result.zip(parsed) do |r, p|
17
+ expect(r[:id]).to eq(p['Id'])
18
+ expect(r[:group_id]).to eq(p['GroupId'])
19
+ expect(r[:location_id]).to eq(p['LocationId'])
20
+ expect(r[:guid]).to eq(p['Guid'])
21
+ end
22
+ end
23
+
24
+ context 'when locations are included' do
25
+ it 'formats with Location' do
26
+ location = double
27
+ parsed.first['Location'] = location
28
+ expect(RockRMS::Responses::Location).to receive(:format)
29
+ .with(location)
30
+ .and_return({ some_key: :value })
31
+ result
32
+ expect(result.first[:location]).to eq({ some_key: :value })
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RockRMS::Responses::Group, type: :model do
4
+ let(:parsed) { JSON.parse(FixturesHelper.read('groups_with_members.json')) }
5
+
6
+ describe '.format' do
7
+ subject(:result) { described_class.format(parsed) }
8
+
9
+ context 'when response is array' do
10
+ it 'returns an array' do
11
+ expect(described_class.format([])).to be_a(Array)
12
+ end
13
+ end
14
+
15
+ it 'translates keys' do
16
+ result.zip(parsed) do |r, p|
17
+ expect(r[:id]).to eq(p['Id'])
18
+ expect(r[:name]).to eq(p['Name'])
19
+ expect(r[:group_type_id]).to eq(p['GroupTypeId'])
20
+ expect(r[:parent_group_id]).to eq(p['ParentGroupId'])
21
+ expect(r[:campus_id]).to eq(p['CampusId'])
22
+ expect(r[:is_active]).to eq(p['IsActive'])
23
+ expect(r[:guid]).to eq(p['Guid'])
24
+ expect(r[:members]).to eq(p['Members'])
25
+ end
26
+ end
27
+
28
+ context 'when locations are included' do
29
+ let(:parsed) { JSON.parse(FixturesHelper.read('groups_with_locations.json')) }
30
+
31
+ it 'formats with GroupLocations' do
32
+ expect(RockRMS::Responses::GroupLocation).to receive(:format)
33
+ .with(parsed.first['GroupLocations'])
34
+ .and_return([{ some_key: :value }])
35
+ result
36
+ expect(result.first[:group_locations]).to eq([{ some_key: :value }])
37
+ end
38
+ end
39
+
40
+ context 'when campus is included' do
41
+ let(:parsed) { JSON.parse(FixturesHelper.read('groups_with_campus.json')) }
42
+
43
+ it 'formats with Campus' do
44
+ expect(RockRMS::Responses::Campus).to receive(:format)
45
+ .with(parsed.first['Campus'])
46
+ .and_return([{ some_key: :value }])
47
+ result
48
+ expect(result.first[:campus]).to eq([{ some_key: :value }])
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RockRMS::Responses::Location, type: :model do
4
+ let(:parsed) { JSON.parse(FixturesHelper.read('locations.json')) }
5
+
6
+ describe '.format' do
7
+ subject(:result) { described_class.format(parsed) }
8
+
9
+ context 'when response is array' do
10
+ it 'returns an array' do
11
+ expect(described_class.format([])).to be_a(Array)
12
+ end
13
+ end
14
+
15
+ it 'translates keys' do
16
+ result.zip(parsed) do |r, p|
17
+ expect(r[:id]).to eq(p['Id'])
18
+ expect(r[:name]).to eq(p['Name'])
19
+ expect(r[:is_active]).to eq(p['IsActive'])
20
+ expect(r[:street1]).to eq(p['Street1'])
21
+ expect(r[:street2]).to eq(p['Street2'])
22
+ expect(r[:city]).to eq(p['City'])
23
+ expect(r[:county]).to eq(p['County'])
24
+ expect(r[:state]).to eq(p['State'])
25
+ expect(r[:country]).to eq(p['Country'])
26
+ expect(r[:postal_code]).to eq(p['PostalCode'])
27
+ expect(r[:latitude]).to eq(p['Latitude'])
28
+ expect(r[:longitude]).to eq(p['Longitude'])
29
+ expect(r[:guid]).to eq(p['Guid'])
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RockRMS::Responses::PhoneNumber, type: :model do
4
+ let(:parsed) { JSON.parse(FixturesHelper.read('phone_numbers.json')) }
5
+
6
+ describe '.format' do
7
+ subject(:result) { described_class.format(parsed) }
8
+
9
+ context 'when response is array' do
10
+ it 'returns an array' do
11
+ expect(described_class.format([])).to be_a(Array)
12
+ end
13
+ end
14
+
15
+ it 'translates keys' do
16
+ result.zip(parsed) do |r, p|
17
+ expect(r[:id]).to eq(p['Id'])
18
+ expect(r[:person_id]).to eq(p['PersonId'])
19
+ expect(r[:number]).to eq(p['Number'])
20
+ expect(r[:formatted]).to eq(p['NumberFormatted'])
21
+ expect(r[:formatted_with_cc]).to eq(p['NumberFormattedWithCountryCode'])
22
+ end
23
+ end
24
+ end
25
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,13 @@
1
1
  $LOAD_PATH.unshift(File.join(__FILE__, "..", "..", "lib"))
2
2
 
3
+ SPEC_DIR = File.dirname(__FILE__)
4
+ FIXTURES_DIR = File.join(SPEC_DIR, 'support', 'fixtures')
5
+
3
6
  require 'rock_rms'
4
7
  require 'webmock/rspec'
8
+ require_relative './support/fixtures_helper'
5
9
  require_relative './support/rock_mock'
10
+ require_relative './support/client_factory'
6
11
 
7
12
  RSpec.configure do |config|
8
13
  config.before :suite do
@@ -0,0 +1,12 @@
1
+ RSpec.shared_context 'resource specs' do
2
+ let(:attrs) do
3
+ {
4
+ url: 'http://some-rock-uri.com',
5
+ username: 'test',
6
+ password: 'test'
7
+ }
8
+ end
9
+ let(:attrs_without_logging) { attrs.merge(logger: false) }
10
+
11
+ let(:client) { RockRMS::Client.new(attrs_without_logging) }
12
+ end
@@ -0,0 +1,23 @@
1
+ [
2
+ {
3
+ "IsSystem": false,
4
+ "Name": "Campus Name",
5
+ "Description": "A campus description here.",
6
+ "IsActive": true,
7
+ "ShortCode": "CampusName",
8
+ "Url": "http://some-url.com",
9
+ "LocationId": 12,
10
+ "PhoneNumber": "1234567890",
11
+ "LeaderPersonAliasId": null,
12
+ "ServiceTimes": "Service Times Here",
13
+ "CreatedDateTime": null,
14
+ "ModifiedDateTime": "2017-07-26T14:41:58.103",
15
+ "CreatedByPersonAliasId": null,
16
+ "ModifiedByPersonAliasId": 12,
17
+ "Id": 1,
18
+ "Guid": "76882ae3",
19
+ "ForeignId": 1,
20
+ "ForeignGuid": null,
21
+ "ForeignKey": null
22
+ }
23
+ ]
@@ -0,0 +1 @@
1
+ 12345
@@ -0,0 +1,45 @@
1
+ [
2
+ {
3
+ "IsSystem": false,
4
+ "ParentGroupId": null,
5
+ "GroupTypeId": 10,
6
+ "CampusId": 1,
7
+ "ScheduleId": null,
8
+ "Name": "Some Family",
9
+ "Description": null,
10
+ "IsSecurityRole": false,
11
+ "IsActive": true,
12
+ "Order": 0,
13
+ "AllowGuests": null,
14
+ "WelcomeSystemEmailId": null,
15
+ "ExitSystemEmailId": null,
16
+ "SyncDataViewId": null,
17
+ "AddUserAccountsDuringSync": null,
18
+ "MustMeetRequirementsToAddMember": null,
19
+ "IsPublic": true,
20
+ "GroupCapacity": null,
21
+ "RequiredSignatureDocumentTemplateId": null,
22
+ "GroupType": null,
23
+ "Campus": null,
24
+ "Schedule": null,
25
+ "WelcomeSystemEmail": null,
26
+ "ExitSystemEmail": null,
27
+ "SyncDataView": null,
28
+ "RequiredSignatureDocumentTemplate": null,
29
+ "Members": [],
30
+ "GroupLocations": [],
31
+ "GroupRequirements": [],
32
+ "CreatedDateTime": "2012-10-09T16:08:21.413",
33
+ "ModifiedDateTime": "2017-07-10T14:56:21.677",
34
+ "CreatedByPersonAliasId": null,
35
+ "ModifiedByPersonAliasId": null,
36
+ "ModifiedAuditValuesAlreadyUpdated": false,
37
+ "Attributes": null,
38
+ "AttributeValues": null,
39
+ "Id": 12345,
40
+ "Guid": "6acf289a",
41
+ "ForeignId": 56789,
42
+ "ForeignGuid": null,
43
+ "ForeignKey": "Family"
44
+ }
45
+ ]
@@ -0,0 +1,43 @@
1
+ {
2
+ "IsSystem": false,
3
+ "ParentGroupId": 123456,
4
+ "GroupTypeId": 12345,
5
+ "CampusId": null,
6
+ "ScheduleId": null,
7
+ "Name": "Some Group Name",
8
+ "Description": "",
9
+ "IsSecurityRole": false,
10
+ "IsActive": true,
11
+ "Order": 0,
12
+ "AllowGuests": null,
13
+ "WelcomeSystemEmailId": null,
14
+ "ExitSystemEmailId": null,
15
+ "SyncDataViewId": null,
16
+ "AddUserAccountsDuringSync": false,
17
+ "MustMeetRequirementsToAddMember": false,
18
+ "IsPublic": true,
19
+ "GroupCapacity": 20,
20
+ "RequiredSignatureDocumentTemplateId": null,
21
+ "GroupType": null,
22
+ "Campus": null,
23
+ "Schedule": null,
24
+ "WelcomeSystemEmail": null,
25
+ "ExitSystemEmail": null,
26
+ "SyncDataView": null,
27
+ "RequiredSignatureDocumentTemplate": null,
28
+ "Members": [],
29
+ "GroupLocations": [],
30
+ "GroupRequirements": [],
31
+ "CreatedDateTime": null,
32
+ "ModifiedDateTime": null,
33
+ "CreatedByPersonAliasId": null,
34
+ "ModifiedByPersonAliasId": null,
35
+ "ModifiedAuditValuesAlreadyUpdated": false,
36
+ "Attributes": null,
37
+ "AttributeValues": null,
38
+ "Id": 112233,
39
+ "Guid": "ed7ac06f",
40
+ "ForeignId": 44444,
41
+ "ForeignGuid": null,
42
+ "ForeignKey": "Group"
43
+ }
@@ -0,0 +1,60 @@
1
+ [
2
+ {
3
+ "Location": {
4
+ "ParentLocationId": null,
5
+ "Name": "Some Location",
6
+ "IsActive": true,
7
+ "LocationTypeValueId": null,
8
+ "Street1": "123 Some St",
9
+ "Street2": "",
10
+ "City": "SomeCity",
11
+ "County": null,
12
+ "State": "HI",
13
+ "Country": "US",
14
+ "PostalCode": "12345-4532",
15
+ "Barcode": null,
16
+ "AssessorParcelId": null,
17
+ "StandardizeAttemptedDateTime": null,
18
+ "StandardizeAttemptedServiceType": null,
19
+ "StandardizeAttemptedResult": "0: Standardized",
20
+ "StandardizedDateTime": "2017-07-10T14:53:40.46",
21
+ "GeocodeAttemptedDateTime": null,
22
+ "GeocodeAttemptedServiceType": "smartystreets",
23
+ "GeocodeAttemptedResult": "3",
24
+ "GeocodedDateTime": "2017-07-10T14:56:22.337",
25
+ "IsGeoPointLocked": false,
26
+ "PrinterDeviceId": null,
27
+ "ImageId": null,
28
+ "SoftRoomThreshold": null,
29
+ "FirmRoomThreshold": null,
30
+ "Latitude": 42.96273,
31
+ "Longitude": -76.73045,
32
+ "Distance": 0,
33
+ "CreatedDateTime": "2017-07-10T14:53:40.46",
34
+ "ModifiedDateTime": "2017-07-10T14:53:40.46",
35
+ "CreatedByPersonAliasId": null,
36
+ "ModifiedByPersonAliasId": null,
37
+ "Id": 1234,
38
+ "Guid": "b92138f4-57a2-4401-8b46-2ddc2c581753",
39
+ "ForeignId": 1234578,
40
+ "ForeignGuid": null,
41
+ "ForeignKey": null
42
+ },
43
+ "GroupId": 12345,
44
+ "LocationId": 6789,
45
+ "GroupLocationTypeValueId": 19,
46
+ "IsMailingLocation": true,
47
+ "IsMappedLocation": true,
48
+ "GroupMemberPersonAliasId": null,
49
+ "Order": 0,
50
+ "CreatedDateTime": null,
51
+ "ModifiedDateTime": null,
52
+ "CreatedByPersonAliasId": null,
53
+ "ModifiedByPersonAliasId": null,
54
+ "Id": 13579,
55
+ "Guid": "74bda620",
56
+ "ForeignId": null,
57
+ "ForeignGuid": null,
58
+ "ForeignKey": null
59
+ }
60
+ ]
@@ -0,0 +1,32 @@
1
+ [
2
+ {
3
+ "IsSystem": false,
4
+ "ParentGroupId": 123456,
5
+ "GroupTypeId": 12345,
6
+ "CampusId": null,
7
+ "ScheduleId": null,
8
+ "Name": "Some Group Name",
9
+ "Description": "",
10
+ "IsSecurityRole": false,
11
+ "IsActive": true,
12
+ "Order": 0,
13
+ "AllowGuests": null,
14
+ "WelcomeSystemEmailId": null,
15
+ "ExitSystemEmailId": null,
16
+ "SyncDataViewId": null,
17
+ "AddUserAccountsDuringSync": false,
18
+ "MustMeetRequirementsToAddMember": false,
19
+ "IsPublic": true,
20
+ "GroupCapacity": 20,
21
+ "RequiredSignatureDocumentTemplateId": null,
22
+ "CreatedDateTime": null,
23
+ "ModifiedDateTime": "2017-11-21T13:52:19.677",
24
+ "CreatedByPersonAliasId": null,
25
+ "ModifiedByPersonAliasId": 1122345,
26
+ "Id": 112233,
27
+ "Guid": "ed7ac06f",
28
+ "ForeignId": 44444,
29
+ "ForeignGuid": null,
30
+ "ForeignKey": "Group"
31
+ }
32
+ ]
@@ -0,0 +1,53 @@
1
+ [
2
+ {
3
+ "Campus": {
4
+ "IsSystem": false,
5
+ "Name": "Campus Name",
6
+ "Description": "A campus description here.",
7
+ "IsActive": true,
8
+ "ShortCode": "CampusName",
9
+ "Url": "http://some-url.com",
10
+ "LocationId": 12,
11
+ "PhoneNumber": "1234567890",
12
+ "LeaderPersonAliasId": null,
13
+ "ServiceTimes": "Service Times Here",
14
+ "CreatedDateTime": null,
15
+ "ModifiedDateTime": "2017-07-26T14:41:58.103",
16
+ "CreatedByPersonAliasId": null,
17
+ "ModifiedByPersonAliasId": 12,
18
+ "Id": 1,
19
+ "Guid": "76882ae3",
20
+ "ForeignId": 1,
21
+ "ForeignGuid": null,
22
+ "ForeignKey": null
23
+ },
24
+ "IsSystem": false,
25
+ "ParentGroupId": null,
26
+ "GroupTypeId": 10,
27
+ "CampusId": 1,
28
+ "ScheduleId": null,
29
+ "Name": "Some Group",
30
+ "Description": null,
31
+ "IsSecurityRole": false,
32
+ "IsActive": true,
33
+ "Order": 0,
34
+ "AllowGuests": null,
35
+ "WelcomeSystemEmailId": null,
36
+ "ExitSystemEmailId": null,
37
+ "SyncDataViewId": null,
38
+ "AddUserAccountsDuringSync": null,
39
+ "MustMeetRequirementsToAddMember": null,
40
+ "IsPublic": true,
41
+ "GroupCapacity": null,
42
+ "RequiredSignatureDocumentTemplateId": null,
43
+ "CreatedDateTime": "2012-10-09T16:08:21.413",
44
+ "ModifiedDateTime": "2017-07-10T14:56:21.677",
45
+ "CreatedByPersonAliasId": null,
46
+ "ModifiedByPersonAliasId": null,
47
+ "Id": 1234,
48
+ "Guid": "6acf289a-1b54-4d3f-bf7f-0e7e8019e5e9",
49
+ "ForeignId": 123421,
50
+ "ForeignGuid": null,
51
+ "ForeignKey": "Group"
52
+ }
53
+ ]
@@ -0,0 +1,92 @@
1
+ [
2
+ {
3
+ "GroupLocations": [
4
+ {
5
+ "Location": {
6
+ "ParentLocationId": null,
7
+ "Name": "Some Location",
8
+ "IsActive": true,
9
+ "LocationTypeValueId": null,
10
+ "Street1": "123 Some St",
11
+ "Street2": "",
12
+ "City": "SomeCity",
13
+ "County": null,
14
+ "State": "HI",
15
+ "Country": "US",
16
+ "PostalCode": "12345-4532",
17
+ "Barcode": null,
18
+ "AssessorParcelId": null,
19
+ "StandardizeAttemptedDateTime": null,
20
+ "StandardizeAttemptedServiceType": null,
21
+ "StandardizeAttemptedResult": "0: Standardized",
22
+ "StandardizedDateTime": "2017-07-10T14:53:40.46",
23
+ "GeocodeAttemptedDateTime": null,
24
+ "GeocodeAttemptedServiceType": "smartystreets",
25
+ "GeocodeAttemptedResult": "3",
26
+ "GeocodedDateTime": "2017-07-10T14:56:22.337",
27
+ "IsGeoPointLocked": false,
28
+ "PrinterDeviceId": null,
29
+ "ImageId": null,
30
+ "SoftRoomThreshold": null,
31
+ "FirmRoomThreshold": null,
32
+ "Latitude": 42.96273,
33
+ "Longitude": -76.73045,
34
+ "Distance": 0,
35
+ "CreatedDateTime": "2017-07-10T14:53:40.46",
36
+ "ModifiedDateTime": "2017-07-10T14:53:40.46",
37
+ "CreatedByPersonAliasId": null,
38
+ "ModifiedByPersonAliasId": null,
39
+ "Id": 1234,
40
+ "Guid": "b92138f4",
41
+ "ForeignId": 1234578,
42
+ "ForeignGuid": null,
43
+ "ForeignKey": null
44
+ },
45
+ "GroupId": 1234,
46
+ "LocationId": 2341234,
47
+ "GroupLocationTypeValueId": 19,
48
+ "IsMailingLocation": true,
49
+ "IsMappedLocation": true,
50
+ "GroupMemberPersonAliasId": null,
51
+ "Order": 0,
52
+ "CreatedDateTime": null,
53
+ "ModifiedDateTime": null,
54
+ "CreatedByPersonAliasId": null,
55
+ "ModifiedByPersonAliasId": null,
56
+ "Id": 123233,
57
+ "Guid": "74bda620",
58
+ "ForeignId": null,
59
+ "ForeignGuid": null,
60
+ "ForeignKey": null
61
+ }
62
+ ],
63
+ "IsSystem": false,
64
+ "ParentGroupId": null,
65
+ "GroupTypeId": 10,
66
+ "CampusId": 1,
67
+ "ScheduleId": null,
68
+ "Name": "Some Group",
69
+ "Description": null,
70
+ "IsSecurityRole": false,
71
+ "IsActive": true,
72
+ "Order": 0,
73
+ "AllowGuests": null,
74
+ "WelcomeSystemEmailId": null,
75
+ "ExitSystemEmailId": null,
76
+ "SyncDataViewId": null,
77
+ "AddUserAccountsDuringSync": null,
78
+ "MustMeetRequirementsToAddMember": null,
79
+ "IsPublic": true,
80
+ "GroupCapacity": null,
81
+ "RequiredSignatureDocumentTemplateId": null,
82
+ "CreatedDateTime": "2012-10-09T16:08:21.413",
83
+ "ModifiedDateTime": "2017-07-10T14:56:21.677",
84
+ "CreatedByPersonAliasId": null,
85
+ "ModifiedByPersonAliasId": null,
86
+ "Id": 1234,
87
+ "Guid": "6acf289a-1b54-4d3f-bf7f-0e7e8019e5e9",
88
+ "ForeignId": 123421,
89
+ "ForeignGuid": null,
90
+ "ForeignKey": "Group"
91
+ }
92
+ ]