Download"

From Documentation
m (correct highlight (via JWB))
 
(13 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Template:UnderConstruction}}
 
 
{{ZATSEssentialsPageHeader}}
 
{{ZATSEssentialsPageHeader}}
 
  Since 1.1.0
 
  Since 1.1.0
  
  
We usually perform the file downloading through the <javadoc>org.zkoss.zul.Filedownload</javadoc> when some events occurred<ref>for more detail, please refer to [[ZK_Component_Reference/Essential_Components/Filedownload]]</ref>. The following is a typical example about downloading a file:
+
We usually implement file downloading through <javadoc>org.zkoss.zul.Filedownload</javadoc> when some events are triggered <ref>For more details, please refer to [[ZK_Component_Reference/Essential_Components/Filedownload]]</ref>. Following is a simple implementation of downloading a file:
  
 
'''download.zul'''
 
'''download.zul'''
Line 16: Line 15:
  
 
'''DownloadComposer.java'''
 
'''DownloadComposer.java'''
<source lang="java" start="10" high="13">
+
<source lang="java" start="10" highlight="13">
 
public class DownloadComposer extends GenericForwardComposer {
 
public class DownloadComposer extends GenericForwardComposer {
 
@Listen("onClick=#btn")
 
@Listen("onClick=#btn")
Line 25: Line 24:
 
</source>
 
</source>
  
Actually, the downloaded mechanism is a process with two steps. When you invoke <tt>save()</tt>, the <tt>Filedownload</tt> simply notifies ZK client engine of the downloaded URL. Then, the ZK client engine downloads such files according to the received URL.
+
The download mechanism is a process involving two steps. When you invoke <code>save()</code>, the <code>Filedownload</code> simply notifies ZK client engine of the download URL. Then, ZK client engine downloads such file according to the referred URL.
  
 
'''Notes'''
 
'''Notes'''
 
<references/>
 
<references/>
  
== Download files in a ZATS Mimic test case ==
 
  
In order to simulate same behavior as ZK client engine doing, ZATS Mimic introduces the <tt>Resource</tt> interface. It represents a downloadable resource file at server. The typical steps for testing downloading are:
+
= Download Files in a Test Case =
# perform some operations through operation agents
+
 
# check is there a downloadable resource through desktop agent
+
In order to simulate the behavior of the ZK client engine, ZATS Mimic introduces the <code>Resource</code> interface which represents a downloadable resource file saved on the server. General steps for testing a download function are as follows:
 +
 
 +
# perform some operations to trigger the download function, e.g. click a button
 +
# check the presence of a downloadable resource through a desktop agent
 
# fetch and verify the information or content of the resource
 
# fetch and verify the information or content of the resource
  
<source lang="java" start="10" high="14,15,16,17,18,19">
+
<source lang="java" start="10" highlight="14,15,16,17,18,19">
 
@Test
 
@Test
 
public void test() throws Exception {
 
public void test() throws Exception {
DesktopAgent desktop = Zats.newClient().connect("/download.zul");
+
DesktopAgent desktop = Zats.newClient().connect("/essentials/download.zul");
Assert.assertNull(desktop.getDownloadable());
+
Assert. assertNull (desktop. getDownloadable ());
 
desktop.query("#btn").click();
 
desktop.query("#btn").click();
 
Resource resource = desktop.getDownloadable();
 
Resource resource = desktop.getDownloadable();
 
Assert.assertNotNull(resource);
 
Assert.assertNotNull(resource);
Assert.assertEquals("hello.txt", resource.getName());
+
Assert.assertEquals("hello..txt", resource.getName());
 
String content = fetchContent(resource.getInputStream());
 
String content = fetchContent(resource.getInputStream());
 
Assert.assertEquals("Hello world!", content);
 
Assert.assertEquals("Hello world!", content);
 
}
 
}
 
</source>
 
</source>
* '''Line 14-16''': Because ZATS Mimic handles the response from ZK application automatically, we can get the current downloadable resource file from the <tt>DesktopAgent.getDownloadable()</tt>. The method might return <tt>null</tt> when getting the downloadable resource, it indicates that there is no downloadable resource after the previous operation.
+
* '''Line 14''': Click the button to trigger downloading.
* '''Line 17-19''': We can get more information from <tt>Resource</tt>, or fetch the content of resource file in binary through the input stream.
+
* '''Line 15-16''': Since ZATS Mimic handles the response from ZK application automatically, we can retrieve current downloadable resource files from <code>DesktopAgent.getDownloadable()</code>. If the method returns a <code>null</code> when attempting to retrieve downloadable resources, it indicates that there are no downloadable resources after the previous operation.
 +
* '''Line 17-19''': We can get more information from <code>Resource</code>, or fetch the content of resource files in binary through the input stream to verify the result.
  
 +
 +
 +
{{ZATSEssentialsPageHeader}}
 
{{ZATSEssentialsPageFooter}}
 
{{ZATSEssentialsPageFooter}}

Latest revision as of 02:55, 18 January 2022


Since 1.1.0


We usually implement file downloading through Filedownload when some events are triggered [1]. Following is a simple implementation of downloading a file:

download.zul

<zk>
	<div apply="DownloadComposer">
		<button id="btn" label="download" />
	</div>
</zk>

DownloadComposer.java

public class DownloadComposer extends GenericForwardComposer {
	@Listen("onClick=#btn")
	public void download() throws IOException {
		Filedownload.save("/hello.txt", "application/octet-stream");
	}
}

The download mechanism is a process involving two steps. When you invoke save(), the Filedownload simply notifies ZK client engine of the download URL. Then, ZK client engine downloads such file according to the referred URL.

Notes


Download Files in a Test Case

In order to simulate the behavior of the ZK client engine, ZATS Mimic introduces the Resource interface which represents a downloadable resource file saved on the server. General steps for testing a download function are as follows:

  1. perform some operations to trigger the download function, e.g. click a button
  2. check the presence of a downloadable resource through a desktop agent
  3. fetch and verify the information or content of the resource
@Test
public void test() throws Exception {
	DesktopAgent desktop = Zats.newClient().connect("/essentials/download.zul");
	Assert. assertNull (desktop. getDownloadable ());
	desktop.query("#btn").click();
	Resource resource = desktop.getDownloadable();
	Assert.assertNotNull(resource);
	Assert.assertEquals("hello..txt", resource.getName());
	String content = fetchContent(resource.getInputStream());
	Assert.assertEquals("Hello world!", content);
}
  • Line 14: Click the button to trigger downloading.
  • Line 15-16: Since ZATS Mimic handles the response from ZK application automatically, we can retrieve current downloadable resource files from DesktopAgent.getDownloadable(). If the method returns a null when attempting to retrieve downloadable resources, it indicates that there are no downloadable resources after the previous operation.
  • Line 17-19: We can get more information from Resource, or fetch the content of resource files in binary through the input stream to verify the result.





Last Update : 2022/01/18

Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.