Skip to content

Commit 62909bb

Browse files
committed
wip: sim sanitizer
1 parent c895e26 commit 62909bb

16 files changed

Lines changed: 220 additions & 30 deletions
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import 'package:tekartik_firebase_firestore_sembast/firestore_sembast.dart';
2+
import 'package:tekartik_firebase_firestore_test/menu/firebase_client_menu.dart';
3+
4+
Future<void> main(List<String> args) async {
5+
var firestore = newFirestoreMemory(); // .debugQuickLoggerWrapper();
6+
await mainMenu(args, () {
7+
firestoreMainMenu(
8+
context: FirestoreMainMenuContext(doc: firestore.doc('test/1')));
9+
});
10+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
@Deprecated('wip obsolete')
2+
library;
3+
4+
/// FirestoreSimServer is a class that simulates the Firestore server.
5+
export 'src/firestore_sim_server.dart' show FirestoreSimServer;

firestore_sim/lib/src/firestore_sim_server.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -392,16 +392,17 @@ class FirestireSimPluginClient implements FirebaseSimPluginClient {
392392
class FirestoreSimServer implements FirebaseSimPlugin {
393393
final FirestoreService firestoreService;
394394
final FirebaseSimServer firebaseSimServer;
395-
final Firebase firebase;
395+
late final Firebase firebase;
396396
final Map<Firestore, Lock> _locks = <Firestore, Lock>{};
397397

398398
Lock? transactionLock(Firestore firestore) => _locks[firestore];
399399

400400
// App app;
401401
Firestore? firestore;
402402

403-
FirestoreSimServer(
404-
this.firestoreService, this.firebaseSimServer, this.firebase) {
403+
FirestoreSimServer(this.firestoreService, this.firebaseSimServer,
404+
[Firebase? firebase]) {
405+
this.firebase = firebase ?? firebaseSimServer.firebase!;
405406
firebaseSimServer.addPlugin(this);
406407
}
407408

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
library;
2+
3+
import 'dart:async';
4+
5+
import 'package:tekartik_firebase_firestore_sim/firestore_sim.dart';
6+
import 'package:tekartik_firebase_firestore_test/firestore_multi_client_test.dart';
7+
import 'package:tekartik_firebase_firestore_test/firestore_test.dart';
8+
import 'package:tekartik_firebase_sim_io/firebase_sim_client_io.dart' as sim;
9+
import 'package:tekartik_web_socket_io/web_socket_io.dart';
10+
import 'package:test/test.dart';
11+
12+
import 'test_common.dart';
13+
14+
Future main() async {
15+
// debugSimServerMessage = true;
16+
skipConcurrentTransactionTests = true;
17+
var testContext = await initTestContextSim();
18+
var firebase = testContext.firebase;
19+
var firebase2 = sim.getFirebaseSim(
20+
clientFactory: webSocketChannelClientFactoryMemory,
21+
url: testContext.simServer.webSocketChannelServer.url);
22+
var app1 = firebase.initializeApp();
23+
var app2 = firebase2.initializeApp();
24+
25+
var firestore1 = firestoreServiceSim.firestore(app1);
26+
var firestore2 = firestoreServiceSim.firestore(app2);
27+
28+
firestoreMulticlientTest(
29+
firestore1: firestore1, firestore2: firestore2, docTopPath: 'test/doc');
30+
tearDownAll(() async {
31+
await close(testContext);
32+
});
33+
}

firestore_sim_io/test/firestore_sim_test.dart renamed to firestore_sim/test/firestore_sim_test.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,15 @@ Future main() async {
1313
skipConcurrentTransactionTests = true;
1414
var testContext = await initTestContextSim();
1515
var firebase = testContext.firebase;
16-
runFirestoreTests(firebase: firebase, firestoreService: firestoreServiceSim);
16+
var app = firebase.initializeApp();
17+
runFirestoreAppTests(
18+
app: app,
19+
firestoreService: firestoreServiceSim,
20+
testContext: FirestoreTestContext());
21+
22+
test('projectId', () {
23+
expect(app.options.projectId, 'sim');
24+
});
1725

1826
tearDownAll(() async {
1927
await close(testContext);
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import 'dart:async';
2+
3+
import 'package:tekartik_firebase_firestore_sembast/firestore_sembast_io.dart';
4+
import 'package:tekartik_firebase_firestore_sim/src/firestore_sim_server.dart';
5+
import 'package:tekartik_firebase_local/firebase_local.dart';
6+
import 'package:tekartik_firebase_sim/firebase_sim_server.dart';
7+
import 'package:tekartik_firebase_sim_io/firebase_sim_client_io.dart' as sim;
8+
import 'package:tekartik_web_socket_io/web_socket_io.dart';
9+
10+
class TestContext {
11+
late FirebaseSimServer simServer;
12+
late Firebase firebase;
13+
}
14+
15+
// memory only
16+
Future<TestContext> initTestContextSim() async {
17+
var testContext = TestContext();
18+
// The server use firebase io
19+
testContext.simServer =
20+
await serve(FirebaseLocal(), webSocketChannelFactoryMemory);
21+
testContext.firebase = sim.getFirebaseSim(
22+
clientFactory: webSocketChannelClientFactoryMemory,
23+
url: testContext.simServer.webSocketChannelServer.url);
24+
FirestoreSimServer(newFirestoreServiceMemory(), testContext.simServer);
25+
return testContext;
26+
}
27+
28+
Future close(TestContext testContext) async {
29+
await testContext.simServer.close();
30+
}

firestore_sim/tool/travis.dart

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# tekartik analysis_options extension to pedantic
2-
include: package:tekartik_lints/strict.yaml
2+
include: package:tekartik_lints/package.yaml
33

44
linter:
55
rules:
6-
depend_on_referenced_packages: false
6+
public_member_api_docs: false
7+
# depend_on_referenced_packages: false
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import 'package:tekartik_firebase_firestore_sim/firestore_sim.dart';
2+
import 'package:tekartik_firebase_firestore_test/menu/firebase_client_menu.dart';
3+
import 'package:tekartik_firebase_sim/firebase_sim.dart';
4+
import 'package:tekartik_firebase_sim_io/firebase_sim_client_io.dart';
5+
6+
var urlKv = '4338987.url'.kvFromVar(
7+
defaultValue: 'ws://localhost:${firebaseSimDefaultPort.toString()}');
8+
9+
int? get urlKvPort => int.tryParse((urlKv.value ?? '').split(':').last);
10+
Future<void> main(List<String> args) async {
11+
var firebase = getFirebaseSim(url: urlKv.value);
12+
var app = firebase.initializeApp();
13+
var firestore =
14+
firestoreServiceSim.firestore(app); // .debugQuickLoggerWrapper();
15+
await mainMenu(args, () {
16+
firestoreMainMenu(
17+
context: FirestoreMainMenuContext(doc: firestore.doc('test/1')));
18+
keyValuesMenu('kv', [urlKv]);
19+
});
20+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// ignore_for_file: avoid_print
2+
3+
import 'package:tekartik_firebase_firestore_sembast/firestore_sembast.dart';
4+
// ignore: deprecated_member_use
5+
import 'package:tekartik_firebase_firestore_sim/firestore_sim_server.dart';
6+
import 'package:tekartik_firebase_local/firebase_local.dart';
7+
import 'package:tekartik_firebase_sim/firebase_sim_server.dart';
8+
import 'package:tekartik_web_socket_io/web_socket_io.dart';
9+
10+
import 'example_io_client.dart';
11+
12+
Future<void> main(List<String> args) async {
13+
var firebaseSimServer =
14+
await serve(FirebaseLocal(), webSocketChannelFactoryIo, port: urlKvPort);
15+
print('url ${firebaseSimServer.webSocketChannelServer.url}');
16+
FirestoreSimServer(firestoreServiceMemory, firebaseSimServer);
17+
}

0 commit comments

Comments
 (0)