diff --git a/.travis.yml b/.travis.yml
index a021cee..bb9f5fa 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -29,4 +29,4 @@ after_success:
- if [[ $COVERAGE = 1 ]]; then bash <(curl -s https://codecov.io/bash); fi
notifications:
- email: false
\ No newline at end of file
+ email: false
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7c3ba6c..9071756 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,15 @@
# 1.x branch
## 1.1 branch
+# 1.1.1
+* fixed bug when using similar format name, , as `jpeg` or `tif`;
+* added `TestCase::assertFileExtension()` and `TestCase::assertThumbPath()`
+ methods;
+* added `ThumbTrait`;
+* added `Thumber\TestSuite\IntegrationTestCase` class;
+* removed `thumbUrl()` global function. Use instead `ThumbTrait::getUrl()`;
+* significantly improved and simplified all tests;
+* the MIT license has been applied.
+
# 1.1.0
* configuration parameters have the name of the plugin (`Thumber`) as prefix. So
now they are `Thumber.driver` and `Thumber.target`;
@@ -30,4 +40,4 @@
* by default, the `ThumbHelper` creates jpg thumbnails.
### 1.0.0
-* first release.
\ No newline at end of file
+* first release.
diff --git a/COPYNG b/COPYNG
deleted file mode 100644
index dba13ed..0000000
--- a/COPYNG
+++ /dev/null
@@ -1,661 +0,0 @@
- GNU AFFERO GENERAL PUBLIC LICENSE
- Version 3, 19 November 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU Affero General Public License is a free, copyleft license for
-software and other kinds of works, specifically designed to ensure
-cooperation with the community in the case of network server software.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-our General Public Licenses are intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- Developers that use our General Public Licenses protect your rights
-with two steps: (1) assert copyright on the software, and (2) offer
-you this License which gives you legal permission to copy, distribute
-and/or modify the software.
-
- A secondary benefit of defending all users' freedom is that
-improvements made in alternate versions of the program, if they
-receive widespread use, become available for other developers to
-incorporate. Many developers of free software are heartened and
-encouraged by the resulting cooperation. However, in the case of
-software used on network servers, this result may fail to come about.
-The GNU General Public License permits making a modified version and
-letting the public access it on a server without ever releasing its
-source code to the public.
-
- The GNU Affero General Public License is designed specifically to
-ensure that, in such cases, the modified source code becomes available
-to the community. It requires the operator of a network server to
-provide the source code of the modified version running there to the
-users of that server. Therefore, public use of a modified version, on
-a publicly accessible server, gives the public access to the source
-code of the modified version.
-
- An older license, called the Affero General Public License and
-published by Affero, was designed to accomplish similar goals. This is
-a different license, not a version of the Affero GPL, but Affero has
-released a new version of the Affero GPL which permits relicensing under
-this license.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU Affero General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Remote Network Interaction; Use with the GNU General Public License.
-
- Notwithstanding any other provision of this License, if you modify the
-Program, your modified version must prominently offer all users
-interacting with it remotely through a computer network (if your version
-supports such interaction) an opportunity to receive the Corresponding
-Source of your version by providing access to the Corresponding Source
-from a network server at no charge, through some standard or customary
-means of facilitating copying of software. This Corresponding Source
-shall include the Corresponding Source for any work covered by version 3
-of the GNU General Public License that is incorporated pursuant to the
-following paragraph.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the work with which it is combined will remain governed by version
-3 of the GNU General Public License.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU Affero General Public License from time to time. Such new versions
-will be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU Affero General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU Affero General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU Affero General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If your software can interact with users remotely through a computer
-network, you should also make sure that it provides a way for users to
-get its source. For example, if your program is a web application, its
-interface could display a "Source" link that leads users to an archive
-of the code. There are many ways you could offer source, and different
-solutions will be better for different programs; see section 13 for the
-specific requirements.
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU AGPL, see
-.
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..d13cc4b
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,19 @@
+The MIT License (MIT)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 9f8d6f3..91a44c1 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
# Thumber
+[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.txt)
[![Build Status](https://travis-ci.org/mirko-pagliai/cakephp-thumber.svg?branch=master)](https://travis-ci.org/mirko-pagliai/cakephp-thumber)
[![Coverage Status](https://img.shields.io/codecov/c/github/mirko-pagliai/cakephp-thumber.svg?style=flat-square)](https://codecov.io/github/mirko-pagliai/cakephp-thumber)
diff --git a/composer.json b/composer.json
index 6c8e79b..e42d2fd 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "Thumber plugin for CakePHP",
"homepage": "https://github.com/mirko-pagliai/cakephp-thumber",
"type": "cakephp-plugin",
- "license": "AGPL",
+ "license": "MIT",
"authors": [{
"name": "Mirko Pagliai",
"email": "mirko.pagliai@gmail.com"
@@ -14,7 +14,8 @@
"intervention/image": "^2.3"
},
"require-dev": {
- "cakephp/cakephp-codesniffer": "2.*",
+ "cakephp/cakephp-codesniffer": "^3.0",
+ "mirko-pagliai/reflection": "^1.0",
"phpunit/phpunit": "^5.7|^6.0"
},
"autoload": {
diff --git a/config/bootstrap.php b/config/bootstrap.php
index 1d78264..187b4a9 100644
--- a/config/bootstrap.php
+++ b/config/bootstrap.php
@@ -2,23 +2,13 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
use Cake\Core\Configure;
diff --git a/config/routes.php b/config/routes.php
index 20e207d..bd87ca8 100644
--- a/config/routes.php
+++ b/config/routes.php
@@ -2,27 +2,18 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
+use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;
-Router::plugin(THUMBER, ['path' => '/thumb'], function ($routes) {
+Router::plugin(THUMBER, ['path' => '/thumb'], function (RouteBuilder $routes) {
$routes->connect(
'/:basename',
['controller' => 'Thumbs', 'action' => 'thumb'],
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index fb35e92..0d518f3 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -19,4 +19,4 @@
./src/
-
\ No newline at end of file
+
diff --git a/src/Controller/ThumbsController.php b/src/Controller/ThumbsController.php
index 699cbab..e7f54f8 100644
--- a/src/Controller/ThumbsController.php
+++ b/src/Controller/ThumbsController.php
@@ -2,35 +2,27 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
namespace Thumber\Controller;
use Cake\Controller\Controller;
-use Cake\Core\Configure;
use Thumber\Network\Exception\ThumbNotFoundException;
+use Thumber\ThumbTrait;
/**
* Thumbs controller class
*/
class ThumbsController extends Controller
{
+ use ThumbTrait;
+
/**
* Renders a thumbnail
* @param string $basename Encoded thumbnail basename
@@ -39,7 +31,7 @@ class ThumbsController extends Controller
*/
public function thumb($basename)
{
- $file = Configure::read(THUMBER . '.target') . DS . base64_decode($basename);
+ $file = $this->getPath(base64_decode($basename));
if (!is_readable($file)) {
throw new ThumbNotFoundException(__d('thumber', 'File `{0}` doesn\'t exist', $file));
diff --git a/src/Core/global_functions.php b/src/Core/global_functions.php
index 20d712b..00eb6f5 100644
--- a/src/Core/global_functions.php
+++ b/src/Core/global_functions.php
@@ -2,26 +2,15 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
use Cake\Filesystem\Folder;
-use Cake\Routing\Router;
if (!function_exists('isUrl')) {
/**
@@ -46,16 +35,3 @@ function rtr($path)
return preg_replace(sprintf('/^%s/', preg_quote(Folder::slashTerm(ROOT), DS)), null, $path);
}
}
-
-if (!function_exists('thumbUrl')) {
- /**
- * Returns the url for a thumbnail
- * @param string $path Thumbnail path
- * @param bool $full If `true`, the full base URL will be prepended to the result
- * @return string
- */
- function thumbUrl($path, $full = true)
- {
- return Router::url(['_name' => 'thumb', base64_encode(basename($path))], $full);
- }
-}
diff --git a/src/Network/Exception/ThumbNotFoundException.php b/src/Network/Exception/ThumbNotFoundException.php
index 36c71c2..972b347 100644
--- a/src/Network/Exception/ThumbNotFoundException.php
+++ b/src/Network/Exception/ThumbNotFoundException.php
@@ -2,23 +2,13 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
* @since 1.0.4
*/
namespace Thumber\Network\Exception;
diff --git a/src/TestSuite/IntegrationTestCase.php b/src/TestSuite/IntegrationTestCase.php
new file mode 100644
index 0000000..0838b51
--- /dev/null
+++ b/src/TestSuite/IntegrationTestCase.php
@@ -0,0 +1,54 @@
+getPath('*')) as $file) {
+ //@codingStandardsIgnoreLine
+ unlink($file);
+ }
+ }
+
+ /**
+ * Asserts content type
+ * @param string $type The content-type to check for
+ * @param string $message The failure message that will be appended to the
+ * generated message
+ * @return void
+ */
+ public function assertContentType($type, $message = '')
+ {
+ $this->skipIf(!version_compare(PHP_VERSION, '7.0', '>') &&
+ in_array($type, ['image/x-ms-bmp', 'image/vnd.adobe.photoshop']));
+
+ parent::assertContentType($type, $message);
+ }
+}
diff --git a/src/TestSuite/TestCase.php b/src/TestSuite/TestCase.php
index e521772..f4a0685 100644
--- a/src/TestSuite/TestCase.php
+++ b/src/TestSuite/TestCase.php
@@ -2,43 +2,55 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
namespace Thumber\TestSuite;
+use Cake\Core\Configure;
+use Cake\Filesystem\Folder;
use Cake\TestSuite\TestCase as CakeTestCase;
+use Imagick;
+use Reflection\ReflectionTrait;
+use Thumber\ThumbTrait;
/**
* Thumber TestCase class
*/
abstract class TestCase extends CakeTestCase
{
+ use ReflectionTrait;
+ use ThumbTrait;
+
+ /**
+ * Teardown any static object changes and restore them
+ * @return void
+ */
+ public function tearDown()
+ {
+ parent::tearDown();
+
+ foreach (glob($this->getPath('*')) as $file) {
+ //@codingStandardsIgnoreLine
+ unlink($file);
+ }
+ }
+
/**
* Internal method to create a copy of an image file
* @param string $path Image file path
* @return string
*/
- protected static function _createCopy($path)
+ protected static function createCopy($path)
{
$result = tempnam(sys_get_temp_dir(), $path);
- $imagick = new \Imagick($path);
+ $imagick = new Imagick($path);
$imagick->stripImage();
$imagick->writeImage($result);
$imagick->clear();
@@ -46,22 +58,41 @@ protected static function _createCopy($path)
return $result;
}
+ /**
+ * Asserts for the extension of a file
+ * @param string $expected Expected extension
+ * @param string $file File
+ * @param string $message The failure message that will be appended to the
+ * generated message
+ * @return void
+ * @since 1.1.1
+ */
+ public static function assertFileExtension($expected, $file, $message = '')
+ {
+ self::assertEquals($expected, pathinfo($file, PATHINFO_EXTENSION), $message);
+ }
+
/**
* Asserts that the contents of one image file is equal to the contents of
- * another image file
+ * another image file
* @param string $expected Expected file
* @param string $actual Actual file
- * @param string $message Error message
+ * @param string $message The failure message that will be appended to the
+ * generated message
* @return void
- * @uses _createCopy()
+ * @uses createCopy()
*/
public static function assertImageFileEquals($expected, $actual, $message = '')
{
+ if (!Folder::isAbsolute($expected)) {
+ $expected = Configure::read(THUMBER . '.comparingDir') . $expected;
+ }
+
self::assertFileExists($expected, $message);
self::assertFileExists($actual, $message);
- $expectedCopy = self::_createCopy($expected);
- $actualCopy = self::_createCopy($actual);
+ $expectedCopy = self::createCopy($expected);
+ $actualCopy = self::createCopy($actual);
self::assertFileEquals($expectedCopy, $actualCopy, $message);
@@ -76,7 +107,8 @@ public static function assertImageFileEquals($expected, $actual, $message = '')
* @param string $filename Path to the tested file
* @param int $width Image width
* @param int $height Image height
- * @param string $message Error message
+ * @param string $message The failure message that will be appended to the
+ * generated message
* @return void
*/
public static function assertImageSize($filename, $width, $height, $message = '')
@@ -89,13 +121,35 @@ public static function assertImageSize($filename, $width, $height, $message = ''
/**
* Asserts that a file has a MIME content type
* @param string $filename Path to the tested file
- * @param string $mime MIME content type, like `text/plain` or `application/octet-stream`
- * @param string $message Error message
+ * @param string $mime MIME content type, like `text/plain` or `application/octet-stream`
+ * @param string $message The failure message that will be appended to the
+ * generated message
* @return void
*/
- public static function assertMime($filename, $mime, $message = '')
+ public function assertMime($filename, $mime, $message = '')
{
+ parent::skipIf(!version_compare(PHP_VERSION, '7.0', '>') &&
+ in_array($mime, ['image/x-ms-bmp', 'image/vnd.adobe.photoshop']));
+
self::assertFileExists($filename, $message);
self::assertEquals($mime, mime_content_type($filename), $message);
}
+
+ /**
+ * Asserts for a valid thumbnail path
+ * @param string $path Thumbnail path
+ * @param string $message The failure message that will be appended to the
+ * generated message
+ * @return void
+ * @since 1.1.1
+ */
+ public function assertThumbPath($path, $message = '')
+ {
+ $regex = sprintf(
+ '/^%s[a-z0-9]{32}\.(%s)/',
+ preg_quote($this->getPath() . DS, '/'),
+ implode('|', ['bmp', 'gif', 'jpg', 'ico', 'png', 'psd', 'tiff'])
+ );
+ self::assertRegExp($regex, $path, $message);
+ }
}
diff --git a/src/ThumbTrait.php b/src/ThumbTrait.php
new file mode 100644
index 0000000..b20fcd0
--- /dev/null
+++ b/src/ThumbTrait.php
@@ -0,0 +1,87 @@
+ 'thumb', base64_encode(basename($path))], $full);
+ }
+}
diff --git a/src/Utility/ThumbCreator.php b/src/Utility/ThumbCreator.php
index 96f365d..5a2b1c8 100644
--- a/src/Utility/ThumbCreator.php
+++ b/src/Utility/ThumbCreator.php
@@ -2,32 +2,25 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
* @see https://github.com/mirko-pagliai/cakephp-thumber/wiki/How-to-uses-the-ThumbCreator-utility
*/
namespace Thumber\Utility;
-use Cake\Core\Configure;
use Cake\Core\Plugin;
use Cake\Filesystem\Folder;
use Cake\Network\Exception\InternalErrorException;
+use Intervention\Image\Constraint;
+use Intervention\Image\Exception\NotReadableException;
+use Intervention\Image\Image;
use Intervention\Image\ImageManager;
+use Thumber\ThumbTrait;
/**
* Utility to create a thumb.
@@ -37,6 +30,8 @@
*/
class ThumbCreator
{
+ use ThumbTrait;
+
/**
* Arguments that will be used to generate the name of the thumbnail.
*
@@ -53,24 +48,12 @@ class ThumbCreator
*/
protected $callbacks = [];
- /**
- * File extension
- * @var string
- */
- protected $extension;
-
/**
* File path
* @var string
*/
protected $path;
- /**
- * Supported formats
- * @var array
- */
- protected $supportedFormats = ['bmp', 'gif', 'ico', 'jpg', 'png', 'psd', 'tiff'];
-
/**
* Construct.
* It sets the file path and extension.
@@ -78,37 +61,55 @@ class ThumbCreator
* thumbnail. It can be a relative path (to APP/webroot/img), a full path
* or a remote url
* @return \Thumber\Utility\ThumbCreator
- * @uses _getExtension()
- * @uses _resolveFilePath()
+ * @uses resolveFilePath()
* @uses $arguments
- * @uses $extension
* @uses $path
*/
public function __construct($path)
{
- $this->path = $this->_resolveFilePath($path);
- $this->extension = $this->_getExtension($this->path);
+ $this->path = $this->resolveFilePath($path);
$this->arguments[] = $this->path;
return $this;
}
/**
- * Gets the extension for a file
- * @param string $path File path
- * @return string
+ * Internal method to get default options for the `save()` method
+ * @param array $options Passed options
+ * @return array Passed options added to the default options
+ * @uses $path
*/
- protected function _getExtension($path)
+ protected function getDefaultSaveOptions($options)
{
- $extension = strtolower(pathinfo(explode('?', $path, 2)[0], PATHINFO_EXTENSION));
+ $options += ['format' => $this->getExtension($this->path), 'quality' => 90, 'target' => false];
- if ($extension === 'jpeg') {
- return 'jpg';
- } elseif ($extension === 'tif') {
- return 'tiff';
+ //Fixes the name of some similar formats
+ if ($options['format'] === 'jpeg') {
+ $options['format'] = 'jpg';
+ } elseif ($options['format'] === 'tif') {
+ $options['format'] = 'tiff';
}
- return $extension;
+ return $options;
+ }
+
+ /**
+ * Gets an `Image` instance
+ * @return \Intervention\Image\Image
+ * @throws InternalErrorException
+ * @uses $path
+ */
+ protected function getImageInstance()
+ {
+ //Tries to create the image instance
+ try {
+ $imageInstance = (new ImageManager(['driver' => $this->getDriver()]))
+ ->make($this->path);
+ } catch (NotReadableException $e) {
+ throw new InternalErrorException(__d('thumber', 'Unable to read image from file `{0}`', rtr($this->path)));
+ }
+
+ return $imageInstance;
}
/**
@@ -117,7 +118,7 @@ protected function _getExtension($path)
* @return string
* @throws InternalErrorException
*/
- protected function _resolveFilePath($path)
+ protected function resolveFilePath($path)
{
//Returns, if it's a remote file
if (isUrl($path)) {
@@ -171,7 +172,7 @@ public function crop($width = null, $heigth = null, array $options = [])
$this->arguments[] = [__FUNCTION__, $width, $heigth, $options];
//Adds the callback
- $this->callbacks[] = function ($imageInstance) use ($width, $heigth, $options) {
+ $this->callbacks[] = function (Image $imageInstance) use ($width, $heigth, $options) {
return $imageInstance->crop($width, $heigth, $options['x'], $options['y']);
};
@@ -202,8 +203,8 @@ public function fit($width = null, $heigth = null, array $options = [])
$this->arguments[] = [__FUNCTION__, $width, $heigth, $options];
//Adds the callback
- $this->callbacks[] = function ($imageInstance) use ($width, $heigth, $options) {
- return $imageInstance->fit($width, $heigth, function ($constraint) use ($options) {
+ $this->callbacks[] = function (Image $imageInstance) use ($width, $heigth, $options) {
+ return $imageInstance->fit($width, $heigth, function (Constraint $constraint) use ($options) {
if ($options['upsize']) {
$constraint->upsize();
}
@@ -232,8 +233,8 @@ public function resize($width = null, $heigth = null, array $options = [])
$this->arguments[] = [__FUNCTION__, $width, $heigth, $options];
//Adds the callback
- $this->callbacks[] = function ($imageInstance) use ($width, $heigth, $options) {
- return $imageInstance->resize($width, $heigth, function ($constraint) use ($options) {
+ $this->callbacks[] = function (Image $imageInstance) use ($width, $heigth, $options) {
+ return $imageInstance->resize($width, $heigth, function (Constraint $constraint) use ($options) {
if ($options['aspectRatio']) {
$constraint->aspectRatio();
}
@@ -253,12 +254,11 @@ public function resize($width = null, $heigth = null, array $options = [])
* @return string Thumbnail path
* @see https://github.com/mirko-pagliai/cakephp-thumber/wiki/How-to-uses-the-ThumbCreator-utility#save
* @throws InternalErrorException
- * @uses _getExtension()
+ * @uses getDefaultSaveOptions()
+ * @uses getImageInstance()
* @uses $arguments
* @uses $callbacks
- * @uses $extension
* @uses $path
- * @uses $supportedFormats
*/
public function save(array $options = [])
{
@@ -266,33 +266,24 @@ public function save(array $options = [])
throw new InternalErrorException(__d('thumber', 'No valid method called before the `{0}` method', __FUNCTION__));
}
- //Sets default options
- $options += ['format' => $this->extension, 'quality' => 90, 'target' => false];
-
+ $options = $this->getDefaultSaveOptions($options);
$target = $options['target'];
- if (empty($target)) {
- $this->arguments[] = [Configure::read(THUMBER . '.driver'), $options['format'], $options['quality']];
+ if (!$target) {
+ $this->arguments[] = [$this->getDriver(), $options['format'], $options['quality']];
$target = md5(serialize($this->arguments)) . '.' . $options['format'];
} else {
- $options['format'] = $this->_getExtension($target);
+ $options['format'] = $this->getExtension($target);
}
if (!Folder::isAbsolute($target)) {
- $target = Configure::read(THUMBER . '.target') . DS . $target;
+ $target = $this->getPath($target);
}
//Creates the thumbnail, if this does not exist
if (!file_exists($target)) {
- //Tries to create the image instance
- try {
- $imageInstance = (new ImageManager([
- 'driver' => Configure::read(THUMBER . '.driver'),
- ]))->make($this->path);
- } catch (\Intervention\Image\Exception\NotReadableException $e) {
- throw new InternalErrorException(__d('thumber', 'Unable to read image from file `{0}`', rtr($this->path)));
- }
+ $imageInstance = $this->getImageInstance();
//Calls each callback
foreach ($this->callbacks as $callback) {
diff --git a/src/View/Helper/ThumbHelper.php b/src/View/Helper/ThumbHelper.php
index 5b98006..728c83c 100644
--- a/src/View/Helper/ThumbHelper.php
+++ b/src/View/Helper/ThumbHelper.php
@@ -2,28 +2,19 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
* @see https://github.com/mirko-pagliai/cakephp-thumber/wiki/How-to-use-the-helper
*/
namespace Thumber\View\Helper;
use Cake\View\Helper;
+use Thumber\ThumbTrait;
use Thumber\Utility\ThumbCreator;
/**
@@ -33,6 +24,8 @@
*/
class ThumbHelper extends Helper
{
+ use ThumbTrait;
+
/**
* Helpers
* @var array
@@ -82,7 +75,7 @@ public function cropUrl($path, array $params = [], array $options = [])
//Creates the thumbnail
$thumb = (new ThumbCreator($path))->crop($params['width'], $params['height'])->save($params);
- return thumbUrl($thumb, $options['fullBase']);
+ return $this->getUrl($thumb, $options['fullBase']);
}
/**
@@ -128,7 +121,7 @@ public function fitUrl($path, array $params = [], array $options = [])
//Creates the thumbnail
$thumb = (new ThumbCreator($path))->fit($params['width'], $params['height'])->save($params);
- return thumbUrl($thumb, $options['fullBase']);
+ return $this->getUrl($thumb, $options['fullBase']);
}
/**
@@ -166,6 +159,6 @@ public function resizeUrl($path, array $params = [], array $options = [])
//Creates the thumbnail
$thumb = (new ThumbCreator($path))->resize($params['width'], $params['height'])->save($params);
- return thumbUrl($thumb, $options['fullBase']);
+ return $this->getUrl($thumb, $options['fullBase']);
}
}
diff --git a/tests/TestCase/Controller/ThumbsControllerTest.php b/tests/TestCase/Controller/ThumbsControllerTest.php
index d115b49..31efd4c 100644
--- a/tests/TestCase/Controller/ThumbsControllerTest.php
+++ b/tests/TestCase/Controller/ThumbsControllerTest.php
@@ -2,30 +2,19 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
namespace Thumber\Test\TestCase\Controller;
-use Cake\Core\Configure;
-use Cake\TestSuite\IntegrationTestCase;
use Cake\View\View;
use Thumber\Controller\ThumbsController;
+use Thumber\TestSuite\IntegrationTestCase;
use Thumber\Utility\ThumbCreator;
use Thumber\View\Helper\ThumbHelper;
@@ -44,21 +33,39 @@ public function setUp()
{
parent::setUp();
- $this->View = new View();
- $this->Thumb = new ThumbHelper($this->View);
+ $this->Thumb = new ThumbHelper(new View);
}
/**
- * Teardown any static object changes and restore them
- * @return void
+ * Test for `thumb()` method, with some files
+ * @test
*/
- public function tearDown()
+ public function testThumb()
{
- parent::tearDown();
-
- //Deletes all thumbnails
- foreach (glob(Configure::read(THUMBER . '.target') . DS . '*') as $file) {
- unlink($file);
+ $extensions = [
+ 'bmp' => 'image/x-ms-bmp',
+ 'gif' => 'image/gif',
+ 'ico' => 'image/x-icon',
+ 'jpeg' => 'image/jpeg',
+ 'jpg' => 'image/jpeg',
+ 'png' => 'image/png',
+ 'psd' => 'image/vnd.adobe.photoshop',
+ 'tif' => 'image/tiff',
+ 'tiff' => 'image/tiff',
+ ];
+
+ foreach ($extensions as $extension => $expectedMimeType) {
+ $file = '400x400.' . $extension;
+ $thumb = (new ThumbCreator($file))->resize(200)->save();
+ $url = $this->Thumb->resizeUrl($file, [
+ 'format' => pathinfo($file, PATHINFO_EXTENSION),
+ 'width' => 200,
+ ], ['fullBase' => false]);
+
+ $this->get($url);
+ $this->assertResponseOk();
+ $this->assertFileResponse($thumb);
+ $this->assertContentType($expectedMimeType);
}
}
@@ -81,169 +88,6 @@ public function testThumbNoExistingFile()
public function testThumbNoExistingFileResponse()
{
$this->get(base64_encode('noExistingFile'));
- $this->assertEquals(404, $this->_response->getStatusCode());
- $this->assertNull($this->_response->getFile());
$this->assertResponseError();
}
-
- /**
- * Test for `thumb()` method, with a bmp file
- * @return void
- * @test
- */
- public function testThumbWithBmp()
- {
- $file = '400x400.bmp';
- $thumb = (new ThumbCreator($file))->resize(200)->save();
- $url = $this->Thumb->resizeUrl($file, ['format' => 'bmp', 'width' => 200], ['fullBase' => false]);
-
- $this->get($url);
- $this->assertResponseOk();
-
- if (version_compare(PHP_VERSION, '7.0', '>')) {
- $this->assertContentType('image/x-ms-bmp');
- }
-
- $this->assertFileResponse($thumb);
- }
-
- /**
- * Test for `thumb()` method, with a gif file
- * @return void
- * @test
- */
- public function testThumbWithGif()
- {
- $file = '400x400.gif';
- $thumb = (new ThumbCreator($file))->resize(200)->save();
- $url = $this->Thumb->resizeUrl($file, ['format' => 'gif', 'width' => 200], ['fullBase' => false]);
-
- $this->get($url);
- $this->assertResponseOk();
- $this->assertContentType('image/gif');
- $this->assertFileResponse($thumb);
- }
-
- /**
- * Test for `thumb()` method, with a ico file
- * @return void
- * @test
- */
- public function testThumbWithIco()
- {
- $file = '400x400.ico';
- $thumb = (new ThumbCreator($file))->resize(200)->save();
- $url = $this->Thumb->resizeUrl($file, ['format' => 'ico', 'width' => 200], ['fullBase' => false]);
-
- $this->get($url);
- $this->assertResponseOk();
- $this->assertContentType('image/x-icon');
- $this->assertFileResponse($thumb);
- }
-
- /**
- * Test for `thumb()` method, with a jpeg file
- * @return void
- * @test
- */
- public function testThumbWithJpeg()
- {
- $file = '400x400.jpeg';
- $thumb = (new ThumbCreator($file))->resize(200)->save();
- $url = $this->Thumb->resizeUrl($file, ['format' => 'jpg', 'width' => 200], ['fullBase' => false]);
-
- $this->get($url);
- $this->assertResponseOk();
- $this->assertContentType('image/jpeg');
- $this->assertFileResponse($thumb);
- }
-
- /**
- * Test for `thumb()` method, with a jpg file
- * @return void
- * @test
- */
- public function testThumbWithJpg()
- {
- $file = '400x400.jpg';
- $thumb = (new ThumbCreator($file))->resize(200)->save();
- $url = $this->Thumb->resizeUrl($file, ['format' => 'jpg', 'width' => 200], ['fullBase' => false]);
-
- $this->get($url);
- $this->assertResponseOk();
- $this->assertContentType('image/jpeg');
- $this->assertFileResponse($thumb);
- }
-
- /**
- * Test for `thumb()` method, with a png file
- * @return void
- * @test
- */
- public function testThumbWithPng()
- {
- $file = '400x400.png';
- $thumb = (new ThumbCreator($file))->resize(200)->save();
- $url = $this->Thumb->resizeUrl($file, ['format' => 'png', 'width' => 200], ['fullBase' => false]);
-
- $this->get($url);
- $this->assertResponseOk();
- $this->assertContentType('image/png');
- $this->assertFileResponse($thumb);
- }
-
- /**
- * Test for `thumb()` method, with a psd file
- * @return void
- * @test
- */
- public function testThumbWithPsd()
- {
- $file = '400x400.psd';
- $thumb = (new ThumbCreator($file))->resize(200)->save();
- $url = $this->Thumb->resizeUrl($file, ['format' => 'psd', 'width' => 200], ['fullBase' => false]);
-
- $this->get($url);
- $this->assertResponseOk();
-
- if (version_compare(PHP_VERSION, '7.0', '>')) {
- $this->assertContentType('image/vnd.adobe.photoshop');
- }
-
- $this->assertFileResponse($thumb);
- }
-
- /**
- * Test for `thumb()` method, with a tif file
- * @return void
- * @test
- */
- public function testThumbWithTif()
- {
- $file = '400x400.tif';
- $thumb = (new ThumbCreator($file))->resize(200)->save();
- $url = $this->Thumb->resizeUrl($file, ['format' => 'tiff', 'width' => 200], ['fullBase' => false]);
-
- $this->get($url);
- $this->assertResponseOk();
- $this->assertContentType('image/tiff');
- $this->assertFileResponse($thumb);
- }
-
- /**
- * Test for `thumb()` method, with a tiff file
- * @return void
- * @test
- */
- public function testThumbWithTiff()
- {
- $file = '400x400.tiff';
- $thumb = (new ThumbCreator($file))->resize(200)->save();
- $url = $this->Thumb->resizeUrl($file, ['format' => 'tiff', 'width' => 200], ['fullBase' => false]);
-
- $this->get($url);
- $this->assertResponseOk();
- $this->assertContentType('image/tiff');
- $this->assertFileResponse($thumb);
- }
}
diff --git a/tests/TestCase/Core/GlobalFunctionsTest.php b/tests/TestCase/Core/GlobalFunctionsTest.php
index 826e828..701179a 100644
--- a/tests/TestCase/Core/GlobalFunctionsTest.php
+++ b/tests/TestCase/Core/GlobalFunctionsTest.php
@@ -2,27 +2,17 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
namespace Thumber\Test\TestCase;
-use Cake\TestSuite\TestCase;
+use Thumber\TestSuite\TestCase;
/**
* GlobalFunctionsTest class
@@ -80,37 +70,4 @@ public function testRtr()
$expected = DS . 'my' . DS . 'folder';
$this->assertEquals($expected, $result);
}
-
- /**
- * Test for `isUrl()` global function
- * @return void
- * @test
- */
- public function testThumbUrl()
- {
- if (!function_exists('getUrlFromPath')) {
- function getUrlFromPath($path)
- {
- return sprintf('http://localhost/thumb/%s', base64_encode(basename($path)));
- }
- }
-
- $path = 'mypath';
- $this->assertEquals(getUrlFromPath($path), thumbUrl($path));
-
- $path = 'mypath.gif';
- $this->assertEquals(getUrlFromPath($path), thumbUrl($path));
-
- $path = 'dir/mypath';
- $this->assertEquals(getUrlFromPath($path), thumbUrl($path));
-
- $path = 'dir/mypath.gif';
- $this->assertEquals(getUrlFromPath($path), thumbUrl($path));
-
- $path = '/dir/mypath';
- $this->assertEquals(getUrlFromPath($path), thumbUrl($path));
-
- $path = '/dir/mypath.gif';
- $this->assertEquals(getUrlFromPath($path), thumbUrl($path));
- }
}
diff --git a/tests/TestCase/Network/Exception/ThumbNotFoundExceptionTest.php b/tests/TestCase/Network/Exception/ThumbNotFoundExceptionTest.php
index 8188a36..7b2bc86 100644
--- a/tests/TestCase/Network/Exception/ThumbNotFoundExceptionTest.php
+++ b/tests/TestCase/Network/Exception/ThumbNotFoundExceptionTest.php
@@ -2,28 +2,18 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
namespace Thumber\Test\TestCase\Network\Exception;
-use Cake\TestSuite\TestCase;
use Thumber\Network\Exception\ThumbNotFoundException;
+use Thumber\TestSuite\TestCase;
/**
* ThumbNotFoundExceptionTest class
diff --git a/tests/TestCase/TestSuite/TestCaseTest.php b/tests/TestCase/TestSuite/TestCaseTest.php
index f0aaf08..4b350cf 100644
--- a/tests/TestCase/TestSuite/TestCaseTest.php
+++ b/tests/TestCase/TestSuite/TestCaseTest.php
@@ -2,25 +2,14 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
-
namespace Thumber\Test\TestCase\TestSuite;
use Cake\Core\Configure;
@@ -42,7 +31,8 @@ public function testAssertImageFileEquals()
copy($original, $copy);
- $this->assertImageFileEquals($original, $copy);
+ $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w200_h200.jpg', $copy);
+ $this->assertImageFileEquals('resize_w200_h200.jpg', $copy);
}
/**
diff --git a/tests/TestCase/ThumbTraitTest.php b/tests/TestCase/ThumbTraitTest.php
new file mode 100644
index 0000000..f2bc3c0
--- /dev/null
+++ b/tests/TestCase/ThumbTraitTest.php
@@ -0,0 +1,78 @@
+assertNotEmpty($this->getDriver());
+ }
+
+ /**
+ * Test for `getExtension()` method
+ * @test
+ */
+ public function testGetExtension()
+ {
+ $this->assertEquals('jpg', $this->getExtension('file.jpg'));
+ $this->assertEquals('jpg', $this->getExtension('file.jpg?'));
+ $this->assertEquals('jpg', $this->getExtension('file.jpg?param'));
+ $this->assertEquals('jpg', $this->getExtension('file.jpg?param=value'));
+ $this->assertEquals('jpg', $this->getExtension('file.jpeg'));
+ $this->assertEquals('tiff', $this->getExtension('file.tiff'));
+ $this->assertEquals('tiff', $this->getExtension('file.tif'));
+ }
+
+ /**
+ * Test for `getPath()` method
+ * @test
+ */
+ public function testGetPath()
+ {
+ $this->assertEquals(Configure::read(THUMBER . '.target'), $this->getPath());
+ $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'file.jpg', $this->getPath('file.jpg'));
+ }
+
+ /**
+ * Test for `getSupportedFormats()` method
+ * @test
+ */
+ public function testGetSupportedFormats()
+ {
+ $this->assertNotEmpty($this->getSupportedFormats());
+ $this->assertTrue(is_array($this->getSupportedFormats()));
+ }
+
+ /**
+ * Test for `getUrl()` method
+ * @test
+ */
+ public function testGetUrl()
+ {
+ $this->assertRegExp('/^http:\/\/localhost\/thumb\/.+$/', $this->getUrl('file.jpg'));
+ }
+}
diff --git a/tests/TestCase/Utility/Gd/ThumbCreatorFormatsTest.php b/tests/TestCase/Utility/Gd/ThumbCreatorFormatsTest.php
deleted file mode 100644
index 75769d1..0000000
--- a/tests/TestCase/Utility/Gd/ThumbCreatorFormatsTest.php
+++ /dev/null
@@ -1,114 +0,0 @@
-.
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
- */
-
-namespace Thumber\Test\TestCase\Utility\Gd;
-
-use Cake\Core\Configure;
-use Thumber\Test\TestCase\Utility\ThumbCreatorFormatsTest as BaseThumbCreatorFormatsTest;
-
-/**
- * ThumbCreatorFormatsTest class.
- *
- * These tests use the GD library.
- */
-class ThumbCreatorFormatsTest extends BaseThumbCreatorFormatsTest
-{
- /**
- * Setup the test case, backup the static object values so they can be
- * restored. Specifically backs up the contents of Configure and paths in
- * App if they have not already been backed up
- * @return void
- */
- public function setUp()
- {
- parent::setUp();
-
- Configure::write(THUMBER . '.driver', 'gd');
- }
-
- /**
- * Teardown any static object changes and restore them
- * @return void
- */
- public function tearDown()
- {
- parent::tearDown();
-
- Configure::write(THUMBER . '.driver', 'imagick');
- }
-
- /**
- * Test for `save()` method, using a bmp file
- * @expectedException Cake\Network\Exception\InternalErrorException
- * @expectedExceptionMessage Unable to read image from file `tests/test_app/webroot/img/400x400.bmp`
- * @test
- */
- public function testSaveBmp()
- {
- parent::testSaveBmp();
- }
-
- /**
- * Test for `save()` method, using a ico file
- * @expectedException Cake\Network\Exception\InternalErrorException
- * @expectedExceptionMessage Unable to read image from file `tests/test_app/webroot/img/400x400.ico`
- * @test
- */
- public function testSaveIco()
- {
- parent::testSaveIco();
- }
-
- /**
- * Test for `save()` method, using a psd file
- * @expectedException Cake\Network\Exception\InternalErrorException
- * @expectedExceptionMessage Unable to read image from file `tests/test_app/webroot/img/400x400.psd`
- * @test
- */
- public function testSavePsd()
- {
- parent::testSavePsd();
- }
-
- /**
- * Test for `save()` method, using a tif file
- * @expectedException Cake\Network\Exception\InternalErrorException
- * @expectedExceptionMessage Unable to read image from file `tests/test_app/webroot/img/400x400.tif`
- * @test
- */
- public function testSaveTif()
- {
- parent::testSaveTif();
- }
-
- /**
- * Test for `save()` method, using a tiff file
- * @expectedException Cake\Network\Exception\InternalErrorException
- * @expectedExceptionMessage Unable to read image from file `tests/test_app/webroot/img/400x400.tiff`
- * @test
- */
- public function testSaveTiff()
- {
- parent::testSaveTiff();
- }
-}
diff --git a/tests/TestCase/Utility/Gd/ThumbCreatorOperationsTest.php b/tests/TestCase/Utility/Gd/ThumbCreatorOperationsTest.php
index 15fd32d..b213f72 100644
--- a/tests/TestCase/Utility/Gd/ThumbCreatorOperationsTest.php
+++ b/tests/TestCase/Utility/Gd/ThumbCreatorOperationsTest.php
@@ -2,25 +2,14 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
-
namespace Thumber\Test\TestCase\Utility\Gd;
use Cake\Core\Configure;
diff --git a/tests/TestCase/Utility/Gd/ThumbCreatorSaveTest.php b/tests/TestCase/Utility/Gd/ThumbCreatorSaveTest.php
index d894814..5b52085 100644
--- a/tests/TestCase/Utility/Gd/ThumbCreatorSaveTest.php
+++ b/tests/TestCase/Utility/Gd/ThumbCreatorSaveTest.php
@@ -2,25 +2,14 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
-
namespace Thumber\Test\TestCase\Utility\Gd;
use Cake\Core\Configure;
diff --git a/tests/TestCase/Utility/ThumbCreatorFormatsTest.php b/tests/TestCase/Utility/ThumbCreatorFormatsTest.php
deleted file mode 100644
index 2f91974..0000000
--- a/tests/TestCase/Utility/ThumbCreatorFormatsTest.php
+++ /dev/null
@@ -1,293 +0,0 @@
-.
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
- */
-
-namespace Thumber\Test\TestCase\Utility;
-
-use Cake\Core\Configure;
-use Thumber\TestSuite\TestCase;
-use Thumber\Utility\ThumbCreator;
-
-/**
- * ThumbCreatorFormatsTest class
- */
-class ThumbCreatorFormatsTest extends TestCase
-{
- /**
- * Teardown any static object changes and restore them
- * @return void
- */
- public function tearDown()
- {
- parent::tearDown();
-
- //Deletes all thumbnails
- foreach (glob(Configure::read(THUMBER . '.target') . DS . '*') as $file) {
- unlink($file);
- }
- }
-
- /**
- * Test for `save()` method, using a bmp file
- * @test
- */
- public function testSaveBmp()
- {
- $thumb = (new ThumbCreator('400x400.bmp'))->resize(200)->save();
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.bmp/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
-
- if (version_compare(PHP_VERSION, '7.0', '>')) {
- $this->assertMime($thumb, 'image/x-ms-bmp');
- }
-
- //Using `format` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['format' => 'bmp']);
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.bmp/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
-
- if (version_compare(PHP_VERSION, '7.0', '>')) {
- $this->assertMime($thumb, 'image/x-ms-bmp');
- }
-
- //Using `target` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.bmp']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'image.bmp', $thumb);
-
- if (version_compare(PHP_VERSION, '7.0', '>')) {
- $this->assertMime($thumb, 'image/x-ms-bmp');
- }
- }
-
- /**
- * Test for `save()` method, using a gif file
- * @test
- */
- public function testSaveGif()
- {
- $thumb = (new ThumbCreator('400x400.gif'))->resize(200)->save();
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.gif/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/gif');
-
- //Using `format` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['format' => 'gif']);
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.gif/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/gif');
-
- //Using `target` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.gif']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'image.gif', $thumb);
- $this->assertMime($thumb, 'image/gif');
- }
-
- /**
- * Test for `save()` method, using a ico file
- * @test
- */
- public function testSaveIco()
- {
- $thumb = (new ThumbCreator('400x400.ico'))->resize(200)->save();
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.ico/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/x-icon');
-
- //Using `format` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['format' => 'ico']);
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.ico/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/x-icon');
-
- //Using `target` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.ico']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'image.ico', $thumb);
- $this->assertMime($thumb, 'image/x-icon');
- }
-
- /**
- * Test for `save()` method, using jpeg file
- * @test
- */
- public function testSaveJpeg()
- {
- $thumb = (new ThumbCreator('400x400.jpeg'))->resize(200)->save();
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.jpg$/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/jpeg');
-
- //Using `target` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.jpeg']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'image.jpeg', $thumb);
- $this->assertMime($thumb, 'image/jpeg');
- }
-
- /**
- * Test for `save()` method, using jpeg file
- * @test
- */
- public function testSaveJpg()
- {
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(200)->save();
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.jpg$/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/jpeg');
-
- //Using `format` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['format' => 'jpg']);
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.jpg/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/jpeg');
-
- //Using `target` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.jpg']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'image.jpg', $thumb);
- $this->assertMime($thumb, 'image/jpeg');
- }
-
- /**
- * Test for `save()` method, using a png file
- * @test
- */
- public function testSavePng()
- {
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save();
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.png/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/png');
-
- //Using `format` option
- $thumb = (new ThumbCreator('400x400.gif'))->resize(200)->save(['format' => 'png']);
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.png/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/png');
-
- //Using `target` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.png']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'image.png', $thumb);
- $this->assertMime($thumb, 'image/png');
- }
-
- /**
- * Test for `save()` method, using a psd file
- * @test
- */
- public function testSavePsd()
- {
- $thumb = (new ThumbCreator('400x400.psd'))->resize(200)->save();
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.psd/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
-
- if (version_compare(PHP_VERSION, '7.0', '>')) {
- $this->assertMime($thumb, 'image/vnd.adobe.photoshop');
- }
-
- //Using `format` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['format' => 'psd']);
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.psd/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
-
- if (version_compare(PHP_VERSION, '7.0', '>')) {
- $this->assertMime($thumb, 'image/vnd.adobe.photoshop');
- }
-
- //Using `target` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.psd']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'image.psd', $thumb);
-
- if (version_compare(PHP_VERSION, '7.0', '>')) {
- $this->assertMime($thumb, 'image/vnd.adobe.photoshop');
- }
- }
-
- /**
- * Test for `save()` method, using a tif file
- * @test
- */
- public function testSaveTif()
- {
- $thumb = (new ThumbCreator('400x400.tif'))->resize(200)->save();
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.tiff/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/tiff');
-
- //Using `target` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.tif']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'image.tif', $thumb);
- $this->assertMime($thumb, 'image/tiff');
- }
-
- /**
- * Test for `save()` method, using a tiff file
- * @test
- */
- public function testSaveTiff()
- {
- $thumb = (new ThumbCreator('400x400.tiff'))->resize(200)->save();
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.tiff/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/tiff');
-
- //Using `format` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['format' => 'tiff']);
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.tiff/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
- $this->assertMime($thumb, 'image/tiff');
-
- //Using `target` option
- $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.tiff']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'image.tiff', $thumb);
- $this->assertMime($thumb, 'image/tiff');
- }
-}
diff --git a/tests/TestCase/Utility/ThumbCreatorOperationsTest.php b/tests/TestCase/Utility/ThumbCreatorOperationsTest.php
index 692b385..56a74b5 100644
--- a/tests/TestCase/Utility/ThumbCreatorOperationsTest.php
+++ b/tests/TestCase/Utility/ThumbCreatorOperationsTest.php
@@ -2,28 +2,16 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
-
namespace Thumber\Test\TestCase\Utility;
-use Cake\Core\Configure;
use Thumber\TestSuite\TestCase;
use Thumber\Utility\ThumbCreator;
@@ -32,20 +20,6 @@
*/
class ThumbCreatorOperationsTest extends TestCase
{
- /**
- * Teardown any static object changes and restore them
- * @return void
- */
- public function tearDown()
- {
- parent::tearDown();
-
- //Deletes all thumbnails
- foreach (glob(Configure::read(THUMBER . '.target') . DS . '*') as $file) {
- unlink($file);
- }
- }
-
/**
* Test for `crop()` method
* @ŧest
@@ -75,11 +49,11 @@ public function testCrop()
public function testCropImageEquals()
{
$thumb = (new ThumbCreator('400x400.jpg'))->crop(200, 200)->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'crop_w200_h200.jpg', $thumb);
+ $this->assertImageFileEquals('crop_w200_h200.jpg', $thumb);
//In this case, the width will be the original size
$thumb = (new ThumbCreator('400x400.jpg'))->crop(400, 200)->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'crop_w400_h200.jpg', $thumb);
+ $this->assertImageFileEquals('crop_w400_h200.jpg', $thumb);
}
/**
@@ -88,10 +62,7 @@ public function testCropImageEquals()
*/
public function testCropXAndY()
{
- $thumb = (new ThumbCreator('400x400.jpg'))->crop(200, 200, [
- 'x' => 50,
- 'y' => 50,
- ])->save();
+ $thumb = (new ThumbCreator('400x400.jpg'))->crop(200, 200, ['x' => 50, 'y' => 50])->save();
$this->assertImageSize($thumb, 200, 200);
$this->assertMime($thumb, 'image/jpeg');
}
@@ -103,11 +74,8 @@ public function testCropXAndY()
*/
public function testCropXAndYImageEquals()
{
- $thumb = (new ThumbCreator('400x400.jpg'))->crop(200, 200, [
- 'x' => 50,
- 'y' => 50,
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'crop_w200_h200_x50_y50.jpg', $thumb);
+ $thumb = (new ThumbCreator('400x400.jpg'))->crop(200, 200, ['x' => 50, 'y' => 50])->save();
+ $this->assertImageFileEquals('crop_w200_h200_x50_y50.jpg', $thumb);
}
/**
@@ -143,10 +111,10 @@ public function testFit()
public function testFitImageEquals()
{
$thumb = (new ThumbCreator('example_pic.jpg'))->fit(200)->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'fit_w200_h200.jpg', $thumb);
+ $this->assertImageFileEquals('fit_w200_h200.jpg', $thumb);
$thumb = (new ThumbCreator('example_pic.jpg'))->fit(200, 400)->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'fit_w200_h400.jpg', $thumb);
+ $this->assertImageFileEquals('fit_w200_h400.jpg', $thumb);
}
/**
@@ -155,9 +123,7 @@ public function testFitImageEquals()
*/
public function testFitPosition()
{
- $thumb = (new ThumbCreator('example_pic.jpg'))->fit(200, 200, [
- 'position' => 'top',
- ])->save();
+ $thumb = (new ThumbCreator('example_pic.jpg'))->fit(200, 200, ['position' => 'top'])->save();
$this->assertImageSize($thumb, 200, 200);
$this->assertMime($thumb, 'image/jpeg');
}
@@ -169,15 +135,11 @@ public function testFitPosition()
*/
public function testFitPositionImageEquals()
{
- $thumb = (new ThumbCreator('example_pic.jpg'))->fit(200, 200, [
- 'position' => 'top-left',
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'fit_w200_h200_position_top_left.jpg', $thumb);
+ $thumb = (new ThumbCreator('example_pic.jpg'))->fit(200, 200, ['position' => 'top-left'])->save();
+ $this->assertImageFileEquals('fit_w200_h200_position_top_left.jpg', $thumb);
- $thumb = (new ThumbCreator('example_pic.jpg'))->fit(200, 200, [
- 'position' => 'bottom-right',
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'fit_w200_h200_position_bottom_right.jpg', $thumb);
+ $thumb = (new ThumbCreator('example_pic.jpg'))->fit(200, 200, ['position' => 'bottom-right'])->save();
+ $this->assertImageFileEquals('fit_w200_h200_position_bottom_right.jpg', $thumb);
}
/**
@@ -187,23 +149,17 @@ public function testFitPositionImageEquals()
public function testFitUpsize()
{
//In this case, the thumbnail will keep the original dimensions
- $thumb = (new ThumbCreator('400x400.jpg'))->fit(450, 450, [
- 'upsize' => true,
- ])->save();
+ $thumb = (new ThumbCreator('400x400.jpg'))->fit(450, 450, ['upsize' => true])->save();
$this->assertImageSize($thumb, 400, 400);
$this->assertMime($thumb, 'image/jpeg');
//In this case, the thumbnail will exceed the original size
- $thumb = (new ThumbCreator('400x400.jpg'))->fit(450, 450, [
- 'upsize' => false,
- ])->save();
+ $thumb = (new ThumbCreator('400x400.jpg'))->fit(450, 450, ['upsize' => false])->save();
$this->assertImageSize($thumb, 450, 450);
$this->assertMime($thumb, 'image/jpeg');
//In this case, the thumbnail will exceed the original size
- $thumb = (new ThumbCreator('400x400.jpg'))->fit(null, 450, [
- 'upsize' => false,
- ])->save();
+ $thumb = (new ThumbCreator('400x400.jpg'))->fit(null, 450, ['upsize' => false])->save();
$this->assertImageSize($thumb, 450, 450);
$this->assertMime($thumb, 'image/jpeg');
}
@@ -216,22 +172,16 @@ public function testFitUpsize()
public function testFitUpsizeImageEquals()
{
//In this case, the thumbnail will keep the original dimensions
- $thumb = (new ThumbCreator('400x400.jpg'))->fit(450, 450, [
- 'upsize' => true,
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'fit_w400_h400.jpg', $thumb);
+ $thumb = (new ThumbCreator('400x400.jpg'))->fit(450, 450, ['upsize' => true])->save();
+ $this->assertImageFileEquals('fit_w400_h400.jpg', $thumb);
//In this case, the thumbnail will exceed the original size
- $thumb = (new ThumbCreator('400x400.jpg'))->fit(450, 450, [
- 'upsize' => false,
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'fit_w450_h450_noUpsize.jpg', $thumb);
+ $thumb = (new ThumbCreator('400x400.jpg'))->fit(450, 450, ['upsize' => false])->save();
+ $this->assertImageFileEquals('fit_w450_h450_noUpsize.jpg', $thumb);
//In this case, the thumbnail will exceed the original size
- $thumb = (new ThumbCreator('400x400.jpg'))->fit(null, 450, [
- 'upsize' => false,
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'fit_w450_h450_noUpsize.jpg', $thumb);
+ $thumb = (new ThumbCreator('400x400.jpg'))->fit(null, 450, ['upsize' => false])->save();
+ $this->assertImageFileEquals('fit_w450_h450_noUpsize.jpg', $thumb);
}
/**
@@ -267,10 +217,10 @@ public function testResize()
public function testResizeImageEquals()
{
$thumb = (new ThumbCreator('400x400.jpg'))->resize(200)->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w200_h200.jpg', $thumb);
+ $this->assertImageFileEquals('resize_w200_h200.jpg', $thumb);
$thumb = (new ThumbCreator('400x400.jpg'))->resize(null, 200)->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w200_h200.jpg', $thumb);
+ $this->assertImageFileEquals('resize_w200_h200.jpg', $thumb);
}
/**
@@ -280,16 +230,12 @@ public function testResizeImageEquals()
public function testResizeAspectRatio()
{
//In this case, the thumbnail will keep the ratio
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(200, 300, [
- 'aspectRatio' => true,
- ])->save();
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(200, 300, ['aspectRatio' => true])->save();
$this->assertImageSize($thumb, 200, 200);
$this->assertMime($thumb, 'image/jpeg');
//In this case, the thumbnail will not maintain the ratio
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(200, 300, [
- 'aspectRatio' => false,
- ])->save();
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(200, 300, ['aspectRatio' => false])->save();
$this->assertImageSize($thumb, 200, 300);
$this->assertMime($thumb, 'image/jpeg');
}
@@ -303,16 +249,12 @@ public function testResizeAspectRatio()
public function testResizeAspectRatioImageEquals()
{
//In this case, the thumbnail will keep the ratio
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(200, 300, [
- 'aspectRatio' => true,
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w200_h200.jpg', $thumb);
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(200, 300, ['aspectRatio' => true])->save();
+ $this->assertImageFileEquals('resize_w200_h200.jpg', $thumb);
//In this case, the thumbnail will not maintain the ratio
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(200, 300, [
- 'aspectRatio' => false,
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w200_h300_noAspectRatio.jpg', $thumb);
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(200, 300, ['aspectRatio' => false])->save();
+ $this->assertImageFileEquals('resize_w200_h300_noAspectRatio.jpg', $thumb);
}
/**
@@ -322,23 +264,17 @@ public function testResizeAspectRatioImageEquals()
public function testResizeUpsize()
{
//In this case, the thumbnail will keep the original dimensions
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(450, 450, [
- 'upsize' => true,
- ])->save();
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(450, 450, ['upsize' => true])->save();
$this->assertImageSize($thumb, 400, 400);
$this->assertMime($thumb, 'image/jpeg');
//In this case, the thumbnail will exceed the original size
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(450, 450, [
- 'upsize' => false,
- ])->save();
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(450, 450, ['upsize' => false])->save();
$this->assertImageSize($thumb, 450, 450);
$this->assertMime($thumb, 'image/jpeg');
//In this case, the thumbnail will exceed the original size
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(null, 450, [
- 'upsize' => false,
- ])->save();
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(null, 450, ['upsize' => false])->save();
$this->assertImageSize($thumb, 450, 450);
$this->assertMime($thumb, 'image/jpeg');
}
@@ -351,22 +287,16 @@ public function testResizeUpsize()
public function testResizeUpsizeImageEquals()
{
//In this case, the thumbnail will keep the original dimensions
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(450, 450, [
- 'upsize' => true,
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w400_h400.jpg', $thumb);
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(450, 450, ['upsize' => true])->save();
+ $this->assertImageFileEquals('resize_w400_h400.jpg', $thumb);
//In this case, the thumbnail will exceed the original size
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(450, 450, [
- 'upsize' => false,
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w450_h450_noUpsize.jpg', $thumb);
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(450, 450, ['upsize' => false])->save();
+ $this->assertImageFileEquals('resize_w450_h450_noUpsize.jpg', $thumb);
//In this case, the thumbnail will exceed the original size
- $thumb = (new ThumbCreator('400x400.jpg'))->resize(null, 450, [
- 'upsize' => false,
- ])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w450_h450_noUpsize.jpg', $thumb);
+ $thumb = (new ThumbCreator('400x400.jpg'))->resize(null, 450, ['upsize' => false])->save();
+ $this->assertImageFileEquals('resize_w450_h450_noUpsize.jpg', $thumb);
}
/**
@@ -413,21 +343,21 @@ public function testResizeAspectRatioAndUpsizeImageEquals()
'aspectRatio' => true,
'upsize' => true,
])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w400_h400.jpg', $thumb);
+ $this->assertImageFileEquals('resize_w400_h400.jpg', $thumb);
//In this case, the thumbnail will not keep the ratio and the original dimensions
$thumb = (new ThumbCreator('400x400.jpg'))->resize(500, 600, [
'aspectRatio' => false,
'upsize' => false,
])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w500_h600_noAspectRatio_noUpsize.jpg', $thumb);
+ $this->assertImageFileEquals('resize_w500_h600_noAspectRatio_noUpsize.jpg', $thumb);
//In this case, the thumbnail will not keep the ratio and the original dimensions
$thumb = (new ThumbCreator('400x400.jpg'))->resize(null, 600, [
'aspectRatio' => false,
'upsize' => false,
])->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w400_h600_noAspectRatio_noUpsize.jpg', $thumb);
+ $this->assertImageFileEquals('resize_w400_h600_noAspectRatio_noUpsize.jpg', $thumb);
}
/**
@@ -461,6 +391,6 @@ public function testSeveralMethods()
public function testSeveralMethodsImageEquals()
{
$thumb = (new ThumbCreator('example_pic.jpg'))->crop(600)->resize(200)->save();
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'crop_and_resize_w600_h200.jpg', $thumb);
+ $this->assertImageFileEquals('crop_and_resize_w600_h200.jpg', $thumb);
}
}
diff --git a/tests/TestCase/Utility/ThumbCreatorSaveTest.php b/tests/TestCase/Utility/ThumbCreatorSaveTest.php
index 2241a93..bdeb811 100644
--- a/tests/TestCase/Utility/ThumbCreatorSaveTest.php
+++ b/tests/TestCase/Utility/ThumbCreatorSaveTest.php
@@ -2,29 +2,19 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
-
namespace Thumber\Test\TestCase\Utility;
use Cake\Core\Configure;
use Thumber\TestSuite\TestCase;
+use Thumber\ThumbTrait;
use Thumber\Utility\ThumbCreator;
/**
@@ -32,17 +22,42 @@
*/
class ThumbCreatorSaveTest extends TestCase
{
+ use ThumbTrait;
+
/**
- * Teardown any static object changes and restore them
- * @return void
+ * Test for `save()` method
+ * @test
*/
- public function tearDown()
+ public function testSave()
{
- parent::tearDown();
-
- //Deletes all thumbnails
- foreach (glob(Configure::read(THUMBER . '.target') . DS . '*') as $file) {
- unlink($file);
+ $extensions = [
+ 'bmp' => 'image/x-ms-bmp',
+ 'gif' => 'image/gif',
+ 'ico' => 'image/x-icon',
+ 'jpeg' => 'image/jpeg',
+ 'jpg' => 'image/jpeg',
+ 'png' => 'image/png',
+ 'psd' => 'image/vnd.adobe.photoshop',
+ 'tif' => 'image/tiff',
+ 'tiff' => 'image/tiff',
+ ];
+
+ foreach ($extensions as $extension => $expectedMimetype) {
+ $this->skipIf($this->getDriver() === 'gd' && $extension === 'bmp');
+
+ $thumb = (new ThumbCreator('400x400.' . $extension))->resize(200)->save();
+ $this->assertThumbPath($thumb);
+ $this->assertMime($thumb, $expectedMimetype);
+
+ //Using `format` option
+ $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['format' => $extension]);
+ $this->assertThumbPath($thumb);
+ $this->assertMime($thumb, $expectedMimetype);
+
+ //Using `target` option
+ $thumb = (new ThumbCreator('400x400.png'))->resize(200)->save(['target' => 'image.' . $extension]);
+ $this->assertEquals($this->getPath('image.' . $extension), $thumb);
+ $this->assertMime($thumb, $expectedMimetype);
}
}
@@ -54,8 +69,7 @@ public function tearDown()
*/
public function testSaveFromInvalidFile()
{
- (new ThumbCreator(APP . 'config' . DS . 'routes.php'))
- ->resize(200)->save(['format' => 'jpg']);
+ (new ThumbCreator(APP . 'config' . DS . 'routes.php'))->resize(200)->save();
}
/**
@@ -74,6 +88,7 @@ public function testSaveReturnsExistingThumb()
$this->assertEquals($time, filemtime($thumb));
//Deletes the thumbnail and wait 1 second
+ //@codingStandardsIgnoreLine
unlink($thumb);
sleep(1);
@@ -89,10 +104,7 @@ public function testSaveReturnsExistingThumb()
public function testSaveWithQuality()
{
$thumb = (new ThumbCreator('400x400.jpg'))->resize(200)->save(['quality' => 10]);
- $this->assertRegExp(
- sprintf('/^%s[a-z0-9]{32}\.jpg/', preg_quote(Configure::read(THUMBER . '.target') . DS, '/')),
- $thumb
- );
+ $this->assertThumbPath($thumb);
$this->assertMime($thumb, 'image/jpeg');
}
@@ -114,7 +126,7 @@ public function testSaveWithQualityInvalidValue()
public function testSaveWithQualityImageEquals()
{
$thumb = (new ThumbCreator('400x400.jpg'))->resize(200)->save(['quality' => 10]);
- $this->assertImageFileEquals(Configure::read(THUMBER . '.comparingDir') . 'resize_w200_h200_quality_10.jpg', $thumb);
+ $this->assertImageFileEquals('resize_w200_h200_quality_10.jpg', $thumb);
}
/**
@@ -124,7 +136,7 @@ public function testSaveWithQualityImageEquals()
public function testSaveWithTarget()
{
$thumb = (new ThumbCreator('400x400.jpg'))->resize(200)->save(['target' => 'thumb.jpg']);
- $this->assertEquals(Configure::read(THUMBER . '.target') . DS . 'thumb.jpg', $thumb);
+ $this->assertEquals($this->getPath('thumb.jpg'), $thumb);
$this->assertMime($thumb, 'image/jpeg');
}
@@ -139,6 +151,21 @@ public function testSaveWithInvalidFormat()
(new ThumbCreator('400x400.png'))->resize(200)->save(['format' => 'txt']);
}
+ /**
+ * Test for `save()` method, using similar format names, as `jpeg` or `tif`
+ * @test
+ */
+ public function testSaveWithSimilarFormat()
+ {
+ $file = (new ThumbCreator('400x400.png'))->resize(200)->save(['format' => 'jpeg']);
+ $this->assertFileExtension('jpg', $file);
+
+ $this->skipIf($this->getDriver() === 'gd');
+
+ $file = (new ThumbCreator('400x400.png'))->resize(200)->save(['format' => 'tif']);
+ $this->assertFileExtension('tiff', $file, PATHINFO_EXTENSION);
+ }
+
/**
* Test for `save()` method, using the `target` option with an invalid file
* format
diff --git a/tests/TestCase/Utility/ThumbCreatorTest.php b/tests/TestCase/Utility/ThumbCreatorTest.php
index 5474e11..8223195 100644
--- a/tests/TestCase/Utility/ThumbCreatorTest.php
+++ b/tests/TestCase/Utility/ThumbCreatorTest.php
@@ -2,46 +2,19 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
-
namespace Thumber\Test\TestCase\Utility;
use Cake\Core\Plugin;
use Thumber\TestSuite\TestCase;
-use Thumber\Utility\ThumbCreator as BaseThumbCreator;
-
-/**
- * Makes public some protected methods/properties from `ThumbCreator`
- */
-class ThumbCreator extends BaseThumbCreator
-{
- public function getExtension()
- {
- return $this->extension;
- }
-
- public function getPath()
- {
- return $this->path;
- }
-}
+use Thumber\Utility\ThumbCreator;
/**
* ThumbCreatorTest class
@@ -94,61 +67,6 @@ public function testConstructNoExistingFileFromPlugin()
new ThumbCreator('TestPlugin.noExistingFile.gif');
}
- /**
- * Test for `$extension` property
- * @ŧest
- */
- public function testExtension()
- {
- $thumber = new ThumbCreator('400x400.bmp');
- $this->assertEquals($thumber->getExtension(), 'bmp');
-
- $thumber = new ThumbCreator('400x400.gif');
- $this->assertEquals($thumber->getExtension(), 'gif');
-
- $thumber = new ThumbCreator('400x400.ico');
- $this->assertEquals($thumber->getExtension(), 'ico');
-
- $thumber = new ThumbCreator('400x400.jpg');
- $this->assertEquals($thumber->getExtension(), 'jpg');
-
- $thumber = new ThumbCreator('400x400.jpeg');
- $this->assertEquals($thumber->getExtension(), 'jpg');
-
- $thumber = new ThumbCreator('400x400.png');
- $this->assertEquals($thumber->getExtension(), 'png');
-
- $thumber = new ThumbCreator('400x400.psd');
- $this->assertEquals($thumber->getExtension(), 'psd');
-
- $thumber = new ThumbCreator('400x400.tif');
- $this->assertEquals($thumber->getExtension(), 'tiff');
-
- $thumber = new ThumbCreator('400x400.tiff');
- $this->assertEquals($thumber->getExtension(), 'tiff');
-
- //Full path
- $thumber = new ThumbCreator(WWW_ROOT . 'img' . DS . '400x400.png');
- $this->assertEquals($thumber->getExtension(), 'png');
-
- //From plugin
- $thumber = new ThumbCreator('TestPlugin.400x400.png');
- $this->assertEquals($thumber->getExtension(), 'png');
-
- //From remote
- $thumber = new ThumbCreator('http://example.com.png');
- $this->assertEquals($thumber->getExtension(), 'png');
-
- $thumber = new ThumbCreator('http://example.com.png?');
- $this->assertEquals($thumber->getExtension(), 'png');
-
- $thumber = new ThumbCreator('http://example.com.png?param');
- $this->assertEquals($thumber->getExtension(), 'png');
-
- $thumber = new ThumbCreator('http://example.com.png?param=value');
- $this->assertEquals($thumber->getExtension(), 'png');
- }
-
/**
* Test for `$path` property
* @ŧest
@@ -158,24 +76,24 @@ public function testPath()
$file = WWW_ROOT . 'img' . DS . '400x400.png';
$thumber = new ThumbCreator('400x400.png');
- $this->assertEquals($thumber->getPath(), $file);
+ $this->assertEquals($this->getProperty($thumber, 'path'), $file);
$thumber = new ThumbCreator($file);
- $this->assertEquals($thumber->getPath(), $file);
+ $this->assertEquals($this->getProperty($thumber, 'path'), $file);
//From plugin
$file = Plugin::path('TestPlugin') . 'webroot' . DS . 'img' . DS . '400x400.png';
$thumber = new ThumbCreator('TestPlugin.400x400.png');
- $this->assertEquals($thumber->getPath(), $file);
+ $this->assertEquals($this->getProperty($thumber, 'path'), $file);
$thumber = new ThumbCreator($file);
- $this->assertEquals($thumber->getPath(), $file);
+ $this->assertEquals($this->getProperty($thumber, 'path'), $file);
//From remote
$file = 'http://example.com.png';
$thumber = new ThumbCreator($file);
- $this->assertEquals($thumber->getPath(), $file);
+ $this->assertEquals($this->getProperty($thumber, 'path'), $file);
}
}
diff --git a/tests/TestCase/View/Helper/ThumbHelperTest.php b/tests/TestCase/View/Helper/ThumbHelperTest.php
index 232986c..105ae2e 100644
--- a/tests/TestCase/View/Helper/ThumbHelperTest.php
+++ b/tests/TestCase/View/Helper/ThumbHelperTest.php
@@ -2,30 +2,19 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
-
namespace Thumber\Test\TestCase\View\Helper;
-use Cake\Core\Configure;
use Cake\View\View;
use Thumber\TestSuite\TestCase;
+use Thumber\ThumbTrait;
use Thumber\View\Helper\ThumbHelper;
/**
@@ -33,6 +22,8 @@
*/
class ThumbHelperTest extends TestCase
{
+ use ThumbTrait;
+
/**
* Setup the test case, backup the static object values so they can be
* restored. Specifically backs up the contents of Configure and paths in
@@ -43,24 +34,7 @@ public function setUp()
{
parent::setUp();
- $this->View = new View();
- $this->Thumb = new ThumbHelper($this->View);
- }
-
- /**
- * Teardown any static object changes and restore them
- * @return void
- */
- public function tearDown()
- {
- parent::tearDown();
-
- unset($this->Thumb, $this->View);
-
- //Deletes all thumbnails
- foreach (glob(Configure::read(THUMBER . '.target') . DS . '*') as $file) {
- unlink($file);
- }
+ $this->Thumb = new ThumbHelper(new View);
}
/**
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
index 920dfa6..e125fcf 100644
--- a/tests/bootstrap.php
+++ b/tests/bootstrap.php
@@ -2,29 +2,21 @@
/**
* This file is part of cakephp-thumber.
*
- * cakephp-thumber is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
*
- * cakephp-thumber is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with cakephp-thumber. If not, see .
- *
- * @author Mirko Pagliai
- * @copyright Copyright (c) 2016, Mirko Pagliai for Nova Atlantis Ltd
- * @license http://www.gnu.org/licenses/agpl.txt AGPL License
- * @link http://git.novatlantis.it Nova Atlantis Ltd
+ * @copyright Copyright (c) Mirko Pagliai
+ * @link https://github.com/mirko-pagliai/cakephp-thumber
+ * @license https://opensource.org/licenses/mit-license.php MIT License
*/
use Cake\Cache\Cache;
use Cake\Core\Configure;
use Cake\Core\Plugin;
use Cake\Routing\DispatcherFactory;
+ini_set('intl.default_locale', 'en_US');
+
require dirname(__DIR__) . '/vendor/autoload.php';
if (!defined('DS')) {
@@ -107,5 +99,3 @@
DispatcherFactory::add('Routing');
DispatcherFactory::add('ControllerFactory');
-
-ini_set('intl.default_locale', 'en_US');
diff --git a/version b/version
index 9084fa2..524cb55 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-1.1.0
+1.1.1