All files / src/components/person person_list_page.jsx

57.14% Statements 8/14
100% Branches 0/0
54.55% Functions 6/11
57.14% Lines 8/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64                1x 1x       1x   1x           1x                         2x   2x                           15x                          
import toastr from 'toastr';
import React from 'react';
import { Link } from 'react-router';
import { getPersons, deletePerson } from '../../api_calls';
import PersonListRow from './person_list_row';
 
export default class PersonList extends React.Component {
  constructor(props) {
    super(props);
    this.state = { persons: [] };
  }
 
  loadPersons() {
    getPersons()
      .then(result => {
        this.setState({ persons: result.data });
      })
      .catch(error => toastr.error(error));
  }
 
  componentDidMount() {
    this.loadPersons();
  }
 
  deletePerson() {
    deletePerson()
      .then(response => {
        toastr.success(response.data);
        this.loadPersons();
      })
      .catch(error => toastr.error(error));
  }
 
  render() {
    const persons = this.state.persons;
 
    return (
      <div>
        <table className="table">
          <thead>
            <tr>
              <th>ID</th>
              <th>First Name</th>
              <th>Last Name</th>
              <th>Email</th>
              <th>&nbsp;</th>
            </tr>
          </thead>
          <tbody>
            {persons.map(person => (
              <PersonListRow key={person.id} person={person} />
            ))}
          </tbody>
        </table>
        <div>
          <Link to="/persons" onClick={() => this.deletePerson()}>
            Delete last person
          </Link>
        </div>
      </div>
    );
  }
}