All files / components/Commons CommonsCard.jsx

100% Statements 59/59
100% Branches 9/9
100% Functions 3/3
100% Lines 59/59

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 65 66 67 68 69 70 71 72 73 74 75 761x 1x   1x   9x 9x 9x 9x 9x 9x 9x   9x 4x 2x 2x 2x 2x 2x 9x 5x 5x 5x 9x   1x 83x 83x 83x 83x 83x 83x 83x   83x 83x   83x 83x 83x 83x 83x 83x 83x 11x 11x 9x 11x 3x 3x 3x 3x 3x 3x 3x 3x   3x 11x 8x 8x 11x   83x               83x   1x  
import React from "react";
import { Card, Button, Container, Row, Col } from "react-bootstrap";
 
const curr = new Date();
 
function isFutureDate(startingDate) {
  const startYear = parseInt(startingDate);
  const startMonth = parseInt(startingDate.substring(5, 7));
  const startDate = parseInt(startingDate.substring(8, 10));
  const currYear = curr.getFullYear();
  const currMonth = curr.getMonth() + 1;
  const currDate = curr.getDate();
 
  if (startYear === currYear) {
    if (startMonth === currMonth) {
      return startDate > currDate;
    } else {
      // Stryker disable next-line all: mutation test unreasonable
      return startMonth > currMonth;
    }
  } else {
    // Stryker disable next-line all: mutation test unreasonable
    return startYear > currYear;
  }
}
 
const CommonsCard = ({ buttonText, buttonLink, commons }) => {
  const testIdPrefix = "commonsCard";
  return (
    <Card.Body className="woodenboardtable">
      <Container>
        <Row>
          <Col sx={4} data-testid={`${testIdPrefix}-id-${commons.id}`}>
            {commons.id}
          </Col>
          <Col sx={4} data-testid={`${testIdPrefix}-name-${commons.id}`}>
            {commons.name}
          </Col>
          {buttonText != null && (
            <Col sm={4}>
              <Button
                data-testid={`${testIdPrefix}-button-${buttonText}-${commons.id}`}
                size="sm"
                className="buttonchange"
                onClick={() => {
                  if (
                    buttonText === "Join" &&
                    isFutureDate(commons.startingDate)
                  ) {
                    // Stryker disable all: unable to read alert text in tests
                    alert(
                      "This commons has not started yet and cannot be joined.\nThe starting date is " +
                        parseInt(commons.startingDate.substring(5, 7)) +
                        "/" +
                        parseInt(commons.startingDate.substring(8, 10)) +
                        "/" +
                        parseInt(commons.startingDate),
                    );
                    // Stryker restore all
                  } else {
                    buttonLink(commons.id);
                  }
                }}
              >
                {buttonText}
              </Button>
            </Col>
          )}
        </Row>
      </Container>
    </Card.Body>
  );
};
 
export default CommonsCard;