Skip to content

Instantly share code, notes, and snippets.

View CodingItWrong's full-sized avatar

Josh Justice CodingItWrong

View GitHub Profile
import React, { Component } from 'react';
import {
View,
} from 'react-native';
export default class NewMessageForm extends Component {
render() {
return (
<View>
</View>
import React, { Component } from 'react';
import {
+ TextInput,
View,
} from 'react-native';
export default class NewMessageForm extends Component {
render() {
return (
<View>
import React, { Component } from 'react';
import {
+ Button,
TextInput,
View,
} from 'react-native';
...
<TextInput
testID="messageText"
/>
import React from 'react';
import { render, fireEvent } from 'react-native-testing-library';
import NewMessageForm from '../../NewMessageForm';
describe('NewMessageForm', () => {
describe('clicking send', () => {
const messageText = 'Hello world';
let getByTestId;
export default class NewMessageForm extends Component {
+ state = { inputText: '' }
+
+ handleChangeText = (text) => {
+ this.setState({ inputText: text });
+ }
+
render() {
+ const { inputText } = this.state;
return (
export default class NewMessageForm extends Component {
state = { inputText: '' }
handleChangeText = (text) => {
this.setState({ inputText: text });
}
+ handleSend = () => {
+ this.setState({ inputText: '' });
+ }
describe('clicking send', () => {
const messageText = 'Hello world';
+ let sendHandler;
let getByTestId;
beforeEach(() => {
+ sendHandler = jest.fn();
- ({ getByTestId } = render(<NewMessageForm />));
handleSend = () => {
+ const { inputText } = this.state;
+ const { onSend } = this.props;
+
+ onSend(inputText);
+
this.setState({ inputText: '' });
}
export default class App extends Component {
+ handleSend = (newMessage) => {
+ }
+
render() {
return (
<View>
- <NewMessageForm />
+ <NewMessageForm onSend={this.handleSend} />
</View>
export default class App extends Component {
+ state = { messages: [] }
+
handleSend = (newMessage) => {
+ this.setState(state => ({ messages: [newMessage, ...state.messages] }));
}