PageRenderTime 25ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/projects/nakedobjects-4.0.0/plugins/headless/embedded/src/test/java/org/nakedobjects/plugins/headless/embedded/GivenEmbeddedViewerAndPersistentDomainObject.java

https://gitlab.com/essere.lab.public/qualitas.class-corpus
Java | 157 lines | 106 code | 50 blank | 1 comment | 0 complexity | c68315287328104bbed193134f477e09 MD5 | raw file
  1. package org.nakedobjects.plugins.headless.embedded;
  2. import static org.hamcrest.CoreMatchers.is;
  3. import static org.hamcrest.CoreMatchers.notNullValue;
  4. import static org.junit.Assert.assertThat;
  5. import org.jmock.Expectations;
  6. import org.jmock.Mockery;
  7. import org.jmock.integration.junit4.JMock;
  8. import org.jmock.integration.junit4.JUnit4Mockery;
  9. import org.junit.Before;
  10. import org.junit.Ignore;
  11. import org.junit.Test;
  12. import org.junit.runner.RunWith;
  13. import org.nakedobjects.metamodel.authentication.AuthenticationSession;
  14. import org.nakedobjects.plugins.headless.applib.DisabledException;
  15. import org.nakedobjects.plugins.headless.applib.HeadlessViewer;
  16. import org.nakedobjects.plugins.headless.applib.HiddenException;
  17. import org.nakedobjects.plugins.headless.applib.InvalidException;
  18. import org.nakedobjects.plugins.headless.embedded.EmbeddedContext;
  19. import org.nakedobjects.plugins.headless.embedded.NakedObjectsMetaModel;
  20. import org.nakedobjects.plugins.headless.embedded.dom.claim.ClaimRepositoryImpl;
  21. import org.nakedobjects.plugins.headless.embedded.dom.employee.Employee;
  22. import org.nakedobjects.plugins.headless.embedded.dom.employee.EmployeeRepositoryImpl;
  23. import org.nakedobjects.plugins.headless.embedded.internal.PersistenceState;
  24. @RunWith(JMock.class)
  25. public class GivenEmbeddedViewerAndPersistentDomainObject {
  26. private Mockery mockery = new JUnit4Mockery();
  27. private EmbeddedContext mockContext;
  28. private AuthenticationSession mockAuthenticationSession;
  29. private NakedObjectsMetaModel metaModel;
  30. private HeadlessViewer viewer;
  31. private Employee employeeDO;
  32. private Employee employeeVO;
  33. @Before
  34. public void setUp() {
  35. employeeDO = new Employee();
  36. employeeDO.setName("Smith");
  37. mockContext = mockery.mock(EmbeddedContext.class);
  38. mockAuthenticationSession = mockery.mock(AuthenticationSession.class);
  39. mockery.checking(new Expectations(){{
  40. allowing(mockContext).getPersistenceState(with(any(Employee.class)));
  41. will(returnValue(PersistenceState.PERSISTENT));
  42. allowing(mockContext).getPersistenceState(with(any(String.class)));
  43. will(returnValue(PersistenceState.STANDALONE));
  44. allowing(mockContext).getAuthenticationSession();
  45. will(returnValue(mockAuthenticationSession));
  46. }});
  47. metaModel = new NakedObjectsMetaModel(mockContext, EmployeeRepositoryImpl.class, ClaimRepositoryImpl.class);
  48. metaModel.init();
  49. viewer = metaModel.getViewer();
  50. }
  51. @Test
  52. public void shouldBeAbleToGetViewOfDomainObject() {
  53. employeeVO = viewer.view(employeeDO);
  54. assertThat(employeeVO, is(notNullValue()));
  55. }
  56. @Test
  57. public void shouldBeAbleToReadVisibleProperty() {
  58. employeeVO = viewer.view(employeeDO);
  59. assertThat(employeeVO.getName(), is(employeeDO.getName()));
  60. }
  61. @Test(expected=HiddenException.class)
  62. public void shouldNotBeAbleToViewHiddenProperty() {
  63. employeeVO = viewer.view(employeeDO);
  64. employeeDO.whetherHideName = true;
  65. employeeVO.getName(); // should throw exception
  66. }
  67. @Test
  68. public void shouldBeAbleToModifyEnabledPropertyUsingSetter() {
  69. employeeVO = viewer.view(employeeDO);
  70. employeeVO.setName("Jones");
  71. assertThat(employeeDO.getName(), is("Jones"));
  72. assertThat(employeeVO.getName(), is(employeeDO.getName()));
  73. }
  74. @Test(expected=DisabledException.class)
  75. public void shouldNotBeAbleToModifyDisabledProperty() {
  76. employeeVO = viewer.view(employeeDO);
  77. employeeDO.reasonDisableName = "sorry, no change allowed";
  78. employeeVO.setName("Jones");
  79. }
  80. @Test(expected=UnsupportedOperationException.class)
  81. public void shouldNotBeAbleToModifyPropertyUsingModify() {
  82. employeeVO = viewer.view(employeeDO);
  83. employeeVO.modifyName("Jones"); // should throw exception
  84. }
  85. @Test(expected=UnsupportedOperationException.class)
  86. public void shouldNotBeAbleToModifyPropertyUsingClear() {
  87. employeeVO = viewer.view(employeeDO);
  88. employeeVO.clearName(); // should throw exception
  89. }
  90. @Test(expected=InvalidException.class)
  91. public void shouldNotBeAbleToModifyPropertyIfInvalid() {
  92. employeeVO = viewer.view(employeeDO);
  93. employeeDO.reasonValidateName = "sorry, invalid data";
  94. employeeVO.setName("Jones");
  95. }
  96. @Test(expected=DisabledException.class)
  97. public void shouldNotBeAbleToModifyPropertyForTransientOnly() {
  98. employeeVO = viewer.view(employeeDO);
  99. employeeVO.setPassword("12345678");
  100. }
  101. @Ignore("incomplete")
  102. @Test
  103. public void shouldBeAbleToInjectIntoDomainObjects() {
  104. // TODO: also ... be able to inject EmbeddedViewer as a service itself, if required.
  105. employeeVO.setPassword("12345678");
  106. }
  107. }