mirror of
https://codeberg.org/beerbrawl/beerbrawl.git
synced 2024-09-23 09:40:52 +02:00
Merge branch 'tournament--overview-tests' into 'development'
test/#49/Tournament overview Tests after revert See merge request 2024ss-se-pr-group/24ss-se-pr-qse-11!39
This commit is contained in:
commit
00698d5aec
|
@ -25,6 +25,7 @@ public interface TestData {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
String DEFAULT_USER = "user";
|
String DEFAULT_USER = "user";
|
||||||
|
String DEFAULT_USER_PASSWORD = "password";
|
||||||
List<String> USER_ROLES = new ArrayList<>() {
|
List<String> USER_ROLES = new ArrayList<>() {
|
||||||
{
|
{
|
||||||
add("ROLE_USER");
|
add("ROLE_USER");
|
||||||
|
|
|
@ -6,6 +6,10 @@ import at.ac.tuwien.sepr.groupphase.backend.config.properties.SecurityProperties
|
||||||
import at.ac.tuwien.sepr.groupphase.backend.datagenerator.TestDataGenerator;
|
import at.ac.tuwien.sepr.groupphase.backend.datagenerator.TestDataGenerator;
|
||||||
import at.ac.tuwien.sepr.groupphase.backend.endpoint.dto.CreateTournamentDto;
|
import at.ac.tuwien.sepr.groupphase.backend.endpoint.dto.CreateTournamentDto;
|
||||||
import at.ac.tuwien.sepr.groupphase.backend.endpoint.dto.TournamentDto;
|
import at.ac.tuwien.sepr.groupphase.backend.endpoint.dto.TournamentDto;
|
||||||
|
import at.ac.tuwien.sepr.groupphase.backend.endpoint.dto.TournamentListDto;
|
||||||
|
import at.ac.tuwien.sepr.groupphase.backend.entity.ApplicationUser;
|
||||||
|
import at.ac.tuwien.sepr.groupphase.backend.entity.Tournament;
|
||||||
|
import at.ac.tuwien.sepr.groupphase.backend.repository.MessageRepository;
|
||||||
import at.ac.tuwien.sepr.groupphase.backend.endpoint.dto.TournamentQualificationMatchDto;
|
import at.ac.tuwien.sepr.groupphase.backend.endpoint.dto.TournamentQualificationMatchDto;
|
||||||
import at.ac.tuwien.sepr.groupphase.backend.entity.Team;
|
import at.ac.tuwien.sepr.groupphase.backend.entity.Team;
|
||||||
import at.ac.tuwien.sepr.groupphase.backend.entity.Tournament;
|
import at.ac.tuwien.sepr.groupphase.backend.entity.Tournament;
|
||||||
|
@ -35,6 +39,15 @@ import org.springframework.mock.web.MockHttpServletResponse;
|
||||||
import org.springframework.test.context.ActiveProfiles;
|
import org.springframework.test.context.ActiveProfiles;
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||||
import org.springframework.test.web.servlet.MockMvc;
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||||
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
|
@ -46,6 +59,12 @@ public class TournamentEndpointTest extends TestUserData implements TestData {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MockMvc mockMvc;
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TournamentRepository tournamentRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserRepository userRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ObjectMapper objectMapper;
|
private ObjectMapper objectMapper;
|
||||||
|
|
||||||
|
@ -55,12 +74,9 @@ public class TournamentEndpointTest extends TestUserData implements TestData {
|
||||||
@Autowired
|
@Autowired
|
||||||
private SecurityProperties securityProperties;
|
private SecurityProperties securityProperties;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private TournamentRepository tournamentRepository;
|
|
||||||
@Autowired
|
|
||||||
private UserRepository userRepository;
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TeamRepository teamRepository;
|
private TeamRepository teamRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private QualificationParticipationRepository qualificationParticipationRepository;
|
private QualificationParticipationRepository qualificationParticipationRepository;
|
||||||
|
|
||||||
|
@ -68,42 +84,41 @@ public class TournamentEndpointTest extends TestUserData implements TestData {
|
||||||
public void successfullyCreateNewTournament() throws Exception {
|
public void successfullyCreateNewTournament() throws Exception {
|
||||||
var registrationEnd = LocalDateTime.now().plusDays(1).withSecond(0).withNano(0);
|
var registrationEnd = LocalDateTime.now().plusDays(1).withSecond(0).withNano(0);
|
||||||
CreateTournamentDto data = new CreateTournamentDto()
|
CreateTournamentDto data = new CreateTournamentDto()
|
||||||
.setName("TOURNAMENT 1")
|
.setName("TOURNAMENT 1")
|
||||||
.setRegistrationEnd(registrationEnd)
|
.setRegistrationEnd(registrationEnd)
|
||||||
.setMaxParticipants(64L)
|
.setMaxParticipants(64L)
|
||||||
.setDescription("THIS IS A TEST");
|
.setDescription("THIS IS A TEST");
|
||||||
var mvcResult = this.mockMvc.perform(post(TOURNAMENT_BASE_URI)
|
var mvcResult = this.mockMvc.perform(post(TOURNAMENT_BASE_URI)
|
||||||
.header(securityProperties.getAuthHeader(), jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES))
|
.header(securityProperties.getAuthHeader(), jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES))
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
.content(objectMapper.writeValueAsString(data)))
|
.content(objectMapper.writeValueAsString(data)))
|
||||||
.andDo(print())
|
.andDo(print())
|
||||||
.andReturn();
|
.andReturn();
|
||||||
MockHttpServletResponse response = mvcResult.getResponse();
|
MockHttpServletResponse response = mvcResult.getResponse();
|
||||||
|
|
||||||
var dtoRes = objectMapper.readValue(response.getContentAsString(),
|
var dtoRes = objectMapper.readValue(response.getContentAsString(), TournamentDto.class);
|
||||||
TournamentDto.class);
|
|
||||||
|
|
||||||
assertAll(
|
assertAll(
|
||||||
() -> assertEquals(HttpStatus.CREATED.value(), response.getStatus()),
|
() -> assertEquals(HttpStatus.CREATED.value(), response.getStatus()),
|
||||||
() -> assertEquals(MediaType.APPLICATION_JSON_VALUE, response.getContentType()),
|
() -> assertEquals(MediaType.APPLICATION_JSON_VALUE, response.getContentType()),
|
||||||
() -> assertEquals(dtoRes.name(), data.getName()),
|
() -> assertEquals(dtoRes.name(), data.getName()),
|
||||||
() -> assertEquals(dtoRes.registrationEnd(), data.getRegistrationEnd()),
|
() -> assertEquals(dtoRes.registrationEnd(), data.getRegistrationEnd()),
|
||||||
() -> assertEquals(dtoRes.maxParticipants(), data.getMaxParticipants()),
|
() -> assertEquals(dtoRes.maxParticipants(), data.getMaxParticipants()),
|
||||||
() -> assertEquals(dtoRes.description(), data.getDescription()));
|
() -> assertEquals(dtoRes.description(), data.getDescription()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void createNewTournamentWithValidationErrorsFor_Name_RegistrationEnd_And_MaxParticipants() throws Exception {
|
public void createNewTournamentWithValidationErrorsFor_Name_RegistrationEnd_And_MaxParticipants() throws Exception {
|
||||||
CreateTournamentDto data = new CreateTournamentDto()
|
CreateTournamentDto data = new CreateTournamentDto()
|
||||||
.setName(null)
|
.setName(null)
|
||||||
.setRegistrationEnd(LocalDateTime.now().minusDays(1))
|
.setRegistrationEnd(LocalDateTime.now().minusDays(1))
|
||||||
.setMaxParticipants(0L);
|
.setMaxParticipants(0L);
|
||||||
var mvcResult = this.mockMvc.perform(post(TOURNAMENT_BASE_URI)
|
var mvcResult = this.mockMvc.perform(post(TOURNAMENT_BASE_URI)
|
||||||
.header(securityProperties.getAuthHeader(), jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES))
|
.header(securityProperties.getAuthHeader(), jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES))
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
.content(objectMapper.writeValueAsString(data)))
|
.content(objectMapper.writeValueAsString(data)))
|
||||||
.andDo(print())
|
.andDo(print())
|
||||||
.andReturn();
|
.andReturn();
|
||||||
MockHttpServletResponse response = mvcResult.getResponse();
|
MockHttpServletResponse response = mvcResult.getResponse();
|
||||||
|
|
||||||
var res = response.getContentAsString();
|
var res = response.getContentAsString();
|
||||||
|
@ -114,11 +129,71 @@ public class TournamentEndpointTest extends TestUserData implements TestData {
|
||||||
var messages = matcher.group("messages").split(", ");
|
var messages = matcher.group("messages").split(", ");
|
||||||
|
|
||||||
assertAll(() -> assertEquals(messages.length, 4),
|
assertAll(() -> assertEquals(messages.length, 4),
|
||||||
() -> assertTrue(List.of(messages).containsAll(List.of(
|
() -> assertTrue(List.of(messages).containsAll(List.of(
|
||||||
"registrationEnd Registration end must be in the future.",
|
"registrationEnd Registration end must be in the future.",
|
||||||
"maxParticipants Max participants needs to be a number larger than 16.",
|
"maxParticipants Max participants needs to be a number larger than 16.",
|
||||||
"name Name can't be null.",
|
"name Name can't be null.",
|
||||||
"name Name can't be empty."))));
|
"name Name can't be empty."))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void successfullyGetTournaments() throws Exception {
|
||||||
|
// setup
|
||||||
|
var tournament = new Tournament();
|
||||||
|
tournament.setName("TOURNAMENT_WITHOUT_TEAMS");
|
||||||
|
tournament.setMaxParticipants(64l);
|
||||||
|
tournament.setOrganizer(userRepository.findByUsername(TestDataGenerator.TEST_USER));
|
||||||
|
tournament.setRegistrationEnd(LocalDateTime.now().plusDays(1));
|
||||||
|
|
||||||
|
tournamentRepository.saveAndFlush(tournament);
|
||||||
|
|
||||||
|
var mvcResult = this.mockMvc.perform(get(TOURNAMENT_BASE_URI)
|
||||||
|
.header(securityProperties.getAuthHeader(), jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES))
|
||||||
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
|
.andDo(print())
|
||||||
|
.andReturn();
|
||||||
|
MockHttpServletResponse response = mvcResult.getResponse();
|
||||||
|
|
||||||
|
var dtoRes = objectMapper.readValue(response.getContentAsString(), TournamentListDto[].class);
|
||||||
|
|
||||||
|
assertAll(
|
||||||
|
() -> assertEquals(HttpStatus.OK.value(), response.getStatus()),
|
||||||
|
() -> assertEquals(MediaType.APPLICATION_JSON_VALUE, response.getContentType()),
|
||||||
|
() -> assertNotNull(dtoRes),
|
||||||
|
() -> assertTrue(dtoRes.length > 0, "Expected to find tournaments but found none"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTournamentsWhenNoneExist() throws Exception {
|
||||||
|
tournamentRepository.deleteAll();
|
||||||
|
|
||||||
|
var mvcResult = this.mockMvc.perform(get(TOURNAMENT_BASE_URI)
|
||||||
|
.header(securityProperties.getAuthHeader(), jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES))
|
||||||
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
|
.andDo(print())
|
||||||
|
.andReturn();
|
||||||
|
MockHttpServletResponse response = mvcResult.getResponse();
|
||||||
|
|
||||||
|
var dtoRes = objectMapper.readValue(response.getContentAsString(), TournamentListDto[].class);
|
||||||
|
|
||||||
|
assertAll(
|
||||||
|
() -> assertEquals(HttpStatus.OK.value(), response.getStatus()),
|
||||||
|
() -> assertEquals(MediaType.APPLICATION_JSON_VALUE, response.getContentType()),
|
||||||
|
() -> assertNotNull(dtoRes),
|
||||||
|
() -> assertEquals(0, dtoRes.length, "Expected no tournaments but found some"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTournamentsUnauthorized() throws Exception {
|
||||||
|
var mvcResult = this.mockMvc.perform(get(TOURNAMENT_BASE_URI)
|
||||||
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
|
.andDo(print())
|
||||||
|
.andReturn();
|
||||||
|
MockHttpServletResponse response = mvcResult.getResponse();
|
||||||
|
|
||||||
|
assertAll(
|
||||||
|
() -> assertEquals(HttpStatus.FORBIDDEN.value(), response.getStatus())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -143,21 +218,21 @@ public class TournamentEndpointTest extends TestUserData implements TestData {
|
||||||
teamRepository.flush();
|
teamRepository.flush();
|
||||||
|
|
||||||
var mvcResult = this.mockMvc
|
var mvcResult = this.mockMvc
|
||||||
.perform(post(
|
.perform(post(
|
||||||
String.format("%s/%d/qualification-matches", TOURNAMENT_BASE_URI, tournament.getId()))
|
String.format("%s/%d/qualification-matches", TOURNAMENT_BASE_URI, tournament.getId()))
|
||||||
.header(securityProperties.getAuthHeader(),
|
.header(securityProperties.getAuthHeader(),
|
||||||
jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES)))
|
jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES)))
|
||||||
.andDo(print())
|
.andDo(print())
|
||||||
.andReturn();
|
.andReturn();
|
||||||
MockHttpServletResponse response = mvcResult.getResponse();
|
MockHttpServletResponse response = mvcResult.getResponse();
|
||||||
assertEquals(HttpStatus.CREATED.value(), response.getStatus());
|
assertEquals(HttpStatus.CREATED.value(), response.getStatus());
|
||||||
|
|
||||||
var matches = objectMapper.readerFor(TournamentQualificationMatchDto.class)
|
var matches = objectMapper.readerFor(TournamentQualificationMatchDto.class)
|
||||||
.<TournamentQualificationMatchDto>readValues(response.getContentAsString()).readAll();
|
.<TournamentQualificationMatchDto>readValues(response.getContentAsString()).readAll();
|
||||||
|
|
||||||
var qualificationParticipations = matches.stream()
|
var qualificationParticipations = matches.stream()
|
||||||
.flatMap(m -> qualificationParticipationRepository.findAllByQualificationMatchId(m.id()).stream())
|
.flatMap(m -> qualificationParticipationRepository.findAllByQualificationMatchId(m.id()).stream())
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
var numberOfMatchesForTeam = new HashMap<Long, Integer>();
|
var numberOfMatchesForTeam = new HashMap<Long, Integer>();
|
||||||
for (var participation : qualificationParticipations) {
|
for (var participation : qualificationParticipations) {
|
||||||
|
@ -165,7 +240,7 @@ public class TournamentEndpointTest extends TestUserData implements TestData {
|
||||||
numberOfMatchesForTeam.put(participation.getTeam().getId(), 0);
|
numberOfMatchesForTeam.put(participation.getTeam().getId(), 0);
|
||||||
}
|
}
|
||||||
numberOfMatchesForTeam.put(participation.getTeam().getId(),
|
numberOfMatchesForTeam.put(participation.getTeam().getId(),
|
||||||
numberOfMatchesForTeam.get(participation.getTeam().getId()) + 1);
|
numberOfMatchesForTeam.get(participation.getTeam().getId()) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var matchesCount : numberOfMatchesForTeam.values()) {
|
for (var matchesCount : numberOfMatchesForTeam.values()) {
|
||||||
|
@ -185,18 +260,18 @@ public class TournamentEndpointTest extends TestUserData implements TestData {
|
||||||
tournamentRepository.saveAndFlush(tournament);
|
tournamentRepository.saveAndFlush(tournament);
|
||||||
|
|
||||||
var mvcResult = this.mockMvc
|
var mvcResult = this.mockMvc
|
||||||
.perform(post(
|
.perform(post(
|
||||||
String.format("%s/%d/qualification-matches", TOURNAMENT_BASE_URI, tournament.getId()))
|
String.format("%s/%d/qualification-matches", TOURNAMENT_BASE_URI, tournament.getId()))
|
||||||
.header(securityProperties.getAuthHeader(),
|
.header(securityProperties.getAuthHeader(),
|
||||||
jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES)))
|
jwtTokenizer.getAuthToken(TEST_USER, TEST_USER_ROLES)))
|
||||||
.andDo(print())
|
.andDo(print())
|
||||||
.andReturn();
|
.andReturn();
|
||||||
MockHttpServletResponse response = mvcResult.getResponse();
|
MockHttpServletResponse response = mvcResult.getResponse();
|
||||||
|
|
||||||
assertAll(
|
assertAll(
|
||||||
() -> assertEquals(HttpStatus.BAD_REQUEST.value(), response.getStatus()),
|
() -> assertEquals(HttpStatus.BAD_REQUEST.value(), response.getStatus()),
|
||||||
() -> assertEquals("A precondition wasn't met: Not enough teams in specified tournament.",
|
() -> assertEquals("A precondition wasn't met: Not enough teams in specified tournament.",
|
||||||
response.getContentAsString()));
|
response.getContentAsString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -211,12 +286,12 @@ public class TournamentEndpointTest extends TestUserData implements TestData {
|
||||||
tournamentRepository.saveAndFlush(tournament);
|
tournamentRepository.saveAndFlush(tournament);
|
||||||
|
|
||||||
var mvcResult = this.mockMvc
|
var mvcResult = this.mockMvc
|
||||||
.perform(post(
|
.perform(post(
|
||||||
String.format("%s/%d/qualification-matches", TOURNAMENT_BASE_URI, tournament.getId()))
|
String.format("%s/%d/qualification-matches", TOURNAMENT_BASE_URI, tournament.getId()))
|
||||||
.header(securityProperties.getAuthHeader(),
|
.header(securityProperties.getAuthHeader(),
|
||||||
jwtTokenizer.getAuthToken(TEST_USER + "_", TEST_USER_ROLES)))
|
jwtTokenizer.getAuthToken(TEST_USER + "_", TEST_USER_ROLES)))
|
||||||
.andDo(print())
|
.andDo(print())
|
||||||
.andReturn();
|
.andReturn();
|
||||||
MockHttpServletResponse response = mvcResult.getResponse();
|
MockHttpServletResponse response = mvcResult.getResponse();
|
||||||
|
|
||||||
assertEquals(HttpStatus.FORBIDDEN.value(), response.getStatus());
|
assertEquals(HttpStatus.FORBIDDEN.value(), response.getStatus());
|
||||||
|
@ -225,12 +300,12 @@ public class TournamentEndpointTest extends TestUserData implements TestData {
|
||||||
@Test
|
@Test
|
||||||
public void generateQualificationMatchesForTournamentThatDoesntExist() throws Exception {
|
public void generateQualificationMatchesForTournamentThatDoesntExist() throws Exception {
|
||||||
var mvcResult = this.mockMvc
|
var mvcResult = this.mockMvc
|
||||||
.perform(post(
|
.perform(post(
|
||||||
String.format("%s/%d/qualification-matches", TOURNAMENT_BASE_URI, -1))
|
String.format("%s/%d/qualification-matches", TOURNAMENT_BASE_URI, -1))
|
||||||
.header(securityProperties.getAuthHeader(),
|
.header(securityProperties.getAuthHeader(),
|
||||||
jwtTokenizer.getAuthToken(TEST_USER + "_", TEST_USER_ROLES)))
|
jwtTokenizer.getAuthToken(TEST_USER + "_", TEST_USER_ROLES)))
|
||||||
.andDo(print())
|
.andDo(print())
|
||||||
.andReturn();
|
.andReturn();
|
||||||
MockHttpServletResponse response = mvcResult.getResponse();
|
MockHttpServletResponse response = mvcResult.getResponse();
|
||||||
|
|
||||||
assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatus());
|
assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatus());
|
||||||
|
|
16
e2e/cypress/e2e/tournaments.cy.js
Normal file
16
e2e/cypress/e2e/tournaments.cy.js
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
context('Get Tournaments', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.loginTestUser();
|
||||||
|
cy.wait(4000);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully get tournaments', () => {
|
||||||
|
cy.intercept('GET', '/api/v1/tournaments', { fixture: 'tournaments.json' }).as(
|
||||||
|
'getTournaments',
|
||||||
|
);
|
||||||
|
cy.visit('/#/tournaments');
|
||||||
|
cy.wait('@getTournaments');
|
||||||
|
cy.get('[data-cy="tournaments-list"]').should('exist');
|
||||||
|
cy.get('[data-cy="tournaments-list-item"]').should('have.length.at.least', 1);
|
||||||
|
});
|
||||||
|
});
|
16
e2e/cypress/fixtures/tournaments.json
Normal file
16
e2e/cypress/fixtures/tournaments.json
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "Test Tournament 1",
|
||||||
|
"registrationEnd": "2024-05-20T14:00:00Z",
|
||||||
|
"maxParticipants": 64,
|
||||||
|
"description": "Description for Test Tournament 1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"name": "Test Tournament 2",
|
||||||
|
"registrationEnd": "2024-06-20T14:00:00Z",
|
||||||
|
"maxParticipants": 32,
|
||||||
|
"description": "Description for Test Tournament 2"
|
||||||
|
}
|
||||||
|
]
|
|
@ -1,4 +1,4 @@
|
||||||
<mat-card class="tournament-card">
|
<mat-card class="tournament-card" data-cy="tournaments-list-item">
|
||||||
<div class="left-color-bar"></div>
|
<div class="left-color-bar"></div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<h1>Tournaments</h1>
|
<h1>Tournaments</h1>
|
||||||
@for (tournament of getTournaments(); track tournament.name) {
|
@for (tournament of getTournaments(); track tournament.name) {
|
||||||
<app-tournament-card [tournament]="tournament"></app-tournament-card>
|
<app-tournament-card [tournament]="tournament" data-cy="tournaments-list"></app-tournament-card>
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue