Skip to content

Commit 19ebc33

Browse files
improve update test
1 parent 3fb42b9 commit 19ebc33

File tree

1 file changed

+53
-18
lines changed

1 file changed

+53
-18
lines changed

src/integration-test/java/com/exacttarget/fuelsdk/ETDataExtensionIntegrationTest.java

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,19 @@
77
import org.junit.Test;
88

99
import java.util.List;
10+
import java.util.Optional;
1011

1112
import static com.exacttarget.fuelsdk.ETResult.Status.ERROR;
1213
import static com.exacttarget.fuelsdk.ETResult.Status.OK;
1314
import static org.junit.Assert.assertEquals;
1415
import static org.junit.Assert.assertNotNull;
16+
import static org.junit.Assert.assertTrue;
1517
import static org.junit.Assume.assumeNotNull;
1618

1719
public class ETDataExtensionIntegrationTest {
20+
private static final String DEFAULT_SOURCE_LOCALE = "en";
21+
private static final String TARGET_LOCALE = "de-DE";
22+
private static final String LANGUAGE_COLUMN_NAME = "User_Language__c";
1823

1924
private ETClient client;
2025

@@ -51,12 +56,12 @@ public void shouldReturnRowsForDataExtensionIfExternalKeyWithoutSpaces() throws
5156
ETDataExtension dataExtension = new ETDataExtension();
5257
dataExtension.setName(name);
5358
dataExtension.setKey(key);
54-
dataExtension.addColumn("ID", true);
59+
dataExtension.addColumn(LANGUAGE_COLUMN_NAME, true);
5560

5661
client.create(dataExtension);
5762

5863
ETDataExtensionRow row = new ETDataExtensionRow();
59-
row.setColumn("ID", "test ID");
64+
row.setColumn(LANGUAGE_COLUMN_NAME, DEFAULT_SOURCE_LOCALE);
6065
dataExtension.insert(row);
6166

6267
List<ETDataExtensionRow> rows = dataExtension.select().getObjects();
@@ -76,18 +81,18 @@ public void shouldNotInsertRowIfDuplicateKeyIgnoreCase() throws Exception {
7681
ETDataExtension dataExtension = new ETDataExtension();
7782
dataExtension.setName("Test name" + RandomStringUtils.random(5));
7883
dataExtension.setKey("Test_key" + RandomUtils.nextInt());
79-
dataExtension.addColumn("ID", true);
84+
dataExtension.addColumn(LANGUAGE_COLUMN_NAME, true);
8085

8186
client.create(dataExtension);
8287

8388
ETDataExtensionRow row = new ETDataExtensionRow();
84-
row.setColumn("ID", "test-ID");
89+
row.setColumn(LANGUAGE_COLUMN_NAME, TARGET_LOCALE);
8590
ETResponse<ETDataExtensionRow> response = dataExtension.insert(row);
8691
assertNotNull(response.getRequestId());
8792
assertEquals(OK, response.getStatus());
8893

8994
row = new ETDataExtensionRow();
90-
row.setColumn("ID", "test-id");
95+
row.setColumn(LANGUAGE_COLUMN_NAME, TARGET_LOCALE.toLowerCase());
9196
response = dataExtension.insert(row);
9297
assertNotNull(response.getRequestId());
9398
assertEquals(ERROR, response.getStatus());
@@ -101,34 +106,64 @@ public void shouldUpdate() throws Exception {
101106
ETDataExtension dataExtension = new ETDataExtension();
102107
dataExtension.setName("Test name" + RandomStringUtils.random(5));
103108
dataExtension.setKey("Test_key" + RandomUtils.nextInt());
104-
dataExtension.addColumn("ID", true);
109+
dataExtension.addColumn(LANGUAGE_COLUMN_NAME, true);
105110
dataExtension.addColumn("test column");
106111

107112
client.create(dataExtension);
108113

109-
ETDataExtensionRow row = new ETDataExtensionRow();
110-
row.setColumn("ID", "id");
111-
row.setColumn("test column", testColumnValue);
112-
ETResponse<ETDataExtensionRow> response = dataExtension.insert(row);
114+
ETDataExtensionRow insertedRow = new ETDataExtensionRow();
115+
insertedRow.setColumn(LANGUAGE_COLUMN_NAME, DEFAULT_SOURCE_LOCALE);
116+
insertedRow.setColumn("test column", testColumnValue);
117+
ETResponse<ETDataExtensionRow> response = dataExtension.insert(insertedRow);
118+
assertNotNull(response.getRequestId());
119+
assertEquals(OK, response.getStatus());
120+
121+
insertedRow = new ETDataExtensionRow();
122+
insertedRow.setColumn(LANGUAGE_COLUMN_NAME, TARGET_LOCALE);
123+
insertedRow.setColumn("test column", testColumnValue);
124+
response = dataExtension.insert(insertedRow);
113125
assertNotNull(response.getRequestId());
114126
assertEquals(OK, response.getStatus());
115127

116128
List<ETDataExtensionRow> rows = dataExtension.select().getObjects();
117129
assertNotNull(rows);
118-
assertEquals(1, rows.size());
119-
assertEquals(testColumnValue, rows.get(0).getColumn("test column"));
130+
assertEquals(2, rows.size());
131+
Optional<ETDataExtensionRow> foundRow = getDataExtensionRowByLanguage(rows, TARGET_LOCALE);
132+
assertTrue(foundRow.isPresent());
133+
assertEquals(testColumnValue, foundRow.get().getColumn("test column"));
120134

121-
row = new ETDataExtensionRow();
122-
row.setColumn("ID", "id");
123-
row.setColumn("test column", updatedTestColumnValue);
135+
// Do translation scenario
136+
final ETDataExtensionRow row = foundRow.get();
137+
ETDataExtensionRow updatedRow = new ETDataExtensionRow();
138+
// Copy all columns except primary key for serialization to Smartling
139+
row.getColumnNames().stream().filter(cName -> !"ID".equalsIgnoreCase(cName)).forEach(cName -> updatedRow.setColumn(cName, row.getColumn(cName)));
140+
141+
// Update with translated value
142+
updatedRow.setColumn("test column", updatedTestColumnValue);
124143

125-
response = dataExtension.update(row);
144+
// Found existed row for given locale
145+
rows = dataExtension.select().getObjects();
146+
foundRow = getDataExtensionRowByLanguage(rows, TARGET_LOCALE);
147+
assertTrue(foundRow.isPresent());
148+
final ETDataExtensionRow originalRow = foundRow.get();
149+
// Copy translated columns
150+
updatedRow.getColumnNames().forEach(cName -> originalRow.setColumn(cName, updatedRow.getColumn(cName)));
151+
152+
// Update row in sfmc
153+
response = dataExtension.update(originalRow);
126154
assertNotNull(response.getRequestId());
127155
assertEquals(OK, response.getStatus());
128156

129157
rows = dataExtension.select().getObjects();
130158
assertNotNull(rows);
131-
assertEquals(1, rows.size());
132-
assertEquals(updatedTestColumnValue, rows.get(0).getColumn("test column"));
159+
assertEquals(2, rows.size());
160+
foundRow = getDataExtensionRowByLanguage(rows, TARGET_LOCALE);
161+
assertTrue(foundRow.isPresent());
162+
assertEquals(updatedTestColumnValue, foundRow.get().getColumn("test column"));
163+
}
164+
165+
private static Optional<ETDataExtensionRow> getDataExtensionRowByLanguage(List<ETDataExtensionRow> rows, String language)
166+
{
167+
return rows.stream().filter(row -> language.equals(row.getColumn(LANGUAGE_COLUMN_NAME))).findFirst();
133168
}
134169
}

0 commit comments

Comments
 (0)