Skip to content

Commit 9f7b155

Browse files
authored
test: skip feature version checking in the e2e tests (#24)
1 parent 7afe290 commit 9f7b155

13 files changed

+77
-57
lines changed

Diff for: example/integration_test/bucketeer_flutter_sdk_test.dart

+32-28
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ void main() async {
6262
});
6363

6464
testWidgets('testStringVariationDetail', (WidgetTester _) async {
65-
expect(
66-
await BKTClient.instance
65+
assertEvaluationDetails(
66+
actual: await BKTClient.instance
6767
.stringVariationDetails(featureIdString, defaultValue: "default"),
68-
const BKTEvaluationDetails<String>(
68+
expected: const BKTEvaluationDetails<String>(
6969
featureId: featureIdString,
7070
featureVersion: 4,
7171
userId: userId,
@@ -74,10 +74,11 @@ void main() async {
7474
variationValue: "value-1",
7575
reason: "DEFAULT"));
7676

77-
expect(
78-
await BKTClient.instance.objectVariationDetails(featureIdString,
77+
assertEvaluationDetails(
78+
actual: await BKTClient.instance.objectVariationDetails(
79+
featureIdString,
7980
defaultValue: const BKTString("default")),
80-
const BKTEvaluationDetails<BKTValue>(
81+
expected: const BKTEvaluationDetails<BKTValue>(
8182
featureId: featureIdString,
8283
featureVersion: 4,
8384
userId: userId,
@@ -110,10 +111,10 @@ void main() async {
110111
});
111112

112113
testWidgets('testDoubleVariationDetail', (WidgetTester _) async {
113-
expect(
114-
await BKTClient.instance
114+
assertEvaluationDetails(
115+
actual: await BKTClient.instance
115116
.doubleVariationDetails(featureIdDouble, defaultValue: 1.0),
116-
const BKTEvaluationDetails<double>(
117+
expected: const BKTEvaluationDetails<double>(
117118
featureId: featureIdDouble,
118119
featureVersion: 3,
119120
userId: userId,
@@ -122,10 +123,11 @@ void main() async {
122123
variationValue: 2.1,
123124
reason: "DEFAULT"));
124125

125-
expect(
126-
await BKTClient.instance.objectVariationDetails(featureIdDouble,
126+
assertEvaluationDetails(
127+
actual: await BKTClient.instance.objectVariationDetails(
128+
featureIdDouble,
127129
defaultValue: const BKTNumber(1.0)),
128-
const BKTEvaluationDetails<BKTValue>(
130+
expected: const BKTEvaluationDetails<BKTValue>(
129131
featureId: featureIdDouble,
130132
featureVersion: 3,
131133
userId: userId,
@@ -145,10 +147,10 @@ void main() async {
145147
});
146148

147149
testWidgets('testBoolVariationDetail', (WidgetTester _) async {
148-
expect(
149-
await BKTClient.instance
150+
assertEvaluationDetails(
151+
actual: await BKTClient.instance
150152
.boolVariationDetails(featureIdBoolean, defaultValue: false),
151-
const BKTEvaluationDetails<bool>(
153+
expected: const BKTEvaluationDetails<bool>(
152154
featureId: featureIdBoolean,
153155
featureVersion: 3,
154156
userId: userId,
@@ -157,10 +159,11 @@ void main() async {
157159
variationValue: true,
158160
reason: "DEFAULT"));
159161

160-
expect(
161-
await BKTClient.instance.objectVariationDetails(featureIdBoolean,
162+
assertEvaluationDetails(
163+
actual: await BKTClient.instance.objectVariationDetails(
164+
featureIdBoolean,
162165
defaultValue: const BKTBoolean(false)),
163-
const BKTEvaluationDetails<BKTValue>(
166+
expected: const BKTEvaluationDetails<BKTValue>(
164167
featureId: featureIdBoolean,
165168
featureVersion: 3,
166169
userId: userId,
@@ -180,10 +183,10 @@ void main() async {
180183
});
181184

182185
testWidgets('testIntVariationDetail', (WidgetTester _) async {
183-
expect(
184-
await BKTClient.instance
186+
assertEvaluationDetails(
187+
actual: await BKTClient.instance
185188
.intVariationDetails(featureIdInt, defaultValue: 1),
186-
const BKTEvaluationDetails<int>(
189+
expected: const BKTEvaluationDetails<int>(
187190
featureId: featureIdInt,
188191
featureVersion: 3,
189192
userId: userId,
@@ -192,10 +195,10 @@ void main() async {
192195
variationValue: 10,
193196
reason: "DEFAULT"));
194197

195-
expect(
196-
await BKTClient.instance.objectVariationDetails(featureIdInt,
198+
assertEvaluationDetails(
199+
actual: await BKTClient.instance.objectVariationDetails(featureIdInt,
197200
defaultValue: const BKTNumber(1)),
198-
const BKTEvaluationDetails<BKTValue>(
201+
expected: const BKTEvaluationDetails<BKTValue>(
199202
featureId: featureIdInt,
200203
featureVersion: 3,
201204
userId: userId,
@@ -256,7 +259,7 @@ void main() async {
256259
variationName: "variation 1",
257260
variationValue: BKTStructure({"key": BKTString("value-1")}),
258261
reason: "DEFAULT");
259-
expect(result, expected);
262+
assertEvaluationDetails(actual: result, expected: expected);
260263
});
261264

262265
testWidgets('testTrack', (WidgetTester _) async {
@@ -410,7 +413,8 @@ void main() async {
410413
group('optional configurations test', () {
411414
setUp(() {});
412415

413-
testWidgets('BKTClient should allow feature_tag to be optional', (WidgetTester _) async {
416+
testWidgets('BKTClient should allow feature_tag to be optional',
417+
(WidgetTester _) async {
414418
final config = BKTConfigBuilder()
415419
.apiKey(Constants.apiKey)
416420
.apiEndpoint(Constants.apiEndpoint)
@@ -441,12 +445,12 @@ void main() async {
441445
reason: "evaluationDetails should not be null");
442446

443447
final golang =
444-
await BKTClient.instance.evaluationDetails("feature-go-server-e2e-1");
448+
await BKTClient.instance.evaluationDetails("feature-go-server-e2e-1");
445449
expect(golang != null, true,
446450
reason: "evaluationDetails should not be null");
447451

448452
final javascript =
449-
await BKTClient.instance.evaluationDetails("feature-js-e2e-string");
453+
await BKTClient.instance.evaluationDetails("feature-js-e2e-string");
450454
expect(javascript != null, true,
451455
reason: "evaluationDetails should not be null");
452456
});

Diff for: example/integration_test/helper.dart

+13
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,16 @@ extension E2EBKTClient on BKTClient {
3737

3838
class MockEvaluationUpdateListener extends Mock
3939
implements BKTEvaluationUpdateListener {}
40+
41+
bool assertEvaluationDetails<T extends Object>({
42+
required BKTEvaluationDetails<T> actual,
43+
required BKTEvaluationDetails<T> expected,
44+
}) {
45+
return actual.featureId == expected.featureId &&
46+
actual.featureVersion == expected.featureVersion &&
47+
actual.userId == expected.userId &&
48+
actual.variationId == expected.variationId &&
49+
actual.variationName == expected.variationName &&
50+
actual.reason == expected.reason &&
51+
actual.variationValue == expected.variationValue;
52+
}

Diff for: example/lib/main.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ class _MyHomePageState extends State<MyHomePage> {
146146
}
147147

148148
Future<void> _getObjectVariation(String featureId) async {
149-
final result =
150-
await BKTClient.instance.objectVariation(featureId, defaultValue: const BKTNumber(1.0));
149+
final result = await BKTClient.instance
150+
.objectVariation(featureId, defaultValue: const BKTNumber(1.0));
151151
debugPrint('objectVariation: $result');
152152
showSnackbar(title: 'objectVariation', message: '${result.toJson()}');
153153
}
@@ -165,8 +165,8 @@ class _MyHomePageState extends State<MyHomePage> {
165165

166166
Future<void> _getJSONVariation(String featureId) async {
167167
final result =
168-
// ignore: deprecated_member_use
169-
await BKTClient.instance.jsonVariation(featureId, defaultValue: {});
168+
// ignore: deprecated_member_use
169+
await BKTClient.instance.jsonVariation(featureId, defaultValue: {});
170170
debugPrint('getJSONVariation: $result');
171171
showSnackbar(title: 'getJSONVariation', message: '$result');
172172
}

Diff for: example/pubspec.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ packages:
2323
path: ".."
2424
relative: true
2525
source: path
26-
version: "2.1.0"
26+
version: "2.1.1"
2727
characters:
2828
dependency: transitive
2929
description:

Diff for: lib/bucketeer_flutter_client_sdk.dart

+1-3
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,7 @@ class BKTClient {
8383
CallMethodParams.defaultValue: defaultValue,
8484
}),
8585
customMapping: (response) {
86-
return BKTEvaluationDetails.fromJson<bool>(
87-
response
88-
);
86+
return BKTEvaluationDetails.fromJson<bool>(response);
8987
},
9088
).onError((error, stackTrace) {
9189
debugPrint("get boolVariationDetails fail: ${error?.toString()}");

Diff for: lib/src/call_methods.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ enum CallMethods {
2626
abstract class CallMethodParams {
2727
static const featureId = 'featureId';
2828
static const defaultValue = 'defaultValue';
29-
}
29+
}

Diff for: lib/src/evaluation.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,4 @@ class BKTEvaluation extends BKTEvaluationDetails<String> {
2727
String toString() {
2828
return 'BKTEvaluation{id: $id, ${super.toString()}';
2929
}
30-
}
30+
}

Diff for: lib/src/evaluation_details.dart

+5-3
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ class BKTEvaluationDetails<T extends Object> {
4545

4646
if (variationValue is Map) {
4747
final variationValueMap = variationValue as Map;
48-
final otherVariationValueMap = otherAsBKTEvaluationDetails.variationValue as Map;
49-
isVariationValueEqual = mapEquals(variationValueMap, otherVariationValueMap);
48+
final otherVariationValueMap =
49+
otherAsBKTEvaluationDetails.variationValue as Map;
50+
isVariationValueEqual =
51+
mapEquals(variationValueMap, otherVariationValueMap);
5052
}
5153

5254
return isSameType &&
@@ -109,4 +111,4 @@ class BKTEvaluationDetails<T extends Object> {
109111
}
110112

111113
static const evaluationDetailsDefaultReason = 'CLIENT';
112-
}
114+
}

Diff for: lib/src/value.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@ class BKTStructure extends BKTValue {
178178
@override
179179
bool operator ==(Object other) {
180180
final bool isIdentical = identical(this, other);
181-
final bool isSameType = other is BKTStructure && runtimeType == other.runtimeType;
181+
final bool isSameType =
182+
other is BKTStructure && runtimeType == other.runtimeType;
182183
final bool isMapEqual = isSameType && mapEquals(value, (other).value);
183184

184185
return isIdentical || isMapEqual;

Diff for: lib/src/value_parser.dart

+1-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ abstract class TypeConverter<T> {
55
}
66

77
class DefaultTypeConverter<T> implements TypeConverter<T> {
8-
98
@override
109
T parse(dynamic) {
1110
// Throw runtime exception
@@ -14,11 +13,10 @@ class DefaultTypeConverter<T> implements TypeConverter<T> {
1413
}
1514

1615
class BKTValueTypeConverter implements TypeConverter<BKTValue> {
17-
1816
const BKTValueTypeConverter();
1917

2018
@override
2119
BKTValue parse(dynamic) {
2220
return BKTValue.fromJson(dynamic);
2321
}
24-
}
22+
}

Diff for: test/bucketeer_test.dart

+6-4
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,9 @@ void main() {
314314

315315
test("jsonVariation", () async {
316316
expect(
317-
// ignore: deprecated_member_use_from_same_package
318-
(await BKTClient.instance.jsonVariation('jsonVariation', defaultValue: {})),
317+
(await BKTClient.instance
318+
// ignore: deprecated_member_use_from_same_package
319+
.jsonVariation('jsonVariation', defaultValue: {})),
319320
Map<String, dynamic>.from(
320321
{
321322
'id': 'id123',
@@ -537,8 +538,9 @@ void main() {
537538

538539
test("jsonVariation", () async {
539540
expect(
540-
// ignore: deprecated_member_use_from_same_package
541-
(await BKTClient.instance.jsonVariation('jsonVariationNotFound', defaultValue: {
541+
(await BKTClient.instance
542+
// ignore: deprecated_member_use_from_same_package
543+
.jsonVariation('jsonVariationNotFound', defaultValue: {
542544
'id': 'id123',
543545
})),
544546
Map<String, dynamic>.from(

Diff for: test/bucketeer_value_equality_test.dart

+9-5
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,18 @@ void main() {
4242

4343
test('BKTStructure equality', () {
4444
expect(
45-
const BKTStructure({'key1': BKTString('value1'), 'key2': BKTNumber(2.0)}),
46-
equals(const BKTStructure({'key1': BKTString('value1'), 'key2': BKTNumber(2.0)})),
45+
const BKTStructure(
46+
{'key1': BKTString('value1'), 'key2': BKTNumber(2.0)}),
47+
equals(const BKTStructure(
48+
{'key1': BKTString('value1'), 'key2': BKTNumber(2.0)})),
4749
);
4850

4951
// Test un-order
5052
expect(
51-
const BKTStructure({'key2': BKTNumber(2.0), 'key1': BKTString('value1')}),
52-
equals(const BKTStructure({'key1': BKTString('value1'), 'key2': BKTNumber(2.0)})),
53+
const BKTStructure(
54+
{'key2': BKTNumber(2.0), 'key1': BKTString('value1')}),
55+
equals(const BKTStructure(
56+
{'key1': BKTString('value1'), 'key2': BKTNumber(2.0)})),
5357
);
5458
expect(
5559
const BKTStructure({'key1': BKTBoolean(true)}),
@@ -70,4 +74,4 @@ void main() {
7074
expect(const BKTNull(), isNot(equals(const BKTString('null'))));
7175
});
7276
});
73-
}
77+
}

Diff for: test/bucketeer_value_test.dart

+1-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ void main() {
2424
var result3 = BKTValue.fromJson("true");
2525
expect(result3, isA<BKTString>());
2626
expect((result3 as BKTString).value, equals("true"));
27-
2827
});
2928

3029
test('should return BKTNumber when given a num', () {
@@ -76,7 +75,6 @@ void main() {
7675

7776
expect(list.value[3], isA<BKTNull>());
7877

79-
8078
expect((result).asDouble(), equals(null));
8179
expect((result).asInteger(), equals(null));
8280

@@ -138,4 +136,4 @@ void main() {
138136
expect(innerStructure.value['innerBoolean'], isA<BKTBoolean>());
139137
});
140138
});
141-
}
139+
}

0 commit comments

Comments
 (0)