TF-3042 Unit test StringToPublicAssetExtension
This commit is contained in:
+105
@@ -0,0 +1,105 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:tmail_ui_user/features/public_asset/domain/extensions/string_to_public_asset_extension.dart';
|
||||
|
||||
void main() {
|
||||
group('string to public asset extension test:', () {
|
||||
test(
|
||||
'should convert string to public assets '
|
||||
'when image tags have public-asset-id attribute',
|
||||
() {
|
||||
// arrange
|
||||
const publicAssetIdValue1 = 'public-asset-1';
|
||||
const publicAssetIdValue2 = 'public-asset-2';
|
||||
const htmlString = '<img src="public-asset-1" public-asset-id="$publicAssetIdValue1"/>'
|
||||
'<img src="public-asset-2" public-asset-id="$publicAssetIdValue2"/>';
|
||||
|
||||
// act
|
||||
final publicAssetIds = htmlString.publicAssetIdsFromHtmlContent;
|
||||
|
||||
// assert
|
||||
expect(publicAssetIds, equals([Id(publicAssetIdValue1), Id(publicAssetIdValue2)]));
|
||||
});
|
||||
|
||||
test(
|
||||
'should convert string to nothing '
|
||||
'when image tags do not have public-asset-id attribute',
|
||||
() {
|
||||
// arrange
|
||||
const htmlString = '<img src="public-asset-1"/><img src="public-asset-2"/>';
|
||||
|
||||
// act
|
||||
final publicAssetIds = htmlString.publicAssetIdsFromHtmlContent;
|
||||
|
||||
// assert
|
||||
expect(publicAssetIds, isEmpty);
|
||||
});
|
||||
|
||||
test(
|
||||
'should only convert string to public assets '
|
||||
'when image tags have public-asset-id attribute',
|
||||
() {
|
||||
// arrange
|
||||
const publicAssetIdValue1 = 'public-asset-1';
|
||||
const htmlString = '<img src="public-asset-1" public-asset-id="$publicAssetIdValue1"/>'
|
||||
'<img src="public-asset-2"/>';
|
||||
|
||||
// act
|
||||
final publicAssetIds = htmlString.publicAssetIdsFromHtmlContent;
|
||||
|
||||
// assert
|
||||
expect(publicAssetIds, equals([Id(publicAssetIdValue1)]));
|
||||
});
|
||||
|
||||
group('should convert string to public assets in various edge cases:', () {
|
||||
test(
|
||||
'when there are two "public-asset-id" attributes in the same image tag',
|
||||
() {
|
||||
// arrange
|
||||
const publicAssetIdValue1 = 'public-asset-1';
|
||||
const publicAssetIdValue2 = 'public-asset-2';
|
||||
const htmlString = '<img src="public-asset-1" '
|
||||
'public-asset-id="$publicAssetIdValue1" '
|
||||
'public-asset-id="$publicAssetIdValue2"/>';
|
||||
|
||||
// act
|
||||
final publicAssetIds = htmlString.publicAssetIdsFromHtmlContent;
|
||||
|
||||
// assert
|
||||
expect(publicAssetIds, equals([Id(publicAssetIdValue1)]));
|
||||
});
|
||||
|
||||
test(
|
||||
'only with the "public-asset-id" attribute name',
|
||||
() {
|
||||
// arrange
|
||||
const publicAssetIdValue1 = 'public-asset-1';
|
||||
const publicAssetIdValue2 = 'public-asset-2';
|
||||
const htmlString = '<img src="public-asset-1" '
|
||||
'public-at-id="$publicAssetIdValue1" '
|
||||
'public-asset-id="$publicAssetIdValue2"/>';
|
||||
|
||||
// act
|
||||
final publicAssetIds = htmlString.publicAssetIdsFromHtmlContent;
|
||||
|
||||
// assert
|
||||
expect(publicAssetIds, equals([Id(publicAssetIdValue2)]));
|
||||
});
|
||||
});
|
||||
|
||||
test(
|
||||
'should throw invalid argument exception '
|
||||
'when the public asset id contains invalid characters',
|
||||
() {
|
||||
// arrange
|
||||
const publicAssetIdValue1 = r'#$52323';
|
||||
const htmlString = '<img src="public-asset-1" public-asset-id="$publicAssetIdValue1"/>';
|
||||
|
||||
// assert
|
||||
expect(
|
||||
() => htmlString.publicAssetIdsFromHtmlContent,
|
||||
throwsA(isA<ArgumentError>())
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user