Skip to content

Instantly share code, notes, and snippets.

View r3dm1ke's full-sized avatar
🎯
Before software can be reusable it first has to be usable.

Michael Krasnov r3dm1ke

🎯
Before software can be reusable it first has to be usable.
View GitHub Profile
@r3dm1ke
r3dm1ke / login.dart
Created December 7, 2019 17:43
Login screen for TODO app in Flutter
import 'package:flutter/material.dart';
// As login page has to handle user input, it has to be stateful
class TODOLogin extends StatefulWidget {
// Callback function that will be called on pressing the login button
final onLogin;
TODOLogin({@required this.onLogin});
@r3dm1ke
r3dm1ke / auth.dart
Created December 8, 2019 17:12
Authenticating with Firebase in Flutter
import 'package:firebase_auth/firebase_auth.dart';
class Authentication {
final _firebaseAuth = FirebaseAuth.instance;
Future<FirebaseUser> login(String email, String password) async {
try {
AuthResult result = await _firebaseAuth.signInWithEmailAndPassword(
email: email,
@r3dm1ke
r3dm1ke / list.dart
Created December 8, 2019 17:42
Listening to Firestore changes in Flutter
// Importing firestore package
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class TODOList extends StatelessWidget {
// Setting reference to 'tasks' collection
final collection = Firestore.instance.collection('tasks');
@override
@r3dm1ke
r3dm1ke / create.dart
Created December 8, 2019 17:49
Creating a document in Firestore from Flutter
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class TODOCreate extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return TODOCreateState();
}
}
@r3dm1ke
r3dm1ke / main.dart
Created December 16, 2019 19:25
HTTP Get requests in Dart/Flutter
import 'package:http/http.dart' as http;
// Sending a GET request
const url = 'http://some-api.com/users';
const response = await http.get(url);
print(response.body);
// Sending a GET request using .read
const data = await http.read(url);
print(data);
@r3dm1ke
r3dm1ke / main.dart
Last active December 17, 2019 16:43
Sending POST requests in Dart/Flutter
import 'package:http/http.dart' as http;
// Sending a POST request
const url = 'https://some-api.com/users';
const payload = {online: false};
const response = await http.post(url, body: payload);
print(response.statusCode); // 200
// Sending a POST request with headers
const headers = {'Content-Type': 'application/json'};
@r3dm1ke
r3dm1ke / main.dart
Created December 17, 2019 16:45
HTTP requests to one server in Dart
import 'package:http/http.dart' as http;
// Create a client instance
const client = http.Client();
// Making first request
const first_response = await client.read('https://some-api.com/data');
print(first_response);
// Second request
@r3dm1ke
r3dm1ke / test.js
Created December 28, 2019 17:55
Mock functions with Jest
describe('Mock functions', () => {
it('can create mock functions', () => {
const fn = jest.fn();
fn.mockReturnValueOnce(5);
const result = fn(10);
expect(result).toBe(5); // TRUE
expect(fn).toHaveBeenCalled(); // TRUE
expect(fn).toHaveBeenCalledWith(10); // TRUE
});
@r3dm1ke
r3dm1ke / main.js
Last active December 30, 2019 18:31
Mocking modules in Jest
import axios from 'axios'; // HTTP library
import store from './store'; // Redux store
export const get_data = () => {
const state = store.getState();
const {token} = state;
return axios({
url: 'https://some-url.com/api',
method: 'get',
headers: {
@r3dm1ke
r3dm1ke / main.js
Created December 28, 2019 18:17
Spying on functions with Jest
export const do_stuff = () => {
console.error('Cannot do stuff!');
};