Skip to content

Commit a9a7392

Browse files
committed
chore(rc): Refactor RC integration tests
1 parent 9862c55 commit a9a7392

File tree

1 file changed

+119
-43
lines changed

1 file changed

+119
-43
lines changed

src/test/java/com/google/firebase/remoteconfig/FirebaseRemoteConfigIT.java

Lines changed: 119 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -42,89 +42,133 @@ public class FirebaseRemoteConfigIT {
4242

4343
private static FirebaseRemoteConfig remoteConfig;
4444

45-
private static final long timestamp = System.currentTimeMillis();
46-
47-
private static final Map<String, Parameter> PARAMETERS = ImmutableMap.of(
48-
"welcome_message_text", new Parameter()
49-
.setDefaultValue(ParameterValue
50-
.of(String.format("welcome to app %s", timestamp)))
51-
.setConditionalValues(ImmutableMap.<String, ParameterValue>of(
52-
"ios_en",
53-
ParameterValue.of(String.format("welcome to app en %s", timestamp))
54-
))
55-
.setDescription("text for welcome message!"),
56-
"header_text", new Parameter()
57-
.setDefaultValue(ParameterValue.inAppDefault()));
58-
59-
private static final Map<String, ParameterGroup> PARAMETER_GROUPS = ImmutableMap.of(
60-
"new menu", new ParameterGroup()
61-
.setDescription(String.format("New Menu %s", timestamp))
62-
.setParameters(ImmutableMap.of(
63-
"pumpkin_spice_season", new Parameter()
64-
.setDefaultValue(ParameterValue.of("true"))
65-
.setDescription("Whether it's currently pumpkin spice season."))
66-
));
67-
6845
private static final List<Condition> CONDITIONS = ImmutableList.of(
6946
new Condition("ios_en", "device.os == 'ios' && device.country in ['us', 'uk']")
7047
.setTagColor(TagColor.INDIGO),
7148
new Condition("android_en",
7249
"device.os == 'android' && device.country in ['us', 'uk']"));
7350

74-
private static final Version VERSION = Version
75-
.withDescription(String.format("promo config %s", timestamp));
76-
7751
@BeforeClass
7852
public static void setUpClass() {
7953
remoteConfig = FirebaseRemoteConfig.getInstance(IntegrationTestUtils.ensureDefaultApp());
8054
}
8155

8256
@Test
83-
public void testTemplateOperations() throws FirebaseRemoteConfigException {
57+
public void testValidateTemplate() throws FirebaseRemoteConfigException {
58+
final Template inputTemplate = remoteConfig.getTemplate();
59+
final Map<String, Parameter> expectedParameters = getParameters();
60+
final Map<String, ParameterGroup> expectedParameterGroups = getParameterGroups();
61+
final Version expectedVersion = getVersion();
62+
inputTemplate.setParameters(expectedParameters)
63+
.setParameterGroups(expectedParameterGroups)
64+
.setConditions(CONDITIONS)
65+
.setVersion(expectedVersion);
66+
67+
Template validatedTemplate = remoteConfig.validateTemplate(inputTemplate);
68+
69+
assertEquals(inputTemplate, validatedTemplate);
70+
}
71+
72+
@Test
73+
public void testPublishTemplate() throws FirebaseRemoteConfigException {
8474
// get template to fetch the active template with correct etag
8575
final Template oldTemplate = remoteConfig.getTemplate();
8676
final Template inputTemplate = Template.fromJSON(oldTemplate.toJSON());
87-
final String versionNumber = oldTemplate.getVersion().getVersionNumber();
88-
77+
final Map<String, Parameter> parameters = getParameters();
78+
final Map<String, ParameterGroup> parameterGroups = getParameterGroups();
79+
final Version version = getVersion();
8980
// modify template
90-
inputTemplate.setParameters(PARAMETERS)
91-
.setParameterGroups(PARAMETER_GROUPS)
81+
inputTemplate.setParameters(parameters)
82+
.setParameterGroups(parameterGroups)
9283
.setConditions(CONDITIONS)
93-
.setVersion(VERSION);
94-
95-
// validate template
96-
Template validatedTemplate = remoteConfig.validateTemplate(inputTemplate);
97-
assertEquals(inputTemplate.getETag(), validatedTemplate.getETag());
98-
assertEquals(PARAMETERS, validatedTemplate.getParameters());
99-
assertEquals(PARAMETER_GROUPS, validatedTemplate.getParameterGroups());
100-
assertEquals(CONDITIONS, validatedTemplate.getConditions());
101-
assertEquals(VERSION, validatedTemplate.getVersion());
84+
.setVersion(version);
10285

10386
// publish template
10487
Template publishedTemplate = remoteConfig.publishTemplate(inputTemplate);
88+
10589
assertNotEquals(inputTemplate.getETag(), publishedTemplate.getETag());
106-
assertEquals(PARAMETERS, publishedTemplate.getParameters());
107-
assertEquals(PARAMETER_GROUPS, publishedTemplate.getParameterGroups());
90+
assertEquals(parameters, publishedTemplate.getParameters());
91+
assertEquals(parameterGroups, publishedTemplate.getParameterGroups());
10892
assertEquals(CONDITIONS, publishedTemplate.getConditions());
109-
assertNotEquals(VERSION, publishedTemplate.getVersion());
93+
assertNotEquals(version, publishedTemplate.getVersion());
94+
}
95+
96+
@Test
97+
public void testGetTemplate() throws FirebaseRemoteConfigException {
98+
// get template to fetch the active template with correct etag
99+
// modify and publish a known template to test get template operation.
100+
final Template oldTemplate = remoteConfig.getTemplate();
101+
final Template inputTemplate = Template.fromJSON(oldTemplate.toJSON());
102+
final Map<String, Parameter> parameters = getParameters();
103+
final Map<String, ParameterGroup> parameterGroups = getParameterGroups();
104+
final Version version = getVersion();
105+
inputTemplate.setParameters(parameters)
106+
.setParameterGroups(parameterGroups)
107+
.setConditions(CONDITIONS)
108+
.setVersion(version);
109+
// publish a known template
110+
Template publishedTemplate = remoteConfig.publishTemplate(inputTemplate);
110111

111112
// get template
112113
Template currentTemplate = remoteConfig.getTemplate();
114+
113115
assertEquals(publishedTemplate, currentTemplate);
116+
}
117+
118+
@Test
119+
public void testGetTemplateAtVersion() throws FirebaseRemoteConfigException {
120+
// get template to fetch the active template with correct etag.
121+
// store the template version number.
122+
// publish a new template to test get template at version operation.
123+
final Template oldTemplate = remoteConfig.getTemplate();
124+
final Template inputTemplate = Template.fromJSON(oldTemplate.toJSON());
125+
final String versionNumber = oldTemplate.getVersion().getVersionNumber();
126+
final Map<String, Parameter> parameters = getParameters();
127+
final Map<String, ParameterGroup> parameterGroups = getParameterGroups();
128+
final Version version = getVersion();
129+
inputTemplate.setParameters(parameters)
130+
.setParameterGroups(parameterGroups)
131+
.setConditions(CONDITIONS)
132+
.setVersion(version);
133+
// publish a new template
134+
Template publishedTemplate = remoteConfig.publishTemplate(inputTemplate);
114135

115136
// get template at version
116137
Template atVersionTemplate = remoteConfig.getTemplateAtVersion(versionNumber);
138+
117139
assertEquals(oldTemplate, atVersionTemplate);
118140
assertEquals(versionNumber, atVersionTemplate.getVersion().getVersionNumber());
141+
assertNotEquals(publishedTemplate, atVersionTemplate);
142+
}
143+
144+
@Test
145+
public void testRollbackTemplate() throws FirebaseRemoteConfigException {
146+
// get template to fetch the active template with correct etag.
147+
// store the template version number to rollback.
148+
final Template oldTemplate = remoteConfig.getTemplate();
149+
final Template inputTemplate = Template.fromJSON(oldTemplate.toJSON());
150+
final String versionNumber = oldTemplate.getVersion().getVersionNumber();
151+
final Map<String, Parameter> parameters = getParameters();
152+
final Map<String, ParameterGroup> parameterGroups = getParameterGroups();
153+
final Version version = getVersion();
154+
inputTemplate.setParameters(parameters)
155+
.setParameterGroups(parameterGroups)
156+
.setConditions(CONDITIONS)
157+
.setVersion(version);
158+
// publish a new template before rolling back to versionNumber
159+
Template publishedTemplate = remoteConfig.publishTemplate(inputTemplate);
119160

120161
// rollback template
121162
Template rolledBackTemplate = remoteConfig.rollback(versionNumber);
163+
122164
assertEquals(String.format("Rollback to version %s", versionNumber),
123165
rolledBackTemplate.getVersion().getDescription());
124166

125167
// get template to verify rollback
126168
Template activeTemplate = remoteConfig.getTemplate();
169+
127170
assertEquals(rolledBackTemplate, activeTemplate);
171+
assertNotEquals(publishedTemplate, activeTemplate);
128172
}
129173

130174
@Test
@@ -196,4 +240,36 @@ public void onSuccess(ListVersionsPage result) {
196240
assertEquals(versions.size(), collected.get());
197241
assertNull(error.get());
198242
}
243+
244+
private Map<String, Parameter> getParameters() {
245+
final long timestamp = System.currentTimeMillis();
246+
return ImmutableMap.of(
247+
"welcome_message_text", new Parameter()
248+
.setDefaultValue(ParameterValue
249+
.of(String.format("welcome to app %s", timestamp)))
250+
.setConditionalValues(ImmutableMap.<String, ParameterValue>of(
251+
"ios_en",
252+
ParameterValue.of(String.format("welcome to app en %s", timestamp))
253+
))
254+
.setDescription("text for welcome message!"),
255+
"header_text", new Parameter()
256+
.setDefaultValue(ParameterValue.inAppDefault()));
257+
}
258+
259+
private Map<String, ParameterGroup> getParameterGroups() {
260+
final long timestamp = System.currentTimeMillis();
261+
return ImmutableMap.of(
262+
"new menu", new ParameterGroup()
263+
.setDescription(String.format("New Menu %s", timestamp))
264+
.setParameters(ImmutableMap.of(
265+
"pumpkin_spice_season", new Parameter()
266+
.setDefaultValue(ParameterValue.of("true"))
267+
.setDescription("Whether it's currently pumpkin spice season."))
268+
));
269+
}
270+
271+
private Version getVersion() {
272+
final long timestamp = System.currentTimeMillis();
273+
return Version.withDescription(String.format("promo config %s", timestamp));
274+
}
199275
}

0 commit comments

Comments
 (0)