Skip to content

Commit 4c47488

Browse files
committed
remove user from company fix
1 parent aa5b3bc commit 4c47488

File tree

2 files changed

+103
-79
lines changed

2 files changed

+103
-79
lines changed
Lines changed: 60 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,68 @@
11
package io.intercom.api;
22

3+
import java.util.Iterator;
4+
import java.util.List;
35

46
import com.google.common.collect.Lists;
57

6-
import java.util.ArrayList;
7-
import java.util.List;
8-
98
class CompanyUpdateBuilder {
109

11-
/**
12-
* Provide restrictions on the company data that can be sent via a user update
13-
*/
14-
static List<CompanyWithStringPlan> buildUserUpdateCompanies(CompanyCollection add, CompanyCollection remove) {
15-
16-
final ArrayList<CompanyWithStringPlan> updatableCompanies = Lists.newArrayList();
17-
if (add != null) {
18-
final List<Company> companies = add.getPage();
19-
for (Company company : companies) {
20-
updatableCompanies.add(prepareUpdatableCompany(company));
21-
}
22-
}
23-
24-
if (remove != null) {
25-
final List<Company> companies = remove.getPage();
26-
for (Company company : companies) {
27-
updatableCompanies.add(prepareUpdatableCompany(company).setRemove(Boolean.TRUE));
28-
}
29-
}
30-
31-
return updatableCompanies;
32-
}
33-
34-
private static CompanyWithStringPlan prepareUpdatableCompany(Company company) {
35-
final CompanyWithStringPlan updatableCompany = new CompanyWithStringPlan();
36-
updatableCompany.setCompanyID(company.getCompanyID());
37-
updatableCompany.setName(company.getName());
38-
updatableCompany.setSessionCount(company.getSessionCount());
39-
updatableCompany.setMonthlySpend(company.getMonthlySpend());
40-
updatableCompany.setRemoteCreatedAt(company.getRemoteCreatedAt());
41-
if (company.getPlan() != null) {
42-
updatableCompany.setPlan(company.getPlan().getName());
43-
}
44-
return updatableCompany;
45-
}
10+
/**
11+
* Provide restrictions on the company data that can be sent via a user
12+
* update
13+
*/
14+
static List<CompanyWithStringPlan> buildUserUpdateCompanies(CompanyCollection add, CompanyCollection remove) {
15+
16+
final List<CompanyWithStringPlan> updatableCompanies = Lists.newArrayList();
17+
if (add != null) {
18+
final List<Company> companies = add.getPage();
19+
for (Company company : companies) {
20+
updatableCompanies.add(prepareUpdatableCompany(company));
21+
}
22+
}
23+
24+
if (remove != null) {
25+
final List<Company> companies = remove.getPage();
26+
27+
for (Company company : companies) {
28+
removeCompanyFromAddedList(updatableCompanies, company);
29+
updatableCompanies.add(prepareUpdatableCompany(company).setRemove(Boolean.TRUE));
30+
}
31+
}
32+
33+
return updatableCompanies;
34+
}
35+
36+
private static void removeCompanyFromAddedList(List<CompanyWithStringPlan> companies, Company company) {
37+
Iterator<CompanyWithStringPlan> companyIterator = companies.iterator();
38+
39+
while (companyIterator.hasNext()) {
40+
CompanyWithStringPlan companyWithStringPlan = companyIterator.next();
41+
// TODO add equals and toHash methods to CompanyWithStringPlan and
42+
// use it here
43+
if (companyWithStringPlan.getId() != null && company.getId() != null && companyWithStringPlan.getId().equals(company.getId())) {
44+
companyIterator.remove();
45+
break;
46+
}
47+
48+
if (companyWithStringPlan.getCompanyID() != null && company.getCompanyID() != null && companyWithStringPlan.getCompanyID().equals(company.getCompanyID())) {
49+
companyIterator.remove();
50+
break;
51+
}
52+
}
53+
}
54+
55+
private static CompanyWithStringPlan prepareUpdatableCompany(Company company) {
56+
final CompanyWithStringPlan updatableCompany = new CompanyWithStringPlan();
57+
updatableCompany.setId(company.getId());
58+
updatableCompany.setCompanyID(company.getCompanyID());
59+
updatableCompany.setName(company.getName());
60+
updatableCompany.setSessionCount(company.getSessionCount());
61+
updatableCompany.setMonthlySpend(company.getMonthlySpend());
62+
updatableCompany.setRemoteCreatedAt(company.getRemoteCreatedAt());
63+
if (company.getPlan() != null) {
64+
updatableCompany.setPlan(company.getPlan().getName());
65+
}
66+
return updatableCompany;
67+
}
4668
}
Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,65 @@
11
package io.intercom.api;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import com.google.common.collect.Lists;
5-
import org.junit.BeforeClass;
6-
import org.junit.Test;
3+
import static org.junit.Assert.assertFalse;
4+
import static org.junit.Assert.assertNull;
5+
import static org.junit.Assert.assertTrue;
76

87
import java.util.List;
98

10-
import static org.junit.Assert.*;
9+
import org.junit.BeforeClass;
10+
import org.junit.Test;
11+
12+
import com.fasterxml.jackson.databind.ObjectMapper;
13+
import com.google.common.collect.Lists;
1114

1215
public class CompanyUpdateBuilderTest {
1316

14-
private static ObjectMapper mapper;
17+
private static ObjectMapper mapper;
1518

16-
@BeforeClass
17-
public static void beforeClass() {
18-
mapper = MapperSupport.objectMapper();
19-
}
19+
@BeforeClass
20+
public static void beforeClass() {
21+
mapper = MapperSupport.objectMapper();
22+
}
2023

24+
@Test
25+
public void testRemove() throws Exception {
2126

22-
@Test
23-
public void testRemove() throws Exception {
27+
final Company bacon = new Company().setCompanyID("bacon");
28+
final Company pancake = new Company().setCompanyID("pancake");
2429

25-
final Company bacon = new Company().setCompanyID("bacon");
26-
final Company pancake = new Company().setCompanyID("pancake");
30+
final List<CompanyWithStringPlan> cos = CompanyUpdateBuilder.buildUserUpdateCompanies(//
31+
new CompanyCollection(Lists.newArrayList(bacon, pancake)),//
32+
new CompanyCollection(Lists.newArrayList(bacon)));
2733

28-
final List<CompanyWithStringPlan> cos = CompanyUpdateBuilder.buildUserUpdateCompanies(
29-
new CompanyCollection(Lists.newArrayList(pancake)),
30-
new CompanyCollection(Lists.newArrayList(bacon))
31-
);
34+
Boolean baconIsRemoved = null;
35+
Boolean pancakeIsRemoved = null;
3236

33-
Boolean baconIsRemoved = null;
34-
Boolean pancakeIsRemoved = null;
37+
CompanyWithStringPlan baconCo = null;
38+
CompanyWithStringPlan pancakeCo = null;
3539

36-
CompanyWithStringPlan baconCo = null;
37-
CompanyWithStringPlan pancakeCo = null;
40+
for (CompanyWithStringPlan co : cos) {
41+
if (co.getCompanyID().equals("pancake")) {
42+
pancakeIsRemoved = co.getRemove();
43+
pancakeCo = co;
44+
}
3845

39-
for (CompanyWithStringPlan co : cos) {
40-
if (co.getCompanyID().equals("pancake")) {
41-
pancakeIsRemoved = co.getRemove();
42-
pancakeCo = co;
43-
}
46+
if (co.getCompanyID().equals("bacon")) {
47+
baconIsRemoved = co.getRemove();
48+
baconCo = co;
49+
}
4450

45-
if (co.getCompanyID().equals("bacon")) {
46-
baconIsRemoved = co.getRemove();
47-
baconCo = co;
48-
}
51+
}
52+
assertNull(pancakeIsRemoved);
53+
assertTrue(baconIsRemoved);
4954

50-
}
51-
assertNull(pancakeIsRemoved);
52-
assertTrue(baconIsRemoved);
55+
final String pancakeJson = mapper.writeValueAsString(pancakeCo);
56+
assertFalse(pancakeJson.contains("remove"));
57+
assertFalse(pancakeJson.contains("true"));
5358

54-
final String pancakeJson = mapper.writeValueAsString(pancakeCo);
55-
assertFalse(pancakeJson.contains("remove"));
56-
assertFalse(pancakeJson.contains("true"));
59+
final String baconJson = mapper.writeValueAsString(baconCo);
60+
assertTrue(baconJson.contains("remove"));
61+
assertTrue(baconJson.contains("true"));
5762

58-
final String baconJson = mapper.writeValueAsString(baconCo);
59-
assertTrue(baconJson.contains("remove"));
60-
assertTrue(baconJson.contains("true"));
61-
}
63+
}
6264

6365
}

0 commit comments

Comments
 (0)