/**
* Copyright 2012-2013 Maciej Jaworski, Mariusz Kapcia, Paweł Kędzia, Mateusz Kubuszok
*
* <p>Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at</p>
*
* <p>http://www.apache.org/licenses/LICENSE-2.0</p>
*
* <p>Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.</p>
*/
package com.autoupdater.client.xml.parsers;
import static org.fest.assertions.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import com.autoupdater.client.models.Package;
import com.autoupdater.client.models.Program;
public class TestPackagesInfoParser extends AbstractTestXMLParser<List<Program>> {
@Test
public void testParsingProgramsInCorrectDocument() throws DocumentException, ParserException {
// given
Document document = new SAXReader()
.read(getInputStreamForString(CorrectXMLExamples.packagesInfo));
// when
List<Program> programs = new ArrayList<Program>(
new PackagesInfoParser().parseDocument(document));
// then
assertThat(programs).as(
"parseDocument() should parse all programs without removing/adding empty").hasSize(
2);
assertThat(programs.get(0).getName()).as(
"parseDocument() should properly parse program's name").isEqualTo("Program 1");
assertThat(programs.get(1).getName()).as(
"parseDocument() should properly parse program's name").isEqualTo("Program 2");
}
@Test
public void testParsingPackagesInCorrectDocument() throws DocumentException, ParserException {
// given
Document document = new SAXReader()
.read(getInputStreamForString(CorrectXMLExamples.packagesInfo));
// when
SortedSet<Program> programs = new PackagesInfoParser().parseDocument(document);
SortedSet<Package> packages1 = ("Program 1".equals(programs.first().getName()) ? programs
.first() : programs.last()).getPackages();
SortedSet<Package> packages2 = ("Program 2".equals(programs.first().getName()) ? programs
.first() : programs.last()).getPackages();
// then
assertThat(packages1).as(
"parseDocument() should parse all packages without removing/adding empty").hasSize(
2);
assertThat(packages1.first().getName()).as(
"parseDocument() should properly parse package's name").isEqualTo("Package 1");
assertThat(packages1.first().getID()).as(
"parseDocument() should properly parse package's ID").isEqualTo("1");
assertThat(packages1.last().getName()).as(
"parseDocument() should properly parse package's name").isEqualTo("Package 2");
assertThat(packages2).as(
"parseDocument() should parse all packages without removing/adding empty").hasSize(
1);
assertThat(packages2.first().getName()).as(
"parseDocument() should properly parse package's name").isEqualTo("Package 3");
assertThat(packages2.first().getID()).as(
"parseDocument() should properly parse package's ID").isEqualTo("3");
}
}