mirror of
https://github.com/foss42/apidash.git
synced 2025-06-24 00:42:55 +08:00
Merge branch 'foss42:main' into add-doc-gsoc
This commit is contained in:
58
integration_test/desktop/req_editor_test.dart
Normal file
58
integration_test/desktop/req_editor_test.dart
Normal file
@ -0,0 +1,58 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:spot/spot.dart';
|
||||
import 'package:apidash/app.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import '../../test/extensions/widget_tester_extensions.dart';
|
||||
import '../test_helper.dart';
|
||||
|
||||
void main() async {
|
||||
const reqName = "test-req-name";
|
||||
const testEndpoint = "https://api.apidash.dev/humanize/social";
|
||||
const paramKey = "num";
|
||||
const paramValue = "870000";
|
||||
const headerKey = "Content-Type";
|
||||
const headerValue = "application/json";
|
||||
const expectedCurlCode = "curl --url '$testEndpoint?$paramKey=$paramValue'";
|
||||
const expectedRawCode = '''{
|
||||
"data": "870K"
|
||||
}''';
|
||||
|
||||
await ApidashTestHelper.initialize(
|
||||
size: Size(kExpandedWindowWidth, kMinWindowSize.height));
|
||||
apidashWidgetTest("Testing Request Editor in desktop end-to-end",
|
||||
(WidgetTester tester, helper) async {
|
||||
await tester.pumpUntilFound(find.byType(DashApp));
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
|
||||
/// Create New Request
|
||||
await helper.reqHelper.addRequest(testEndpoint,
|
||||
name: reqName,
|
||||
params: [(paramKey, paramValue)],
|
||||
headers: [(headerKey, headerValue)]);
|
||||
await Future.delayed(const Duration(milliseconds: 200));
|
||||
await helper.reqHelper.sendRequest();
|
||||
|
||||
/// Check if response is received
|
||||
await act.tap(spotText(ResponseBodyView.raw.label));
|
||||
await tester.pumpAndSettle();
|
||||
spotText(expectedRawCode).existsOnce();
|
||||
|
||||
/// Check Response Headers
|
||||
await act.tap(spot<ResponseTabView>().spotText(kLabelHeaders));
|
||||
await tester.pumpAndSettle();
|
||||
spotText("$kLabelRequestHeaders (1 $kLabelItems)").existsOnce();
|
||||
|
||||
/// Change codegen language to curl
|
||||
await helper.navigateToSettings();
|
||||
await helper.changeCodegenLanguage(CodegenLanguage.curl);
|
||||
await helper.navigateToRequestEditor();
|
||||
|
||||
/// Check generated code
|
||||
await helper.reqHelper.unCheckFirstHeader();
|
||||
await act.tap(spot<RequestPane>().spotText(kLabelViewCode));
|
||||
await tester.pumpAndSettle();
|
||||
spot<CodeGenPreviewer>().spotText(expectedCurlCode).existsOnce();
|
||||
});
|
||||
}
|
67
integration_test/mobile/req_editor_test.dart
Normal file
67
integration_test/mobile/req_editor_test.dart
Normal file
@ -0,0 +1,67 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:spot/spot.dart';
|
||||
import 'package:apidash/app.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import '../../test/extensions/widget_tester_extensions.dart';
|
||||
import '../test_helper.dart';
|
||||
|
||||
void main() async {
|
||||
const reqName = "test-req-name";
|
||||
const testEndpoint = "https://api.apidash.dev/humanize/social";
|
||||
const paramKey = "num";
|
||||
const paramValue = "870000";
|
||||
const headerKey = "Content-Type";
|
||||
const headerValue = "application/json";
|
||||
const expectedCurlCode = "curl --url '$testEndpoint?$paramKey=$paramValue'";
|
||||
const expectedRawCode = '''{
|
||||
"data": "870K"
|
||||
}''';
|
||||
|
||||
await ApidashTestHelper.initialize(
|
||||
size: Size(kCompactWindowWidth, kMinWindowSize.height));
|
||||
apidashWidgetTest("Testing Request Editor in mobile end-to-end",
|
||||
(WidgetTester tester, helper) async {
|
||||
await tester.pumpUntilFound(find.byType(DashApp));
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
|
||||
/// Create New Request
|
||||
await helper.reqHelper.addRequest(testEndpoint,
|
||||
name: reqName,
|
||||
params: [(paramKey, paramValue)],
|
||||
headers: [(headerKey, headerValue)],
|
||||
isMobile: true);
|
||||
await Future.delayed(const Duration(milliseconds: 200));
|
||||
await helper.reqHelper.sendRequest();
|
||||
|
||||
/// Check if response is received
|
||||
await act.tap(spot<SegmentedTabbar>().spotText(kLabelResponse));
|
||||
await tester.pumpAndSettle();
|
||||
await act.tap(spotText(ResponseBodyView.raw.label));
|
||||
await tester.pumpAndSettle();
|
||||
spotText(expectedRawCode).existsOnce();
|
||||
|
||||
/// Check Response Headers
|
||||
await act.tap(spot<ResponseTabView>().spotText(kLabelHeaders));
|
||||
await tester.pumpAndSettle();
|
||||
spotText("$kLabelRequestHeaders (1 $kLabelItems)").existsOnce();
|
||||
|
||||
/// Change codegen language to curl
|
||||
await helper.navigateToSettings(scaffoldKey: kHomeScaffoldKey);
|
||||
await helper.changeCodegenLanguage(CodegenLanguage.curl);
|
||||
await helper.navigateToRequestEditor();
|
||||
|
||||
/// Uncheck first header
|
||||
await act.tap(spot<SegmentedTabbar>().spotText(kLabelRequest));
|
||||
await tester.pumpAndSettle();
|
||||
await act.tap(spot<RequestPane>().spot<TabBar>().spotText(kLabelHeaders));
|
||||
await tester.pumpAndSettle();
|
||||
await helper.reqHelper.unCheckFirstHeader();
|
||||
|
||||
/// Check generated code
|
||||
await act.tap(spot<SegmentedTabbar>().spotText(kLabelCode));
|
||||
await tester.pumpAndSettle();
|
||||
spot<CodeGenPreviewer>().spotText(expectedCurlCode).existsOnce();
|
||||
});
|
||||
}
|
@ -100,6 +100,13 @@ class ApidashTestRequestHelper {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> unCheckFirstHeader() async {
|
||||
final headerCells = find.descendant(
|
||||
of: find.byType(EditRequestHeaders), matching: find.byType(CheckBox));
|
||||
await tester.tap(headerCells.at(0));
|
||||
await tester.pumpAndSettle();
|
||||
}
|
||||
|
||||
Future<void> addRequest(
|
||||
String url, {
|
||||
String? name,
|
||||
|
Reference in New Issue
Block a user