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

/dmCorePlugin/test/project/test/unit/dmFormEmbedMediaTest.php

https://github.com/xdade/diem
PHP | 275 lines | 202 code | 70 blank | 3 comment | 0 complexity | 2fcc71e1d8ade2fe51345d3b10ffff0c MD5 | raw file
  1. <?php
  2. require_once(realpath(dirname(__FILE__).'/../../..').'/unit/helper/dmUnitTestHelper.php');
  3. $helper = new dmUnitTestHelper();
  4. $helper->boot();
  5. $categ = dmDb::create('DmTestCateg', array('name' => dmString::random()))->saveGet();
  6. $user = dmDb::table('DmUser')->findOne();
  7. $t = new lime_test(44);
  8. $t->comment('Create a post without media');
  9. $form = new DmTestPostForm();
  10. $form->bind(array(), array());
  11. $t->is($form->isValid(), false, 'Empty form is not valid');
  12. $form->bind(array(
  13. 'title' => dmString::random(),
  14. 'categ_id' => $categ->id,
  15. 'user_id' => $user->id,
  16. 'date' => time()
  17. ), array());
  18. $t->is($form->isValid(), true, 'Form with binded title is valid');
  19. $post = $form->save();
  20. $t->is($post->exists(), true, 'The post has been created');
  21. $t->is($post->Image->exists(), false, 'The post has an empty new media');
  22. $postId = $post->id;
  23. $t->comment('Add an uploaded media to the post');
  24. $form = new DmTestPostForm($post);
  25. $media1Source = dmOs::join(sfConfig::get('sf_upload_dir'), 'images/default.jpg');
  26. $media1FileName = 'test_'.dmString::random().'.jpg';
  27. $media1FullPath = sys_get_temp_dir().'/'.$media1FileName;
  28. copy($media1Source, $media1FullPath);
  29. $form->bind(array(
  30. 'id' => $post->id,
  31. 'title' => $post->title,
  32. 'categ_id' => $categ->id,
  33. 'user_id' => $user->id,
  34. 'date' => time(),
  35. 'image_id_form' => array(
  36. 'dm_media_folder_id' => $post->getDmMediaFolder()->get('id')
  37. )
  38. ), array(
  39. 'image_id_form' => array('file' => array(
  40. 'name' => $media1FileName,
  41. 'type' => $helper->get('mime_type_resolver')->getByFilename($media1FullPath),
  42. 'tmp_name' => $media1FullPath,
  43. 'error' => 0,
  44. 'size' => filesize($media1FullPath)
  45. )))
  46. );
  47. $t->is($form->isValid(), true, 'Form with binded title and image is valid');
  48. $post = $form->save();
  49. $t->is($postId, $post->id, 'The same post has been updated');
  50. $t->is($post->Image->exists(), true, 'The post has an existing media');
  51. $media1 = $post->Image;
  52. $t->is($media1->file, $media1FileName, 'Post media filename is '.$media1FileName);
  53. $t->is($media1->size, filesize($media1FullPath), 'Post media size is '.filesize($media1FullPath));
  54. $t->comment('Resave the post without uploading media');
  55. $form = new DmTestPostForm($post);
  56. $form->bind(array(
  57. 'id' => $post->id,
  58. 'title' => $post->title,
  59. 'categ_id' => $categ->id,
  60. 'user_id' => $user->id,
  61. 'date' => time(),
  62. 'image_id_form' => array(
  63. 'id' => $post->Image->id,
  64. 'dm_media_folder_id' => $post->Image->Folder->id
  65. )
  66. ), array()
  67. );
  68. $t->is($form->isValid(), true, 'Form with binded title is valid');
  69. $post = $form->save();
  70. $t->is($postId, $post->id, 'The same post has been updated');
  71. $t->is($post->Image->exists(), true, 'The post has an existing media');
  72. $t->is($post->Image->file, $media1FileName, 'Post media filename is '.$media1FileName);
  73. $t->is($post->Image->size, filesize($media1FullPath), 'Post media size is '.filesize($media1FullPath));
  74. $t->comment('Remove the media from the post');
  75. $form = new DmTestPostForm($post);
  76. $form->bind(array(
  77. 'id' => $post->id,
  78. 'title' => $post->title,
  79. 'categ_id' => $categ->id,
  80. 'user_id' => $user->id,
  81. 'date' => time(),
  82. 'image_id_form' => array(
  83. 'id' => $post->Image->id,
  84. 'dm_media_folder_id' => $post->Image->Folder->id,
  85. 'remove' => true
  86. )
  87. ), array()
  88. );
  89. $t->is($form->isValid(), true, 'Form with binded title and remove is valid');
  90. $post = $form->save();
  91. $t->is($postId, $post->id, 'The same post has been updated');
  92. $t->is($post->Image, null, 'The post has no more media');
  93. $t->is($media1->exists(), true, 'The media still exists');
  94. $t->comment('Reupload the first media to the post');
  95. $form = new DmTestPostForm($post);
  96. $form->bind(array(
  97. 'id' => $post->id,
  98. 'title' => $post->title,
  99. 'categ_id' => $categ->id,
  100. 'user_id' => $user->id,
  101. 'date' => time(),
  102. 'image_id_form' => array(
  103. 'dm_media_folder_id' => $post->getDmMediaFolder()->get('id')
  104. )
  105. ), array(
  106. 'image_id_form' => array('file' => array(
  107. 'name' => $media1FileName,
  108. 'type' => $helper->get('mime_type_resolver')->getByFilename($media1FullPath),
  109. 'tmp_name' => $media1FullPath,
  110. 'error' => 0,
  111. 'size' => filesize($media1FullPath)
  112. )))
  113. );
  114. $t->is($form->isValid(), true, 'Form with binded title and image is valid');
  115. $post = $form->save();
  116. $t->is($postId, $post->id, 'The same post has been updated');
  117. $t->is($post->Image->exists(), true, 'The post has an existing media');
  118. $t->isnt($post->Image->id, $media1->id, 'The same old media were NOT reused');
  119. $media1Bis = $post->Image;
  120. $t->is($post->Image->file, $expected = str_replace('.jpg', '_1.jpg', $media1FileName), 'Post media filename is '.$expected);
  121. $t->is($post->Image->size, filesize($media1FullPath), 'Post media size is '.filesize($media1FullPath));
  122. $t->ok($media1->exists(), 'media1 still exists');
  123. $t->is($media1->file, $media1FileName, 'media1 file name is '.$media1FileName);
  124. $t->ok($media1Bis->exists(), 'media1Bis exists');
  125. $t->is($media1Bis->file, $expected = str_replace('.jpg', '_1.jpg', $media1FileName), 'media1Bis file name is '.$expected);
  126. $t->comment('Upload a new media to the post');
  127. $form = new DmTestPostForm($post);
  128. $media2Source = dmOs::join(sfConfig::get('sf_upload_dir'), 'images/deeper/firefox.jpg');
  129. $media2FileName = 'test_'.dmString::random().'.jpg';
  130. $media2FullPath = sys_get_temp_dir().'/'.$media2FileName;
  131. copy($media2Source, $media2FullPath);
  132. $form->bind(array(
  133. 'id' => $post->id,
  134. 'title' => $post->title,
  135. 'categ_id' => $categ->id,
  136. 'user_id' => $user->id,
  137. 'date' => time(),
  138. 'image_id_form' => array(
  139. 'id' => $post->Image->id,
  140. 'dm_media_folder_id' => $post->getDmMediaFolder()->get('id')
  141. )
  142. ), array(
  143. 'image_id_form' => array('file' => array(
  144. 'name' => $media2FileName,
  145. 'type' => $helper->get('mime_type_resolver')->getByFilename($media2FullPath),
  146. 'tmp_name' => $media2FullPath,
  147. 'error' => 0,
  148. 'size' => filesize($media2FullPath)
  149. )))
  150. );
  151. $t->is($form->isValid(), true, 'Form with binded title and new image is valid');
  152. $post = $form->save();
  153. $t->is($postId, $post->id, 'The same post has been updated');
  154. $t->is($post->Image->exists(), true, 'The post has an existing media');
  155. $media2 = $post->Image;
  156. $media2Size = $media2->size;
  157. $t->is($media2->file, $media2FileName, 'Post media filename is '.$media2FileName);
  158. $t->is($media2->size, filesize($media2FullPath), 'Post media size is '.filesize($media2FullPath));
  159. $t->is($media1->exists(), true, 'The first media still exists');
  160. $t->isnt($media1->id, $media2->id, 'The new media is another one');
  161. $t->comment('Upload a new media with the same name');
  162. $form = new DmTestPostForm($post);
  163. $media3Source = dmOs::join(sfConfig::get('sf_upload_dir'), 'images/default.jpg');
  164. $media3FileName = $media2FileName;
  165. $media3FullPath = sys_get_temp_dir().'/'.dmString::random().$media3FileName;
  166. copy($media3Source, $media3FullPath);
  167. $form->bind(array(
  168. 'id' => $post->id,
  169. 'title' => $post->title,
  170. 'categ_id' => $categ->id,
  171. 'user_id' => $user->id,
  172. 'date' => time(),
  173. 'image_id_form' => array(
  174. 'id' => $post->Image->id,
  175. 'dm_media_folder_id' => $post->getDmMediaFolder()->get('id')
  176. )
  177. ), array(
  178. 'image_id_form' => array('file' => array(
  179. 'name' => $media3FileName,
  180. 'type' => $helper->get('mime_type_resolver')->getByFilename($media3FullPath),
  181. 'tmp_name' => $media3FullPath,
  182. 'error' => 0,
  183. 'size' => filesize($media3FullPath)
  184. )))
  185. );
  186. $t->isnt($media2->size, filesize($media3FullPath), 'The uploaded media file has changed');
  187. $t->comment('The uploaded file size is '.filesize($media3FullPath));
  188. $t->is($form->isValid(), true, 'Form with binded title and new image with same name is valid');
  189. $post = $form->save();
  190. $t->is($postId, $post->id, 'The same post has been updated');
  191. $t->is($post->Image->exists(), true, 'The post has an existing media');
  192. $media3 = $post->Image;
  193. $t->is($media3->file, $expected = str_replace('.jpg', '_1.jpg', $media3FileName), 'Post media filename is '.$expected);
  194. $t->is($media3->size, filesize($media3FullPath), 'Post media size is '.filesize($media3FullPath));
  195. $t->isnt($media2->id, $media3->id, 'The new media is NOT the same');
  196. $t->isnt($media2->file, $media3->file, 'The media filename is NOT the same');
  197. $t->isnt($media2Size, $media3->size, 'The media file has changed');
  198. /*
  199. * clear the mess
  200. */
  201. $post->delete();
  202. $media1->delete();
  203. $media2->delete();
  204. $media3->delete();
  205. $categ->delete();