Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,10 @@ SELECT f.id AS id, f.question AS question, f.field_type AS type, f.section AS se
SELECT *
FROM form_field f
WHERE f.form_id = :formId
AND (f.section = :section OR f.section = :defaultSection)
AND f.section = :section
""", nativeQuery = true)
List<FormField> findAllByFormAndSection(
@Param("formId") Long formId,
@Param("section") String section,
@Param("defaultSection") String defaultSection
@Param("section") String section
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
@Transactional(readOnly = true)
public class GeneralFormFieldService implements FormFieldService {

private static final String FORM_DEFAULT_SECTION = "공통";

private final FormFieldRepository formFieldRepository;

@Transactional
Expand Down Expand Up @@ -44,6 +42,6 @@ public void deleteAll(List<FormField> originFormFields) {

@Override
public List<FormField> getAllByFormAndSection(Form form, String section) {
return formFieldRepository.findAllByFormAndSection(form.getId(), section, FORM_DEFAULT_SECTION);
return formFieldRepository.findAllByFormAndSection(form.getId(), section);
}
}
Original file line number Diff line number Diff line change
@@ -1,78 +1,120 @@
//package ddingdong.ddingdongBE.domain.form.service;
//
//import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
//
//import com.navercorp.fixturemonkey.FixtureMonkey;
//import ddingdong.ddingdongBE.common.support.FixtureMonkeyFactory;
//import ddingdong.ddingdongBE.common.support.TestContainerSupport;
//import ddingdong.ddingdongBE.domain.club.entity.Club;
//import ddingdong.ddingdongBE.domain.club.repository.ClubRepository;
//import ddingdong.ddingdongBE.domain.form.entity.Form;
//import ddingdong.ddingdongBE.domain.form.repository.FormRepository;
//import ddingdong.ddingdongBE.domain.form.service.dto.query.FormSectionQuery;
//import ddingdong.ddingdongBE.domain.user.entity.Role;
//import ddingdong.ddingdongBE.domain.user.entity.User;
//import ddingdong.ddingdongBE.domain.user.repository.UserRepository;
//import java.util.ArrayList;
//import java.util.List;
//import org.junit.jupiter.api.DisplayName;
//import org.junit.jupiter.api.Test;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//
//@SpringBootTest
//class FacadeUserFormServiceImplTest extends TestContainerSupport {
//
// @Autowired
// private FacadeUserFormService facadeUserFormService;
//
// @Autowired
// private FormRepository formRepository;
//
// @Autowired
// private ClubRepository clubRepository;
//
// @Autowired
// private UserRepository userRepository;
//
// private static final FixtureMonkey fixtureMonkey = FixtureMonkeyFactory.getNotNullBuilderIntrospectorMonkey();
//
// @DisplayName("유저는 섹션 목록을 조회할 수 있다.")
// @Test
// void getFormSection() {
// // given
// User user = fixtureMonkey.giveMeBuilder(User.class)
// .set("id", 1L)
// .set("Role", Role.CLUB)
// .set("deletedAt", null)
// .sample();
// User savedUser = userRepository.save(user);
//
// Club club = fixtureMonkey.giveMeBuilder(Club.class)
// .set("id", 1L)
// .set("user", savedUser)
// .set("score", null)
// .set("clubMembers", null)
// .set("deletedAt", null)
// .sample();
// clubRepository.save(club);
//
// List<String> savedSections = new ArrayList<>();
// savedSections.add("section1");
// savedSections.add("section2");
//
// Form form = fixtureMonkey.giveMeBuilder(Form.class)
// .set("id", 1L)
// .set("title", "띵동 폼")
// .set("description", "저희 동아리는 띵동입니다.")
// .set("hasInterview", false)
// .set("club", club)
// .set("sections", savedSections)
// .sample();
// Form savedForm = formRepository.save(form);
//
// FormSectionQuery sectionQuery = facadeUserFormService.getFormSection(savedForm.getId());
//
// assertThat(sectionQuery.sections()).isEqualTo(savedSections);
// }
//}
package ddingdong.ddingdongBE.domain.form.service;

import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;

import ddingdong.ddingdongBE.common.support.TestContainerSupport;
import ddingdong.ddingdongBE.domain.club.entity.Club;
import ddingdong.ddingdongBE.domain.club.repository.ClubRepository;
import ddingdong.ddingdongBE.domain.form.entity.FieldType;
import ddingdong.ddingdongBE.domain.form.entity.Form;
import ddingdong.ddingdongBE.domain.form.entity.FormField;
import ddingdong.ddingdongBE.domain.form.repository.FormFieldRepository;
import ddingdong.ddingdongBE.domain.form.repository.FormRepository;
import ddingdong.ddingdongBE.domain.form.service.dto.query.FormSectionQuery;
import ddingdong.ddingdongBE.domain.form.service.dto.query.UserFormQuery;
import ddingdong.ddingdongBE.domain.user.entity.Role;
import ddingdong.ddingdongBE.domain.user.entity.User;
import ddingdong.ddingdongBE.domain.user.repository.UserRepository;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class FacadeUserFormServiceImplTest extends TestContainerSupport {

@Autowired
private FacadeUserFormService facadeUserFormService;

@Autowired
private FormRepository formRepository;

@Autowired
private ClubRepository clubRepository;

@Autowired
private UserRepository userRepository;

@Autowired
private FormFieldRepository formFieldRepository;

private User savedUser;
private Club savedClub;
private Form savedForm;
private List<String> savedSections;

@BeforeEach
void setUp() {
User user = User.builder()
.id(1L)
.role(Role.CLUB)
.build();
savedUser = userRepository.save(user);

Club club = Club.builder()
.id(1L)
.user(savedUser)
.score(null)
.clubMembers(null)
.deletedAt(null)
.build();
savedClub = clubRepository.save(club);

savedSections = Arrays.asList("section1", "section2");

Form form = Form.builder()
.title("띵동 폼")
.description("저희 동아리는 띵동입니다.")
.hasInterview(false)
.club(savedClub)
.sections(savedSections)
.endDate(LocalDate.now().plusMonths(1))
.startDate(LocalDate.now())
.build();
savedForm = formRepository.save(form);
}

@DisplayName("유저는 섹션 목록을 조회할 수 있다.")
@Test
void getFormSection() {
// given

// when
FormSectionQuery sectionQuery = facadeUserFormService.getFormSection(savedForm.getId());

// then
assertThat(sectionQuery.sections()).isEqualTo(savedSections);
}

@DisplayName("유저는 폼지를 상세조회 할 수 있다.")
@Test
void getForm() {
// given
FormField savedFormField1 = createFormField("질문1", 1, savedSections.get(0), savedForm);
FormField savedFormField2 = createFormField("질문2", 2, savedSections.get(1), savedForm);

String selectedSection = savedSections.get(0);

// when
UserFormQuery userFormQuery = facadeUserFormService.getUserForm(savedForm.getId(), selectedSection);

// then
assertThat(userFormQuery.formFields().get(0).id()).isEqualTo(savedFormField1.getId());
}

private FormField createFormField(String question, int order, String section, Form form) {
FormField formField = FormField.builder()
.question(question)
.required(true)
.fieldOrder(order)
.section(section)
.fieldType(FieldType.TEXT)
.form(form)
.build();
return formFieldRepository.save(formField);
}
}